Re: libpq debug log
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: Robert Haas <robertmhaas@gmail.com>
Cc: "Iwata, Aya" <iwata.aya@jp.fujitsu.com>,
"Jamison,
Kirk" <k.jamison@jp.fujitsu.com>,
"Nagaura,
Ryohei" <nagaura.ryohei@jp.fujitsu.com>,
Jacob Champion <pchampion@pivotal.io>, Jim Doty <jdoty@pivotal.io>,
PostgreSQL mailing lists <pgsql-hackers@postgresql.org>,
"nagata@sraoss.co.jp" <nagata@sraoss.co.jp>,
Haribabu Kommi <kommi.haribabu@gmail.com>,
Peter Eisentraut <peter.eisentraut@2ndquadrant.com>
Date: 2019-03-05T03:25:39Z
Lists: pgsql-hackers
Robert Haas <robertmhaas@gmail.com> writes: > The basic idea being: > - Each line is a whole message. > - The line begins with <<< for a message received and >>> for a message sent. +1, though do we really need to repeat the direction marker thrice? > - Strings in single quotes are those sent/received as a fixed number of bytes. > - Strings in double quotes are those sent/received as a string. > - 4-byte integers are printed unadorned. > - 2-byte integers are prefixed by #. > - I guess 1-byte integers would need some other prefix, maybe @ or ##. I doubt that anybody gives a fig for those distinctions, except when they're writing actual code that speaks the protocol --- and I do not think that that's the target use-case. So strings and integers seem like plenty. I'd also suggest that just because the protocol has single-letter codes for message types doesn't mean that average users have memorized those codes; and that framing data like the message length is of no interest. In short, rather than <<< 'T' 101 4 "Schema" 2615 #2 19 #64 -1 #0 "Name" 1259 #2 19 #64 -1 #0 "Owner" 0 #0 19 #64 -1 #0 I'd envision something more like < RowDescription "Schema" 2615 2 19 64 -1 0 "Name" 1259 2 19 64 -1 0 "Owner" 0 0 19 64 -1 0 > But I still don't really see a need for different levels or whatever. > I mean, you either want a dump of all of the protocol traffic, or you > don't, I think. Or maybe I am confused as to what the goal of all > this really is. Yeah, me too. But a lot of this detail would only be useful if you were trying to diagnose something like a discrepancy between the server and libpq as to the width of some field. And the number of users for that can be counted without running out of fingers. I think what would be of use for a trace facility is as high-level a view as possible of the message contents. Or, in other words: a large part of the problem with the existing PQtrace facility is that it *was* designed to help debug libpq itself, and that use-case is no longer very interesting. We should assume that the library knows how to parse protocol messages. regards, tom lane
Commits
-
Rename PQtraceSetFlags() to PQsetTraceFlags().
- d0e750c0acaf 14.0 landed
-
Suppress length of Notice/Error msgs in PQtrace regress mode
- e7e341409a3d 14.0 landed
-
Strip file names reported in error messages on Windows, too.
- 53aafdb9ff6a 14.0 landed
-
Fix setvbuf()-induced crash in libpq_pipeline
- a68a894f0198 14.0 landed
-
libpq_pipeline: Must strdup(optarg) to avoid crash
- dde1a35aee62 14.0 landed
-
Remove setvbuf() call from PQtrace()
- 6ec578e60101 14.0 landed
-
Initialize conn->Pfdebug to NULL when creating a connection
- aba24b51cc1b 14.0 landed
-
Disable force_parallel_mode in libpq_pipeline
- a6d3dea8e5e0 14.0 landed
-
libpq_pipeline: add PQtrace() support and tests
- 7bebd0d00998 14.0 landed
-
Improve PQtrace() output format
- 198b3716dba6 14.0 landed
-
Re-simplify management of inStart in pqParseInput3's subroutines.
- d3a557894ce0 11.12 landed
- d2be6cdc55ad 10.17 landed
- a98e53e10dd5 9.6.22 landed
- 56defbdd0f4e 12.7 landed
- 51c54bb60309 14.0 landed
- 3580b4a0cde0 13.3 landed