libpq's pqTraceOutputMessage() used to look like this:

    case 'Z':               /* Ready For Query */
        pqTraceOutputZ(conn->Pfdebug, message, &logCursor);
        break;

Commit f4b54e1ed98 introduced macros for protocol characters, so now
it looks like this:

    case PqMsg_ReadyForQuery:
        pqTraceOutputZ(conn->Pfdebug, message, &logCursor);
        break;

But this introduced a disconnect between the symbol in the switch case
and the function name to be called, so this made the manageability of
this file a bit worse.

This patch changes the function names to match, so now it looks like
this:

    case PqMsg_ReadyForQuery:
        pqTraceOutput_ReadyForQuery(conn->Pfdebug, message, &logCursor);
        break;

(This also improves the readability of the file in general, since some
function names like "pqTraceOutputt" were a little hard to read
accurately.)

Some protocol characters have different meanings to and from the
server.  The old code structure had a common function for both, for
example, pqTraceOutputD().  The new structure splits this up into
separate ones to match the protocol message name, like
pqTraceOutput_Describe() and pqTraceOutput_DataRow().
From 00a9abce09ec22ff9eb617123bd4bda5701118a2 Mon Sep 17 00:00:00 2001
From: Peter Eisentraut <pe...@eisentraut.org>
Date: Wed, 24 Apr 2024 09:27:46 +0200
Subject: [PATCH] Rename libpq trace internal functions

libpq's pqTraceOutputMessage() used to look like this:

    case 'Z':               /* Ready For Query */
        pqTraceOutputZ(conn->Pfdebug, message, &logCursor);
        break;

Commit f4b54e1ed98 introduced macros for protocol characters, so now
it looks like this:

    case PqMsg_ReadyForQuery:
        pqTraceOutputZ(conn->Pfdebug, message, &logCursor);
        break;

But this introduced a disconnect between the symbol in the switch case
and the function name to be called, so this made the manageability of
this file a bit worse.

This patch changes the function names to match, so now it looks like
this:

    case PqMsg_ReadyForQuery:
        pqTraceOutput_ReadyForQuery(conn->Pfdebug, message, &logCursor);
        break;

(This also improves the readability of the file in general, since some
function names like "pqTraceOutputt" were a little hard to read
accurately.)

Some protocol characters have different meanings to and from the
server.  The old code structure had a common function for both, for
example, pqTraceOutputD().  The new structure splits this up into
separate ones to match the protocol message name, like
pqTraceOutput_Describe() and pqTraceOutput_DataRow().
---
 src/interfaces/libpq/fe-trace.c | 195 +++++++++++++++-----------------
 1 file changed, 91 insertions(+), 104 deletions(-)

diff --git a/src/interfaces/libpq/fe-trace.c b/src/interfaces/libpq/fe-trace.c
index c9932fc8a6b..2f5d490c5ee 100644
--- a/src/interfaces/libpq/fe-trace.c
+++ b/src/interfaces/libpq/fe-trace.c
@@ -215,9 +215,8 @@ pqTraceOutputNchar(FILE *pfdebug, int len, const char 
*data, int *cursor)
  * Output functions by protocol message type
  */
 
-/* NotificationResponse */
 static void
-pqTraceOutputA(FILE *f, const char *message, int *cursor, bool regress)
+pqTraceOutput_NotificationResponse(FILE *f, const char *message, int *cursor, 
bool regress)
 {
        fprintf(f, "NotificationResponse\t");
        pqTraceOutputInt32(f, message, cursor, regress);
@@ -225,9 +224,8 @@ pqTraceOutputA(FILE *f, const char *message, int *cursor, 
bool regress)
        pqTraceOutputString(f, message, cursor, false);
 }
 
-/* Bind */
 static void
-pqTraceOutputB(FILE *f, const char *message, int *cursor)
+pqTraceOutput_Bind(FILE *f, const char *message, int *cursor)
 {
        int                     nparams;
 
@@ -256,49 +254,45 @@ pqTraceOutputB(FILE *f, const char *message, int *cursor)
                pqTraceOutputInt16(f, message, cursor);
 }
 
-/* Close(F) or CommandComplete(B) */
 static void
