How does postgresql jdbc driver implement prepared batch?

From: Jinhua Luo <luajit(dot)io(at)gmail(dot)com>
To: PostgreSQL General <pgsql-general(at)postgresql(dot)org>
Subject: How does postgresql jdbc driver implement prepared batch?
Date: 2016-04-20 11:08:44
Message-ID: CAAc9rOwTZ3d6=YUV-vJPndebVyUGAz_Pk8WV1fYkmpVykttLug@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general pgsql-jdbc

Hi,

As document said, in the extended query protocol, "The query string
contained in a Parse message cannot include more than one SQL
statement".

So to support batch in prepared statement, I think the only way is to
determine the batch size in advance and then create the appropriate
prepared statement, e.g.

Given the batch size is fixed to 3, then prepare below statement:
-- create table foobar(a int, b text);
insert into foobar values($1, $2), ($3, $4), ($5, $6);

Then this prepared statement must be bound with 3 set of arguments.

The limitation is obvious: the batch size is fixed, so if you need to
do batch with size of 4, the previous prepared statement is useless
and you need to recreate it.

On the other hand, in JDBC, it seems that you just need to prepare
below statement:

insert into foobar values($1, $2);

And then calls addBatch() repeatedly until you think the batch size is enough.

What's the final statement does postgresql jdbc driver convert to? I'm
so curious.

I'm not familiar with jdbc, and although I check the driver source
codes, but I still cannot understand it.

Anybody knows the answer? Thanks.

Regards,
Jinhua Luo

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Alex Ignatov 2016-04-20 11:20:59 Re: Initdb --data-checksums by default
Previous Message Andreas Joseph Krogh 2016-04-20 09:27:56 Re: Initdb --data-checksums by default

Browse pgsql-jdbc by date

  From Date Subject
Next Message Bear Giles 2016-04-20 15:34:37 Kerberos problem with pg_ident that happens with JDBC but not with PSQL.
Previous Message Dave Cramer 2016-04-17 22:45:56 Re: Support waffle>1.7.4