PREPARE vs query with MULTIPLE statements

Lists: pgsql-hackers
From: Andrei Kovalevski <andyk(at)commandprompt(dot)com>
To: pgsql-hackers(at)postgresql(dot)org
Subject: PREPARE vs query with MULTIPLE statements
Date: 2007-11-21 05:51:53
Message-ID: 4743C779.6080904@commandprompt.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

Hello.

I have found an interesting FRONTEND/BACKEND protocol behaviour. Let's
consider following query:
"SELECT 1; SELECT 2; SELECT3; SELECT4;"

1) If I send it as a simple query - I'm getting:
- correct results for SELECT 1; SELECT 2; SELECT3; SELECT4;
- and then one ReadyForQuery response
from backend.
[send_simple.log & recv_simple.log]

2) If I send it as 'PREPARE "SQL_CUR1" AS SELECT 1; SELECT 2; SELECT3;
SELECT4;' and then 'EXECUTE "SQL_CUR1" - I'm getting:
- results for SELECT 1; SELECT2; SELECT 3;
- ReadyForQuery response
- results for SELECT 4;
- one more ReadyForQuery response
from backend
[send_prepared.log & recv_prepared.log]

Is this behavour is correct and expected?

P.s. Tested on Windows with PostgreSQL 8.0, 8.1 and 8.2 with the same
results.

Thank You,
Andrei.

Attachment Content-Type Size
recv_prepare.log text/plain 753 bytes
recv_simple.log text/plain 734 bytes
send_prepare.log text/plain 221 bytes
send_simple.log text/plain 178 bytes

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Andrei Kovalevski <andyk(at)commandprompt(dot)com>
Cc: pgsql-hackers(at)postgresql(dot)org
Subject: Re: PREPARE vs query with MULTIPLE statements
Date: 2007-11-21 05:57:35
Message-ID: 27155.1195624655@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

Andrei Kovalevski <andyk(at)commandprompt(dot)com> writes:
> 2) If I send it as 'PREPARE "SQL_CUR1" AS SELECT 1; SELECT 2; SELECT3;
> SELECT4;' and then 'EXECUTE "SQL_CUR1" - I'm getting:
> - results for SELECT 1; SELECT2; SELECT 3;
> - ReadyForQuery response
> - results for SELECT 4;
> - one more ReadyForQuery response
> from backend

> Is this behavour is correct and expected?

You seem to have some odd ideas about what the semicolons mean.
The prepare command there is PREPARE "SQL_CUR1" AS SELECT 1
... no more and no less.

regards, tom lane


From: Andrei Kovalevski <andyk(at)commandprompt(dot)com>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: pgsql-hackers(at)postgresql(dot)org
Subject: Re: PREPARE vs query with MULTIPLE statements
Date: 2007-11-21 06:10:46
Message-ID: 4743CBE6.5070705@commandprompt.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

Yes, Thank you!

Tom Lane wrote:
> Andrei Kovalevski <andyk(at)commandprompt(dot)com> writes:
>
>> 2) If I send it as 'PREPARE "SQL_CUR1" AS SELECT 1; SELECT 2; SELECT3;
>> SELECT4;' and then 'EXECUTE "SQL_CUR1" - I'm getting:
>> - results for SELECT 1; SELECT2; SELECT 3;
>> - ReadyForQuery response
>> - results for SELECT 4;
>> - one more ReadyForQuery response
>> from backend
>>
>
>
>> Is this behavour is correct and expected?
>>
>
> You seem to have some odd ideas about what the semicolons mean.
> The prepare command there is PREPARE "SQL_CUR1" AS SELECT 1
> ... no more and no less.
>
> regards, tom lane
>
> ---------------------------(end of broadcast)---------------------------
> TIP 3: Have you checked our extensive FAQ?
>
> http://www.postgresql.org/docs/faq
>