Re: SQL-Invoked Procedures for 8.1 - Mailing list pgsql-hackers

From Oliver Jowett
Subject Re: SQL-Invoked Procedures for 8.1
Date
Msg-id 415334CB.1090808@opencloud.com
Whole thread Raw
In response to Re: SQL-Invoked Procedures for 8.1  (Tom Lane <tgl@sss.pgh.pa.us>)
Responses Re: SQL-Invoked Procedures for 8.1  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-hackers
Tom Lane wrote:

> regression=# create rule r1 as on insert to surprise do
> regression-# ( select 'hello' ; select 'how are you' );
> CREATE RULE

> The 'hello' result was in fact computed and sent by the backend, but it
> was discarded in libpq (see the documentation about PQexec: only the
> last resultset returned by a querystring is returned to the caller).
> psql could have printed both results, but it would need to use
> PQsendQuery/PQgetResult instead of PQexec.

Yikes. I thought this couldn't happen under the V3 extended query protocol.

The JDBC driver currently sends Describe/Execute and expects exactly one 
of RowDescription/NoData followed by zero or more DataRows followed by 
one of CommandComplete/EmptyQueryResponse/PortalSuspended. This seems 
wrong if there could be multiple resultsets from a single Execute.

How can clients distinguish multiple resultsets if they're using the 
extended query protocol?

-O


pgsql-hackers by date:

Previous
From: Alvaro Herrera
Date:
Subject: Re: SQL-Invoked Procedures for 8.1
Next
From: Tom Lane
Date:
Subject: Re: SQL-Invoked Procedures for 8.1