Reader question: bind-variable DETAIL missing from PostgreSQL logs

A reader running an example from the blog found only part of the expected log output for a parameterized statement on their instance.

What they got instead was the PREPARE line followed by a duration, then the EXECUTE line with its own DETAIL section:

LOG: statement: PREPARE stmt(text) AS SELECT oid FROM pg_class WHERE relname = $1;
LOG: duration: 0.487 ms
LOG: statement: EXECUTE stmt('pg_proc');
LOG: DETAIL: prepare: PREPARE stmt(text) AS SELECT oid FROM pg_class WHERE relname = $1;

Their configuration was:

  • logging_collector = on
  • log_min_duration_statement = 0
  • log_parameter_max_length = -1

The question to us: did they miss something?