-pqTraceOutputC(FILE *f, bool toServer, const char *message, int *cursor)
+pqTraceOutput_Close(FILE *f, const char *message, int *cursor)
 {
-       if (toServer)
-       {
-               fprintf(f, "Close\t");
-               pqTraceOutputByte1(f, message, cursor);
-               pqTraceOutputString(f, message, cursor, false);
-       }
-       else
-       {
-               fprintf(f, "CommandComplete\t");
-               pqTraceOutputString(f, message, cursor, false);
-       }
+       fprintf(f, "Close\t");
+       pqTraceOutputByte1(f, message, cursor);
+       pqTraceOutputString(f, message, cursor, false);
+}
+
+static void
+pqTraceOutput_CommandComplete(FILE *f, const char *message, int *cursor)
+{
+       fprintf(f, "CommandComplete\t");
+       pqTraceOutputString(f, message, cursor, false);
 }
 
-/* Describe(F) or DataRow(B) */
 static void
-pqTraceOutputD(FILE *f, bool toServer, const char *message, int *cursor)
+pqTraceOutput_DataRow(FILE *f, const char *message, int *cursor)
 {
-       if (toServer)
+       int                     nfields;
+       int                     len;
+       int                     i;
+
+       fprintf(f, "DataRow\t");
+       nfields = pqTraceOutputInt16(f, message, cursor);
+       for (i = 0; i < nfields; i++)
        {
-               fprintf(f, "Describe\t");
-               pqTraceOutputByte1(f, message, cursor);
-               pqTraceOutputString(f, message, cursor, false);
+               len = pqTraceOutputInt32(f, message, cursor, false);
+               if (len == -1)
+                       continue;
+               pqTraceOutputNchar(f, len, message, cursor);
        }
-       else
-       {
-               int                     nfields;
-               int                     len;
-               int                     i;
+}
 
-               fprintf(f, "DataRow\t");
-               nfields = pqTraceOutputInt16(f, message, cursor);
-               for (i = 0; i < nfields; i++)
-               {
-                       len = pqTraceOutputInt32(f, message, cursor, false);
-                       if (len == -1)
-                               continue;
-                       pqTraceOutputNchar(f, len, message, cursor);
-               }
-       }
+static void
+pqTraceOutput_Describe(FILE *f, const char *message, int *cursor)
+{
+       fprintf(f, "Describe\t");
+       pqTraceOutputByte1(f, message, cursor);
+       pqTraceOutputString(f, message, cursor, false);
 }
 
 /* NoticeResponse / ErrorResponse */
@@ -322,31 +316,29 @@ pqTraceOutputNR(FILE *f, const char *type, const char 
*message, int *cursor,
        }
 }
 
-/* Execute(F) or ErrorResponse(B) */
 static void
-pqTraceOutputE(FILE *f, bool toServer, const char *message, int *cursor, bool 
regress)
+pqTraceOutput_ErrorResponse(FILE *f, const char *message, int *cursor, bool 
regress)
 {
-       if (toServer)
-       {
-               fprintf(f, "Execute\t");
-               pqTraceOutputString(f, message, cursor, false);
-               pqTraceOutputInt32(f, message, cursor, false);
-       }
-       else
-               pqTraceOutputNR(f, "ErrorResponse", message, cursor, regress);
+       pqTraceOutputNR(f, "ErrorResponse", message, cursor, regress);
 }
 
-/* CopyFail */
 static void
-pqTraceOutputf(FILE *f, const char *message, int *cursor)
+pqTraceOutput_Execute(FILE *f, const char *message, int *cursor, bool regress)
+{
+       fprintf(f, "Execute\t");
+       pqTraceOutputString(f, message, cursor, false);
+       pqTraceOutputInt32(f, message, cursor, false);
+}
+
+static void
+pqTraceOutput_CopyFail(FILE *f, const char *message, int *cursor)
 {
        fprintf(f, "CopyFail\t");
        pqTraceOutputString(f, message, cursor, false);
 }
 
-/* FunctionCall */
 static void
-pqTraceOutputF(FILE *f, const char *message, int *cursor, bool regress)
+pqTraceOutput_FunctionCall(FILE *f, const char *message, int *cursor, bool 
regress)
 {
        int                     nfields;
        int                     nbytes;
@@ -371,9 +363,8 @@ pqTraceOutputF(FILE *f, const char *message, int *cursor, 
bool regress)
        pqTraceOutputInt16(f, message, cursor);
 }
 
-/* CopyInResponse */
 static void
