Обсуждение: A prepared statement ERROR due to EMPTY_QUERY is defined as a static Instance.

Поиск
Список
Период
Сортировка

A prepared statement ERROR due to EMPTY_QUERY is defined as a static Instance.

От
Naoya Anzai
Дата:
Hi All,

I have found an odd movement when using multiple connections with prepareStatement("").

The following ERROR message appeared.

org.postgresql.util.PSQLException: ERROR: prepared statement "S_1" does not exist

In org/postgresql/core/v3/QueryExecutorImpl.java,
EMPTY_QUERY instance is defined as a static instance.

---
private final static SimpleQuery EMPTY_QUERY = new SimpleQuery(new String[] { "" }, null);
---

For that reason,
After CONNECTION-A has prepared EMPTY_QUERY already,
If CONNECTION-B tries to execute EMPTY_QUERY for the first time,
then CONNECTION-B sends a bind message to PostgreSQL without prepare.

I attached a sample source and a patch.

Please confirm it.

Best Regards,

Naoya

---
Naoya Anzai
Engineering Department
NEC Soft, Ltd.
E-Mail: anzai-naoya@mxu.nes.nec.co.jp
---



Вложения

Re: A prepared statement ERROR due to EMPTY_QUERY is defined as a static Instance.

От
Dave Cramer
Дата:
Naoya,

Thanks for the patch! Curious how would you ever come across this ?

Dave Cramer

dave.cramer(at)credativ(dot)ca
http://www.credativ.ca


On Thu, Mar 6, 2014 at 11:18 PM, Naoya Anzai <anzai-naoya@mxu.nes.nec.co.jp> wrote:
Hi All,

I have found an odd movement when using multiple connections with prepareStatement("").

The following ERROR message appeared.

org.postgresql.util.PSQLException: ERROR: prepared statement "S_1" does not exist

In org/postgresql/core/v3/QueryExecutorImpl.java,
EMPTY_QUERY instance is defined as a static instance.

---
private final static SimpleQuery EMPTY_QUERY = new SimpleQuery(new String[] { "" }, null);
---

For that reason,
After CONNECTION-A has prepared EMPTY_QUERY already,
If CONNECTION-B tries to execute EMPTY_QUERY for the first time,
then CONNECTION-B sends a bind message to PostgreSQL without prepare.

I attached a sample source and a patch.

Please confirm it.

Best Regards,

Naoya

---
Naoya Anzai
Engineering Department
NEC Soft, Ltd.
E-Mail: anzai-naoya@mxu.nes.nec.co.jp
---




--
Sent via pgsql-jdbc mailing list (pgsql-jdbc@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-jdbc


Re: A prepared statement ERROR due to EMPTY_QUERY is defined as a static Instance.

От
Naoya Anzai
Дата:
Hi Dave,

Thanks for your response.

> Thanks for the patch! Curious how would you ever come across this ?

This incident was reported by one of our customers.
So I don't know why their application executes EMPTY_QUERY frequently...

Regards,

Naoya

---
Naoya Anzai
Engineering Department
NEC Soft, Ltd.
E-Mail: anzai-naoya@mxu.nes.nec.co.jp
---


Re: A prepared statement ERROR due to EMPTY_QUERY is defined as a static Instance.

От
David Johnston
Дата:
Naoya Anzai wrote
> Hi Dave,
>
> Thanks for your response.
>
>> Thanks for the patch! Curious how would you ever come across this ?
>
> This incident was reported by one of our customers.
> So I don't know why their application executes EMPTY_QUERY frequently...
>
> Regards,

The most obvious reason would be as a keep-alive query...I have no idea
whether that is a wise decision compared to "SELECT 1;" or something that
actually causes the server to perform work (i.e., what does the server do
when it see the empty-string as input?).

David J.




--
View this message in context:
http://postgresql.1045698.n5.nabble.com/A-prepared-statement-ERROR-due-to-EMPTY-QUERY-is-defined-as-a-static-Instance-tp5795067p5795476.html
Sent from the PostgreSQL - jdbc mailing list archive at Nabble.com.


Re: Re: A prepared statement ERROR due to EMPTY_QUERY is defined as a static Instance.

От
Dave Cramer
Дата:
I have never seen anyone use an empty query before. I doubt it saves any bandwidth as I believe there would be a query response

Dave Cramer

dave.cramer(at)credativ(dot)ca
http://www.credativ.ca


On Mon, Mar 10, 2014 at 9:22 PM, David Johnston <polobo@yahoo.com> wrote:
Naoya Anzai wrote
> Hi Dave,
>
> Thanks for your response.
>
>> Thanks for the patch! Curious how would you ever come across this ?
>
> This incident was reported by one of our customers.
> So I don't know why their application executes EMPTY_QUERY frequently...
>
> Regards,

The most obvious reason would be as a keep-alive query...I have no idea
whether that is a wise decision compared to "SELECT 1;" or something that
actually causes the server to perform work (i.e., what does the server do
when it see the empty-string as input?).

David J.




--
View this message in context: http://postgresql.1045698.n5.nabble.com/A-prepared-statement-ERROR-due-to-EMPTY-QUERY-is-defined-as-a-static-Instance-tp5795067p5795476.html
Sent from the PostgreSQL - jdbc mailing list archive at Nabble.com.


--
Sent via pgsql-jdbc mailing list (pgsql-jdbc@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-jdbc

Re: Re: A prepared statement ERROR due to EMPTY_QUERY is defined as a static Instance.

От
Naoya Anzai
Дата:
Hi,

Empty Query has a query response('I') without any data.
http://www.postgresql.org/docs/current/static/protocol-message-formats.html
(see EmptyQueryResponse)

In addition, PostgreSQL curtails the execution process.
(see Postgres.c:exec_execute_message)

Regards,

Naoya

> I have never seen anyone use an empty query before. I doubt it saves any bandwidth as I believe there would be a
queryresponse 
>
> Dave Cramer
>
> dave.cramer(at)credativ(dot)ca
> http://www.credativ.ca
>
>
>
> On Mon, Mar 10, 2014 at 9:22 PM, David Johnston <polobo@yahoo.com> wrote:
>
>
>     Naoya Anzai wrote
>
>     > Hi Dave,
>     >
>     > Thanks for your response.
>     >
>     >> Thanks for the patch! Curious how would you ever come across this ?
>     >
>     > This incident was reported by one of our customers.
>     > So I don't know why their application executes EMPTY_QUERY frequently...
>     >
>     > Regards,
>
>
>     The most obvious reason would be as a keep-alive query...I have no idea
>     whether that is a wise decision compared to "SELECT 1;" or something that
>     actually causes the server to perform work (i.e., what does the server do
>     when it see the empty-string as input?).
>
>     David J.
>
>
>
>
>     --
>     View this message in context:
http://postgresql.1045698.n5.nabble.com/A-prepared-statement-ERROR-due-to-EMPTY-QUERY-is-defined-as-a-static-Instance-tp5795067p5795476.html
>     Sent from the PostgreSQL - jdbc mailing list archive at Nabble.com.
>
>
>
>     --
>     Sent via pgsql-jdbc mailing list (pgsql-jdbc@postgresql.org)
>     To make changes to your subscription:
>     http://www.postgresql.org/mailpref/pgsql-jdbc
>
>
>
>

---
Naoya Anzai
Engineering Department
NEC Soft, Ltd.
E-Mail: anzai-naoya@mxu.nes.nec.co.jp
---