Thread: Re: [INTERFACES] JDBC API to send SimpleQuery ('Q')?
I have the following Java code running in tomcat 7 using 'postgresql-9.3-1101-jdbc41.jar' driver.
String str = "insert into tab1(a,b) values ('name', 'address');"
Statement stmt = conn.createStatement();
stmt.execute(str);
Considering that this is not a PreparedStatement, I would have expected the driver to issue a Simple Query ('Q') instead of an ExtendedQuery ('P'). However, when I print the incoming connection at my middleware (pgpool), I see the query being received is an ExtendedQuery ('P'). When I execute the same query in psql, it triggers a Simple Query ('Q') as expected.
What am I missing here? Are there any other settings that I need to tweak?
Thanks
On Fri, Apr 25, 2014 at 11:30 AM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
Karthik Segpi <karthik.segpi@gmail.com> writes:> Considering that this is *not* a PreparedStatement, I would have expected
> I have the following Java code running in tomcat 7 using
> 'postgresql-9.3-1101-jdbc41.jar' driver.
> String str = "insert into tab1(a,b) values ('name', 'address');"
> Statement stmt = conn.createStatement();
> stmt.execute(str);> the driver to issue a Simple Query ('Q') instead of an ExtendedQuery ('P').You'd be better off asking about the behavior of the JDBC driver on
> However, when I print the incoming connection at my middleware (pgpool), I
> see the query being received is an ExtendedQuery ('P'). When I execute the
> same query in psql, it triggers a Simple Query ('Q') as expected.
pgsql-jdbc, but offhand I see nothing unreasonable about it if they
choose to use extended query protocol exclusively. Less code for
them to maintain, and it's not really less efficient as long as they
ensure messages get grouped into network packets appropriately.
(psql goes the other direction, and doesn't use extended protocol
at all, AFAIR.)I think you could still force use of simple query mode by telling the
> What am I missing here? Are there any other settings that I need to tweak?
driver to use protocol version 2, but that has lots of downsides.
regards, tom lane
Thanks Tom. I just posted the question to 'pgsql-jdbc' and will follow up there.
On Fri, Apr 25, 2014 at 11:54 AM, Karthik Segpi <karthik.segpi@gmail.com> wrote:
I have the following Java code running in tomcat 7 using 'postgresql-9.3-1101-jdbc41.jar' driver.String str = "insert into tab1(a,b) values ('name', 'address');"Statement stmt = conn.createStatement();stmt.execute(str);Considering that this is not a PreparedStatement, I would have expected the driver to issue a Simple Query ('Q') instead of an ExtendedQuery ('P'). However, when I print the incoming connection at my middleware (pgpool), I see the query being received is an ExtendedQuery ('P'). When I execute the same query in psql, it triggers a Simple Query ('Q') as expected.What am I missing here? Are there any other settings that I need to tweak?ThanksOn Fri, Apr 25, 2014 at 11:30 AM, Tom Lane <tgl@sss.pgh.pa.us> wrote:Karthik Segpi <karthik.segpi@gmail.com> writes:> Considering that this is *not* a PreparedStatement, I would have expected
> I have the following Java code running in tomcat 7 using
> 'postgresql-9.3-1101-jdbc41.jar' driver.
> String str = "insert into tab1(a,b) values ('name', 'address');"
> Statement stmt = conn.createStatement();
> stmt.execute(str);> the driver to issue a Simple Query ('Q') instead of an ExtendedQuery ('P').You'd be better off asking about the behavior of the JDBC driver on
> However, when I print the incoming connection at my middleware (pgpool), I
> see the query being received is an ExtendedQuery ('P'). When I execute the
> same query in psql, it triggers a Simple Query ('Q') as expected.
pgsql-jdbc, but offhand I see nothing unreasonable about it if they
choose to use extended query protocol exclusively. Less code for
them to maintain, and it's not really less efficient as long as they
ensure messages get grouped into network packets appropriately.
(psql goes the other direction, and doesn't use extended protocol
at all, AFAIR.)I think you could still force use of simple query mode by telling the
> What am I missing here? Are there any other settings that I need to tweak?
driver to use protocol version 2, but that has lots of downsides.
regards, tom lane