-pqTraceOutputG(FILE *f, const char *message, int *cursor)
+pqTraceOutput_CopyInResponse(FILE *f, const char *message, int *cursor)
 {
        int                     nfields;
 
@@ -385,9 +376,8 @@ pqTraceOutputG(FILE *f, const char *message, int *cursor)
                pqTraceOutputInt16(f, message, cursor);
 }
 
-/* CopyOutResponse */
 static void
-pqTraceOutputH(FILE *f, const char *message, int *cursor)
+pqTraceOutput_CopyOutResponse(FILE *f, const char *message, int *cursor)
 {
        int                     nfields;
 
@@ -399,18 +389,16 @@ pqTraceOutputH(FILE *f, const char *message, int *cursor)
                pqTraceOutputInt16(f, message, cursor);
 }
 
-/* BackendKeyData */
 static void
-pqTraceOutputK(FILE *f, const char *message, int *cursor, bool regress)
+pqTraceOutput_BackendKeyData(FILE *f, const char *message, int *cursor, bool 
regress)
 {
        fprintf(f, "BackendKeyData\t");
        pqTraceOutputInt32(f, message, cursor, regress);
        pqTraceOutputInt32(f, message, cursor, regress);
 }
 
-/* Parse */
 static void
-pqTraceOutputP(FILE *f, const char *message, int *cursor, bool regress)
+pqTraceOutput_Parse(FILE *f, const char *message, int *cursor, bool regress)
 {
        int                     nparams;
 
@@ -423,34 +411,30 @@ pqTraceOutputP(FILE *f, const char *message, int *cursor, 
bool regress)
                pqTraceOutputInt32(f, message, cursor, regress);
 }
 
-/* Query */
 static void
-pqTraceOutputQ(FILE *f, const char *message, int *cursor)
+pqTraceOutput_Query(FILE *f, const char *message, int *cursor)
 {
        fprintf(f, "Query\t");
        pqTraceOutputString(f, message, cursor, false);
 }
 
-/* Authentication */
 static void
-pqTraceOutputR(FILE *f, const char *message, int *cursor)
+pqTraceOutput_Authentication(FILE *f, const char *message, int *cursor)
 {
        fprintf(f, "Authentication\t");
        pqTraceOutputInt32(f, message, cursor, false);
 }
 
-/* ParameterStatus */
 static void
-pqTraceOutputS(FILE *f, const char *message, int *cursor)
+pqTraceOutput_ParameterStatus(FILE *f, const char *message, int *cursor)
 {
        fprintf(f, "ParameterStatus\t");
        pqTraceOutputString(f, message, cursor, false);
        pqTraceOutputString(f, message, cursor, false);
 }
 
-/* ParameterDescription */
 static void
-pqTraceOutputt(FILE *f, const char *message, int *cursor, bool regress)
+pqTraceOutput_ParameterDescription(FILE *f, const char *message, int *cursor, 
bool regress)
 {
        int                     nfields;
 
@@ -461,9 +445,8 @@ pqTraceOutputt(FILE *f, const char *message, int *cursor, 
bool regress)
                pqTraceOutputInt32(f, message, cursor, regress);
 }
 
-/* RowDescription */
 static void
-pqTraceOutputT(FILE *f, const char *message, int *cursor, bool regress)
+pqTraceOutput_RowDescription(FILE *f, const char *message, int *cursor, bool 
regress)
 {
        int                     nfields;
 
@@ -482,18 +465,16 @@ pqTraceOutputT(FILE *f, const char *message, int *cursor, 
bool regress)
        }
 }
 
-/* NegotiateProtocolVersion */
 static void
-pqTraceOutputv(FILE *f, const char *message, int *cursor)
+pqTraceOutput_NegotiateProtocolVersion(FILE *f, const char *message, int 
*cursor)
 {
        fprintf(f, "NegotiateProtocolVersion\t");
        pqTraceOutputInt32(f, message, cursor, false);
        pqTraceOutputInt32(f, message, cursor, false);
 }
 
-/* FunctionCallResponse */
 static void
-pqTraceOutputV(FILE *f, const char *message, int *cursor)
+pqTraceOutput_FunctionCallResponse(FILE *f, const char *message, int *cursor)
 {
        int                     len;
 
@@ -503,9 +484,8 @@ pqTraceOutputV(FILE *f, const char *message, int *cursor)
                pqTraceOutputNchar(f, len, message, cursor);
 }
 
-/* CopyBothResponse */
 static void
