Hi Tom,




On Wed, 8 Nov 2023 at 06:02, Dave Cramer <davecra...@gmail.com> wrote:

>
> Dave Cramer
>
>
> On Tue, 7 Nov 2023 at 10:26, Tom Lane <t...@sss.pgh.pa.us> wrote:
>
>> Dave Cramer <davecra...@gmail.com> writes:
>> > If we use a Portal it is possible to open the portal and do a describe
>> and
>> > then Fetch N records.
>>
>> > Using a Cursor we open the cursor. Is there a corresponding describe
>> and a
>> > way to fetch N records without getting the fields each time. Currently
>> we
>> > have to send the SQL  "fetch <direction> N" and we get the fields and
>> the
>> > rows. This seems overly verbose.
>>
>> Portals and cursors are pretty much the same thing, so why not use
>> the API that suits you better?
>>
>
> So in this case this is a refcursor. Based on above then I should be able
> to do a describe on the refcursor and fetch using the extended query
> protocol
>

Is it possible to describe a CURSOR

Testing out the above hypothesis

2024-07-25 15:55:39 FINEST org.postgresql.core.v3.QueryExecutorImpl
sendSimpleQuery  FE=> SimpleQuery(query="declare C_3 CURSOR WITHOUT HOLD
FOR SELECT * FROM testsps WHERE id = 2")
2024-07-25 15:55:39 FINEST org.postgresql.core.v3.QueryExecutorImpl
sendDescribePortal  FE=> Describe(portal=C_3)
2024-07-25 15:55:39 FINEST org.postgresql.core.v3.QueryExecutorImpl
sendExecute  FE=> Execute(portal=C_3,limit=10)
2024-07-25 15:55:39 FINEST org.postgresql.core.v3.QueryExecutorImpl
sendSync  FE=> Sync

gives me the following results

2024-07-25 15:55:39 FINEST org.postgresql.core.v3.QueryExecutorImpl
receiveErrorResponse  <=BE ErrorMessage(ERROR: portal "C_3" does not exist
  Location: File: postgres.c, Routine: exec_describe_portal_message, Line:
2708
  Server SQLState: 34000)

Note Describe portal is really just a DESCRIBE message, the log messages
are misleading

Dave

>

Reply via email to