Re: Q: limit the length of log file entries?

From: Adrian Klaver <adrian(dot)klaver(at)aklaver(dot)com>
To: Albrecht Dreß <albrecht(dot)dress(at)posteo(dot)de>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: pgsql-general(at)lists(dot)postgresql(dot)org
Subject: Re: Q: limit the length of log file entries?
Date: 2025-09-04 18:21:05
Message-ID: 6ec7306b-fa0d-49d1-9944-11cc934b7180@aklaver.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-general

On 9/4/25 08:54, Adrian Klaver wrote:
> On 9/4/25 08:48, Albrecht Dreß wrote:
>> Am 03.09.25 21:07 schrieb(en) Tom Lane:
>>> There isn't any provision for limiting the length of source queries
>>> quoted in the log.
>>
>> I see, thanks for the clarification.  IMHO, it would be nice to have
>> such an option, though…
>>
>>> Had your user sent the bytea value as a query
>>> parameter, then log_parameter_max_length[_on_error] would have
>>> applied, but this looks like the value was just inline in the query.
>>
>> I can confirm that the limitation is applied when I call
>> PQexecParams() from a little c test application with the data included
>> in the paramValues array.  The overlong log lines result from queries
>> in a Python script using the psycopg2 module – no idea how this
>> component formats the query.
>
> The best explanation is found from the psycopg(3) docs:
>
> https://www.psycopg.org/psycopg3/docs/basic/from_pg2.html
>
> Differences from psycopg2
>
> "Psycopg 3 sends the query and the parameters to the server separately,
> instead of merging them on the client side. Server-side binding works
> for normal SELECT and data manipulation statements (INSERT, UPDATE,
> DELETE), but it doesn’t work with many other statements. For instance,
> it doesn’t work with SET or with NOTIFY:"

As example:

import psycopg2
import psycopg

conpsyc2 = psycopg2.connect("dbname=test user=postgres")
conpsyc3 = psycopg.connect("dbname=test user=postgres")

cur2 = conpsyc2.cursor()
cur3 = conpsyc3.cursor()

cur2.execute("select * from csv_test where id = %s", [1])
cur3.execute("select * from csv_test where id = %s", [1])

yields:

--cur2
2025-09-04 11:17:30.246 PDT [29695] postgres(at)test LOG: statement: BEGIN
2025-09-04 11:17:30.246 PDT [29695] postgres(at)test LOG: statement:
select * from csv_test where id = 1

--cur3
2025-09-04 11:18:07.158 PDT [29703] postgres(at)test LOG: statement: BEGIN
2025-09-04 11:18:07.159 PDT [29703] postgres(at)test LOG: execute
<unnamed>: select * from csv_test where id = $1
2025-09-04 11:18:07.159 PDT [29703] postgres(at)test DETAIL: Parameters:
$1 = '1'

>
>
>>
>> Thanks again,
>> Albrecht.
>
>

--
Adrian Klaver
adrian(dot)klaver(at)aklaver(dot)com

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Albrecht Dreß 2025-09-04 19:43:40 Re: Q: limit the length of log file entries?
Previous Message Adrian Klaver 2025-09-04 17:49:18 Re: Debugging query performance in postgres