Re: PGStatement#setPrepareThreshold - Mailing list pgsql-jdbc

From Oliver Jowett
Subject Re: PGStatement#setPrepareThreshold
Date
Msg-id 44D19215.1070002@opencloud.com
Whole thread Raw
In response to PGStatement#setPrepareThreshold  (Csaba Nagy <nagy@ecircle-ag.com>)
Responses Re: PGStatement#setPrepareThreshold  (Csaba Nagy <nagy@ecircle-ag.com>)
List pgsql-jdbc
Csaba Nagy wrote:
> Hi all,
>
> Question: will PGStatement.setPrepareThreshold(1) cause server side
> prepare to be used already on the first execution, or only after the
> second one ?

It should cause it to be used on the first execution (at least that was
the intent)

The logic looks like:
- On statement creation set count=0
- On each execution:
   - If this statement is a PreparedStatement, increment count
   - If threshold == 0 or count < threshold, make this execution "oneshot"
   - Execute query

"oneshot" queries use the unnamed statement (with one exception: queries
that will be backed by a portal use a named statement)

> I couldn't figure out this from the log files... postgres logs the
> queries as <unnamed>, but that doesn't tell me too much.

If you're seeing <unnamed> then those queries aren't using server-side
prepare (the unnamed statement is also special as it's the trigger for
the planner behaviour that you are trying to avoid..) .. so it seems
that you are not managing to trigger server-side prepare for some
reason. Maybe you are using a plain Statement?

-O

pgsql-jdbc by date:

Previous
From: Csaba Nagy
Date:
Subject: PGStatement#setPrepareThreshold
Next
From: Csaba Nagy
Date:
Subject: Re: PGStatement#setPrepareThreshold