maksadbek
maksadbek

Reputation: 1592

How to get Postgresql procedure warning messages?

While running a stored procedure, the procedure can raise warning messages.

Is there any way to get these messages using Postgresql driver(https://github.com/lib/pq) in Golang ?

Upvotes: 4

Views: 1812

Answers (2)

LeKovr
LeKovr

Reputation: 31

For lib/pq driver, the answer is "still no". See open issue and sources for details.

Meanwhile, another driver, https://github.com/jackc/pgx has support for messages in current (v4) version, see https://godoc.org/github.com/jackc/pgconn#Notice and earlier (see https://github.com/jackc/pgx/blob/v3/conn.go#L54)

Update: According to PR #932 which has been merged at Jan-2020, lib/pq supports NoticeHandler now. See example.

Upvotes: 3

Dmitri Goldring
Dmitri Goldring

Reputation: 4363

The answer appears to be no.

In my tests the Postgres server did not appear to send the warning with the results. Even if it did, returning an error along with the sql.Result would be confusing at best and would require lib/pq modifications. Raising an error in the function did return an error, but (obviously) no result.

If this is a critical requirement (and your function can support it) you might consider using a notification channel. Bear in mind that this would tie your code to Postgres.

--

Here is the function I used:

CREATE OR REPLACE function fugo() RETURNS bool as $$ BEGIN RAISE WARNING 'My function notice.' USING errcode = '01000'; return TRUE; END;$$ language 'plpgsql';

Upvotes: 2

Related Questions