Re: libpq debug log

Jim Doty <jdoty@pivotal.io>

From: Jim Doty <jdoty@pivotal.io>
To: iwata.aya@jp.fujitsu.com
Cc: pgsql-hackers@postgresql.org, nagata@sraoss.co.jp, peter.eisentraut@2ndquadrant.com, tgl@sss.pgh.pa.us
Date: 2018-11-12T20:51:15Z
Lists: pgsql-hackers
Greetings,

This is my first attempt at a patch review, so I will take a pass at the
low hanging fruit.

Initial Pass
============

+ Patch applies
+ Patch builds
+ Patch behaves as described in the thread

I tried a few small things:

When I set a relative path for `PGLOGDIR`, the files were correctly
written to the directory.

When I set a path for `PGLOGDIR` that didn't exist or was not
write-able, the patch writes no files, and does not alert the user that
no files are being written.

Performance
===========

I ran two permutations of make check, one with the patch applied but not
activated, and the other with with the files being written to disk. Each
permutation was run ten times, and the stats are below (times are in
seconds):

              min  max  median  mean
not logging  50.4 57.6    53.3  53.4
    logging  58.3 77.7    65.0  65.8


Cheers,
Jim Doty


Commits

  1. Rename PQtraceSetFlags() to PQsetTraceFlags().

  2. Suppress length of Notice/Error msgs in PQtrace regress mode

  3. Strip file names reported in error messages on Windows, too.

  4. Fix setvbuf()-induced crash in libpq_pipeline

  5. libpq_pipeline: Must strdup(optarg) to avoid crash

  6. Remove setvbuf() call from PQtrace()

  7. Initialize conn->Pfdebug to NULL when creating a connection

  8. Disable force_parallel_mode in libpq_pipeline

  9. libpq_pipeline: add PQtrace() support and tests

  10. Improve PQtrace() output format

  11. Re-simplify management of inStart in pqParseInput3's subroutines.