From 5655f0912765a646cf84ca9026b4cd23d9fde3c4 Mon Sep 17 00:00:00 2001 From: Jelte Fennema-Nio Date: Fri, 21 Jun 2024 10:45:38 +0200 Subject: [PATCH v2 2/8] libpq: Add suppress argument to pqTraceOutputNchar In future commits we're going to trace authentication related messages. Some of these messages contain challenge bytes as part of a challenge-responese flow. Since these bytes are different for every connection we want normalized them when the PQTRACE_REGRESS_MODE trace flag is set. This commit modifies pqTraceOutputNchar to take a suppress argument, which makes it possible to do so. --- src/interfaces/libpq/fe-trace.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/interfaces/libpq/fe-trace.c b/src/interfaces/libpq/fe-trace.c index d7a61ec9cc1..6ea7bb821a1 100644 --- a/src/interfaces/libpq/fe-trace.c +++ b/src/interfaces/libpq/fe-trace.c @@ -185,12 +185,19 @@ pqTraceOutputString(FILE *pfdebug, const char *data, int *cursor, bool suppress) * pqTraceOutputNchar: output a string of exactly len bytes message to the log */ static void -pqTraceOutputNchar(FILE *pfdebug, int len, const char *data, int *cursor) +pqTraceOutputNchar(FILE *pfdebug, int len, const char *data, int *cursor, bool suppress) { int i, next; /* first char not yet printed */ const char *v = data + *cursor; + if (suppress) + { + fprintf(pfdebug, " 'BBBB'"); + *cursor += len; + return; + } + fprintf(pfdebug, " \'"); for (next = i = 0; i < len; ++i) @@ -246,7 +253,7 @@ pqTraceOutput_Bind(FILE *f, const char *message, int *cursor) nbytes = pqTraceOutputInt32(f, message, cursor, false); if (nbytes == -1) continue; - pqTraceOutputNchar(f, nbytes, message, cursor); + pqTraceOutputNchar(f, nbytes, message, cursor, false); } nparams = pqTraceOutputInt16(f, message, cursor); @@ -283,7 +290,7 @@ pqTraceOutput_DataRow(FILE *f, const char *message, int *cursor) len = pqTraceOutputInt32(f, message, cursor, false); if (len == -1) continue; - pqTraceOutputNchar(f, len, message, cursor); + pqTraceOutputNchar(f, len, message, cursor, false); } } @@ -363,7 +370,7 @@ pqTraceOutput_FunctionCall(FILE *f, const char *message, int *cursor, bool regre nbytes = pqTraceOutputInt32(f, message, cursor, false); if (nbytes == -1) continue; - pqTraceOutputNchar(f, nbytes, message, cursor); + pqTraceOutputNchar(f, nbytes, message, cursor, false); } pqTraceOutputInt16(f, message, cursor); @@ -487,7 +494,7 @@ pqTraceOutput_FunctionCallResponse(FILE *f, const char *message, int *cursor) fprintf(f, "FunctionCallResponse\t"); len = pqTraceOutputInt32(f, message, cursor, false); if (len != -1) - pqTraceOutputNchar(f, len, message, cursor); + pqTraceOutputNchar(f, len, message, cursor, false); } static void base-commit: 3e53492aa7084bceaa92757c90e067d79768797e -- 2.34.1