-pqTraceOutputW(FILE *f, const char *message, int *cursor, int length)
+pqTraceOutput_CopyBothResponse(FILE *f, const char *message, int *cursor, int 
length)
 {
        fprintf(f, "CopyBothResponse\t");
        pqTraceOutputByte1(f, message, cursor);
@@ -514,9 +494,8 @@ pqTraceOutputW(FILE *f, const char *message, int *cursor, 
int length)
                pqTraceOutputInt16(f, message, cursor);
 }
 
-/* ReadyForQuery */
 static void
-pqTraceOutputZ(FILE *f, const char *message, int *cursor)
+pqTraceOutput_ReadyForQuery(FILE *f, const char *message, int *cursor)
 {
        fprintf(f, "ReadyForQuery\t");
        pqTraceOutputByte1(f, message, cursor);
@@ -575,10 +554,10 @@ pqTraceOutputMessage(PGconn *conn, const char *message, 
bool toServer)
                        /* No message content */
                        break;
                case PqMsg_NotificationResponse:
-                       pqTraceOutputA(conn->Pfdebug, message, &logCursor, 
regress);
+                       pqTraceOutput_NotificationResponse(conn->Pfdebug, 
message, &logCursor, regress);
                        break;
                case PqMsg_Bind:
-                       pqTraceOutputB(conn->Pfdebug, message, &logCursor);
+                       pqTraceOutput_Bind(conn->Pfdebug, message, &logCursor);
                        break;
                case PqMsg_CopyDone:
                        fprintf(conn->Pfdebug, "CopyDone");
@@ -587,7 +566,10 @@ pqTraceOutputMessage(PGconn *conn, const char *message, 
bool toServer)
                case PqMsg_CommandComplete:
                        /* Close(F) and CommandComplete(B) use the same 
identifier. */
                        Assert(PqMsg_Close == PqMsg_CommandComplete);
-                       pqTraceOutputC(conn->Pfdebug, toServer, message, 
&logCursor);
+                       if (toServer)
+                               pqTraceOutput_Close(conn->Pfdebug, message, 
&logCursor);
+                       else
+                               pqTraceOutput_CommandComplete(conn->Pfdebug, 
message, &logCursor);
                        break;
                case PqMsg_CopyData:
                        /* Drop COPY data to reduce the overhead of logging. */
@@ -595,37 +577,42 @@ pqTraceOutputMessage(PGconn *conn, const char *message, 
bool toServer)
                case PqMsg_Describe:
                        /* Describe(F) and DataRow(B) use the same identifier. 
*/
                        Assert(PqMsg_Describe == PqMsg_DataRow);
-                       pqTraceOutputD(conn->Pfdebug, toServer, message, 
&logCursor);
+                       if (toServer)
+                               pqTraceOutput_Describe(conn->Pfdebug, message, 
&logCursor);
+                       else
+                               pqTraceOutput_DataRow(conn->Pfdebug, message, 
&logCursor);
                        break;
                case PqMsg_Execute:
                        /* Execute(F) and ErrorResponse(B) use the same 
identifier. */
                        Assert(PqMsg_Execute == PqMsg_ErrorResponse);
-                       pqTraceOutputE(conn->Pfdebug, toServer, message, 
&logCursor,
-                                                  regress);
+                       if (toServer)
+                               pqTraceOutput_Execute(conn->Pfdebug, message, 
&logCursor, regress);
+                       else
+                               pqTraceOutput_ErrorResponse(conn->Pfdebug, 
message, &logCursor, regress);
                        break;
                case PqMsg_CopyFail:
-                       pqTraceOutputf(conn->Pfdebug, message, &logCursor);
+                       pqTraceOutput_CopyFail(conn->Pfdebug, message, 
&logCursor);
                        break;
                case PqMsg_FunctionCall:
-                       pqTraceOutputF(conn->Pfdebug, message, &logCursor, 
regress);
+                       pqTraceOutput_FunctionCall(conn->Pfdebug, message, 
&logCursor, regress);
                        break;
                case PqMsg_CopyInResponse:
-                       pqTraceOutputG(conn->Pfdebug, message, &logCursor);
+                       pqTraceOutput_CopyInResponse(conn->Pfdebug, message, 
&logCursor);
                        break;
                case PqMsg_Flush:
                        /* Flush(F) and CopyOutResponse(B) use the same 
identifier */
                        Assert(PqMsg_CopyOutResponse == PqMsg_Flush);
-                       if (!toServer)
-                               pqTraceOutputH(conn->Pfdebug, message, 
&logCursor);
-                       else
+                       if (toServer)
                                fprintf(conn->Pfdebug, "Flush");        /* no 
message content */
+                       else
+                               pqTraceOutput_CopyOutResponse(conn->Pfdebug, 
message, &logCursor);
                        break;
                case PqMsg_EmptyQueryResponse:
                        fprintf(conn->Pfdebug, "EmptyQueryResponse");
                        /* No message content */
                        break;
                case PqMsg_BackendKeyData:
-                       pqTraceOutputK(conn->Pfdebug, message, &logCursor, 
regress);
+                       pqTraceOutput_BackendKeyData(conn->Pfdebug, message, 
&logCursor, regress);
                        break;
                case PqMsg_NoData:
                        fprintf(conn->Pfdebug, "NoData");
@@ -636,47 +623,47 @@ pqTraceOutputMessage(PGconn *conn, const char *message, 
bool toServer)
                                                        &logCursor, regress);
                        break;
                case PqMsg_Parse:
