Skip site navigation (1) Skip section navigation (2)

Re: prepareThreshold=1 and statement.executeBatch() ??

From: Kris Jurka <books(at)ejurka(dot)com>
To: Joost Kraaijeveld <J(dot)Kraaijeveld(at)Askesis(dot)nl>
Cc: "pgsql-jdbc(at)postgresql(dot)org" <pgsql-jdbc(at)postgresql(dot)org>, pgsql-hackers(at)postgresql(dot)org
Subject: Re: prepareThreshold=1 and statement.executeBatch() ??
Date: 2005-11-13 09:27:08
Message-ID: Pine.BSO.4.61.0511130350580.6118@leary.csoft.net (view raw or flat)
Thread:
Lists: pgsql-hackerspgsql-jdbc

On Sun, 13 Nov 2005, Joost Kraaijeveld wrote:

> I have a connection that is created with "prepareThreshold=1" in the
> connection string. I use a prepared statement that I fill with
> addbatch() and that I execute with executeBatch() (for full source: see
> "application.java" attachment).
>
> LOG:  statement: PREPARE S_2 AS update prototype.customers set title=
> $1 , defaultcurrency=$2, defaulttermsofdelivery=$3 ,
> defaulttermsofpayment=$4 where customernumber=$5
> LOG:  statement: <BIND>
> LOG:  statement: EXECUTE <unnamed>  [PREPARE:  update
> prototype.customers set title=$1 , defaultcurrency=$2, defaultter
> msofdelivery=$3, defaulttermsofpayment=$4 where customernumber=$5]
> LOG:  duration: 773.841 ms
> LOG:  statement: <BIND>
> LOG:  statement: EXECUTE <unnamed>  [PREPARE:  update
> prototype.customers set title=$1 , defaultcurrency=$2, defaultter
> msofdelivery=$3, defaulttermsofpayment=$4 where customernumber=$5]
> LOG:  duration: 377.981 ms
>
> Does this output mean that the prepared statement with the name "S_2" is
> not used in the following 2 EXECUTE statements and that therefor each
> execute statement is planned again?
>

No, this actually looks like a bug in the server side logging.  The JDBC 
driver issues:

FE=> Parse(stmt=S_1,query="INSERT INTO tt VALUES ($1)",oids={23})
FE=> Bind(stmt=S_1,portal=null,$1=<1>)
FE=> Describe(portal=null)
FE=> Execute(portal=null,limit=1)
FE=> Bind(stmt=S_1,portal=null,$1=<2>)
FE=> Describe(portal=null)
FE=> Execute(portal=null,limit=1)
FE=> Sync

I assume the server side logging code is getting confused because it uses 
a named statement, but the unnamed portal.

Kris Jurka


In response to

Responses

pgsql-hackers by date

Next:From: Joost KraaijeveldDate: 2005-11-13 10:03:52
Subject: Re: prepareThreshold=1 and statement.executeBatch() ??
Previous:From: Joost KraaijeveldDate: 2005-11-13 06:48:05
Subject: prepareThreshold=1 and statement.executeBatch() ??

pgsql-jdbc by date

Next:From: Joost KraaijeveldDate: 2005-11-13 10:03:52
Subject: Re: prepareThreshold=1 and statement.executeBatch() ??
Previous:From: Kris JurkaDate: 2005-11-13 08:50:56
Subject: Re: passing array as parameters to PrepareStatement or callable

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group