Re: ODBC - Retrieving info messages - RAISE NOTICE - Mailing list pgsql-odbc

From Clemens Ladisch
Subject Re: ODBC - Retrieving info messages - RAISE NOTICE
Date
Msg-id 7787c333-02bd-677f-d72f-fe40dd89a177@ladisch.de
Whole thread Raw
In response to ODBC - Retrieving info messages - RAISE NOTICE  ("Wolfgang Apolinarski" <wolfgang.apolinarski@googlemail.com>)
Responses Re: ODBC - Retrieving info messages - RAISE NOTICE
List pgsql-odbc
Wolfgang Apolinarski wrote:
> only the last message ("3") is retrieved, when a statement like
> DO $$
> RAISE NOTICE '1';
> RAISE NOTICE '2';
> RAISE NOTICE '3';
> END$$;
> is executed.

When receiving a notice from libpq, the driver calls QR_set_notice(),
which replaces any previous notice.  To get all notices separated with
a semicolon, try using QR_add_notice() instead (see the patch below).

> Maybe this is a general constraint when using ODBC

In theory, the ODBC API (SQLGetDiagRec) would allow any number of
messages.


Regards,
Clemens


--- psqlodbc.orig/connection.c
+++ psqlodbc/connection.c
@@ -894,7 +894,7 @@ handle_pgres_error(ConnectionClass *self
         {
             if (QR_command_successful(res))
                 QR_set_rstatus(res, PORES_NONFATAL_ERROR); /* notice or warning */
-            QR_set_notice(res, errmsg);  /* will dup this string */
+            QR_add_notice(res, errmsg);  /* will dup this string */
         }
         goto cleanup;
     }


pgsql-odbc by date:

Previous
From: Mario De Frutos
Date:
Subject: Patch for an encoding bug in the derive_locale_encoding function
Next
From: "Tobias Wendorff"
Date:
Subject: NUMERIC type makes trouble in MS Access