-                       pqTraceOutputP(conn->Pfdebug, message, &logCursor, 
regress);
+                       pqTraceOutput_Parse(conn->Pfdebug, message, &logCursor, 
regress);
                        break;
                case PqMsg_Query:
-                       pqTraceOutputQ(conn->Pfdebug, message, &logCursor);
+                       pqTraceOutput_Query(conn->Pfdebug, message, &logCursor);
                        break;
                case PqMsg_AuthenticationRequest:
-                       pqTraceOutputR(conn->Pfdebug, message, &logCursor);
+                       pqTraceOutput_Authentication(conn->Pfdebug, message, 
&logCursor);
                        break;
                case PqMsg_PortalSuspended:
                        fprintf(conn->Pfdebug, "PortalSuspended");
                        /* No message content */
                        break;
                case PqMsg_Sync:
-                       /* Parameter Status(B) and Sync(F) use the same 
identifier */
+                       /* ParameterStatus(B) and Sync(F) use the same 
identifier */
                        Assert(PqMsg_ParameterStatus == PqMsg_Sync);
-                       if (!toServer)
-                               pqTraceOutputS(conn->Pfdebug, message, 
&logCursor);
-                       else
+                       if (toServer)
                                fprintf(conn->Pfdebug, "Sync"); /* no message 
content */
+                       else
+                               pqTraceOutput_ParameterStatus(conn->Pfdebug, 
message, &logCursor);
                        break;
                case PqMsg_ParameterDescription:
-                       pqTraceOutputt(conn->Pfdebug, message, &logCursor, 
regress);
+                       pqTraceOutput_ParameterDescription(conn->Pfdebug, 
message, &logCursor, regress);
                        break;
                case PqMsg_RowDescription:
-                       pqTraceOutputT(conn->Pfdebug, message, &logCursor, 
regress);
+                       pqTraceOutput_RowDescription(conn->Pfdebug, message, 
&logCursor, regress);
                        break;
                case PqMsg_NegotiateProtocolVersion:
-                       pqTraceOutputv(conn->Pfdebug, message, &logCursor);
+                       pqTraceOutput_NegotiateProtocolVersion(conn->Pfdebug, 
message, &logCursor);
                        break;
                case PqMsg_FunctionCallResponse:
-                       pqTraceOutputV(conn->Pfdebug, message, &logCursor);
+                       pqTraceOutput_FunctionCallResponse(conn->Pfdebug, 
message, &logCursor);
                        break;
                case PqMsg_CopyBothResponse:
-                       pqTraceOutputW(conn->Pfdebug, message, &logCursor, 
length);
+                       pqTraceOutput_CopyBothResponse(conn->Pfdebug, message, 
&logCursor, length);
                        break;
                case PqMsg_Terminate:
                        fprintf(conn->Pfdebug, "Terminate");
                        /* No message content */
                        break;
                case PqMsg_ReadyForQuery:
-                       pqTraceOutputZ(conn->Pfdebug, message, &logCursor);
+                       pqTraceOutput_ReadyForQuery(conn->Pfdebug, message, 
&logCursor);
                        break;
                default:
                        fprintf(conn->Pfdebug, "Unknown message: %02x", id);

base-commit: 286eea5d3ae33a8c22d46a051f8ac6069c8b779d
-- 
2.44.0

Reply via email to