Re: Truncate logs by max_log_size

Jim Jones <jim.jones@uni-muenster.de>

From: Jim Jones <jim.jones@uni-muenster.de>
To: Fujii Masao <masao.fujii@gmail.com>, Maxym Kharchenko <maxymkharchenko@gmail.com>
Cc: Kirill Reshke <reshkekirill@gmail.com>, Álvaro Herrera <alvherre@kurilemu.de>, Fujii Masao <masao.fujii@oss.nttdata.com>, Kirill Gavrilov <diphantxm@gmail.com>, "Andrey M. Borodin" <x4mmm@yandex-team.ru>, Euler Taveira <euler@eulerto.com>, pgsql-hackers@lists.postgresql.org
Date: 2026-04-20T17:33:27Z
Lists: pgsql-hackers
Hi Maxym, Hi Fujii

On 20/04/2026 10:04, Fujii Masao wrote:
> On Sat, Apr 18, 2026 at 2:04 AM Maxym Kharchenko
> <maxymkharchenko@gmail.com> wrote:
>> Hello Fujii-san,
>>
>> There seems to be an inconsistency in the current patch. When a statement has errors (for example, when it hits a table that does not exist), the full statement is still being logged.
>>
>> Similar parameter: `log_parameter_max_length` has a companion `log_parameter_max_length_on_error` to handle this case (commit: 0b34e7d307e6, https://github.com/postgres/postgres/
>> commit/0b34e7d307e6a142ee94800e6d5f3e73449eeffd).

Thanks for the input!

It's an interesting idea. However, I am not entirely convinced it
applies to this patch. IIUC log_parameter_max_length_on_error can be
used if you want to see the parameter values (for debugging), which
might contain sensitive information. So it is more like a
security/privacy control?

psql (19devel)
Type "help" for help.

postgres=# SELECT 1/$1
\bind 000
\g
ERROR:  division by zero

postgres=# SET log_parameter_max_length_on_error = -1;
SELECT 1/$1
\bind 000
\g
SET
ERROR:  division by zero
CONTEXT:  unnamed portal with parameters: $1 = '000'

postgres=# SET log_parameter_max_length_on_error = 2;
SELECT 1/$1
\bind 000
\g
SET
ERROR:  division by zero
CONTEXT:  unnamed portal with parameters: $1 = '00...'

Please correct me if I am wrong, but a statement is not sensitive in the
way parameter values can be. The reason to truncate statements is purely
log size management.


> I think extending log_statement_max_length, or adding something like
> log_statement_max_length_on_error, would be a good idea to cover statements
> logged on error. However, I think the current patch is good as it stands,
> so I'd recommend pursuing that as a separate patch after the current one
> is committed.

+1


Best, Jim



Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. Fix log_statement_max_length test with verbose logs

  2. Add log_statement_max_length GUC to limit logged statement text

  3. Improve user control over truncation of logged bind-parameter values.