Reputation: 1592
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
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
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