Thread: Migrating from 10 -> 16, PreparedStatements disabled in JDBC and pgbouncer, I am getting : bind /C_5

Hi All

We have disabled prepared statements in the JDBC settings (prepareThreshold=0) and in pgbouncer (max_prepared_statements=0).

I have noticed in the pgsql 16.4 logs some lines with this pattern :

10.9.0.110(45201) [4079203] 67122b3b.3e3e63 2024-10-18 12:32:44.260 EEST SMA  amantzio@dynacom line:35 LOG:  duration: 0.166 ms  parse <unnamed>: SELECT work_status FROM company_stuff WHERE ldap_cn = $
1
10.9.0.110(45201) [4079203] 67122b3b.3e3e63 2024-10-18 12:32:44.261 EEST SMA  amantzio@dynacom line:36 LOG:  duration: 0.553 ms  bind <unnamed>/C_5: SELECT work_status FROM company_stuff WHERE ldap_cn
= $1
10.9.0.110(45201) [4079203] 67122b3b.3e3e63 2024-10-18 12:32:44.261 EEST SMA  amantzio@dynacom line:38 LOG:  duration: 0.036 ms  execute <unnamed>/C_5: SELECT work_status FROM company_stuff WHERE ldap_
cn = $1

So the parse is done on an unnamed prepared statement, however the bind and the execute show this :  /C_5  after <unnamed>. We haven't got any log entries with this /C_* pattern on the "parse" phase, only on "bind" and "execute". I am curious what those represent.

Thank you

Achilleas Mantzios - cloud <a.mantzios@cloud.gatewaynet.com> writes:
> I have noticed in the pgsql 16.4 logs some lines with this pattern :

> 10.9.0.110(45201) [4079203] 67122b3b.3e3e63 2024-10-18 12:32:44.260 EEST
> SMA  amantzio@dynacom line:35 LOG:  duration: 0.166 ms  parse <unnamed>:
> SELECT work_status FROM company_stuff WHERE ldap_cn = $
> 1
> 10.9.0.110(45201) [4079203] 67122b3b.3e3e63 2024-10-18 12:32:44.261 EEST
> SMA  amantzio@dynacom line:36 LOG:  duration: 0.553 ms  bind
> <unnamed>/C_5: SELECT work_status FROM company_stuff WHERE ldap_cn
> = $1
> 10.9.0.110(45201) [4079203] 67122b3b.3e3e63 2024-10-18 12:32:44.261 EEST
> SMA  amantzio@dynacom line:38 LOG:  duration: 0.036 ms  execute
> <unnamed>/C_5: SELECT work_status FROM company_stuff WHERE ldap_
> cn = $1

> So the parse is done on an unnamed prepared statement, however the bind
> and the execute show this : /C_5 after<unnamed>. We haven't got any log
> entries with this /C_* pattern on the "parse" phase, only on "bind" and
> "execute". I am curious what those represent.

Here C_5 would be a portal name, identifying the bound-and-ready-
to-execute query.  See

https://www.postgresql.org/docs/current/protocol-flow.html#PROTOCOL-FLOW-EXT-QUERY

            regards, tom lane



Thanks Tom, sorry for the business-style reply (top post).
The _C* log entries appeared only when we had specified in JDBC : DefaultRowFetchSize . Once we disabled this, it
revertedback to "normal" binds and executes in the log. 
e.g. retrying the same app now we get : (omitting param values)

10.9.0.110(52027) [4107694] 6712788f.3eadae 2024-10-18 18:03:17.355 EEST SMA  amantzio@dynacom line:43 LOG:  duration:
0.212ms  parse <unnamed>: SELECT work_status FROM company_stuff WHERE ldap_cn = $1 
10.9.0.110(52027) [4107694] 6712788f.3eadae 2024-10-18 18:03:17.356 EEST SMA  amantzio@dynacom line:44 LOG:  duration:
0.638ms  bind <unnamed>: SELECT work_status FROM company_stuff WHERE ldap_cn = $1 
10.9.0.110(52027) [4107694] 6712788f.3eadae 2024-10-18 18:03:17.356 EEST SMA  amantzio@dynacom line:46 LOG:  duration:
0.046ms  execute <unnamed>: SELECT work_status FROM company_stuff WHERE ldap_cn = $1 

----- Original Message -----
From: "Tom Lane" <tgl@sss.pgh.pa.us>
To: "Achilleas Mantzios" <a.mantzios@cloud.gatewaynet.com>
Cc: pgsql-admin@lists.postgresql.org, "ITDEV" <itdev@gatewaynet.com>
Sent: Friday, 18 October, 2024 17:36:34
Subject: Re: Migrating from 10 -> 16, PreparedStatements disabled in JDBC and pgbouncer, I am getting : bind
<unnamed>/C_5

Achilleas Mantzios - cloud <a.mantzios@cloud.gatewaynet.com> writes:
> I have noticed in the pgsql 16.4 logs some lines with this pattern :

> 10.9.0.110(45201) [4079203] 67122b3b.3e3e63 2024-10-18 12:32:44.260 EEST
> SMA  amantzio@dynacom line:35 LOG:  duration: 0.166 ms  parse <unnamed>:
> SELECT work_status FROM company_stuff WHERE ldap_cn = $
> 1
> 10.9.0.110(45201) [4079203] 67122b3b.3e3e63 2024-10-18 12:32:44.261 EEST
> SMA  amantzio@dynacom line:36 LOG:  duration: 0.553 ms  bind
> <unnamed>/C_5: SELECT work_status FROM company_stuff WHERE ldap_cn
> = $1
> 10.9.0.110(45201) [4079203] 67122b3b.3e3e63 2024-10-18 12:32:44.261 EEST
> SMA  amantzio@dynacom line:38 LOG:  duration: 0.036 ms  execute
> <unnamed>/C_5: SELECT work_status FROM company_stuff WHERE ldap_
> cn = $1

> So the parse is done on an unnamed prepared statement, however the bind
> and the execute show this : /C_5 after<unnamed>. We haven't got any log
> entries with this /C_* pattern on the "parse" phase, only on "bind" and
> "execute". I am curious what those represent.

Here C_5 would be a portal name, identifying the bound-and-ready-
to-execute query.  See

https://www.postgresql.org/docs/current/protocol-flow.html#PROTOCOL-FLOW-EXT-QUERY

            regards, tom lane