v1-0001-Fix-tracing-of-BackendKeyData-and-CancelRequest.patch
application/octet-stream
Filename: v1-0001-Fix-tracing-of-BackendKeyData-and-CancelRequest.patch
Type: application/octet-stream
Part: 2
Patch
Format: format-patch
Series: patch v1-0001
Subject: Fix tracing of BackendKeyData and CancelRequest
| File | + | − |
|---|---|---|
| src/interfaces/libpq/fe-trace.c | 4 | 4 |
From 0d6d1b6134e50233ba543acf2885a021dfd16bb4 Mon Sep 17 00:00:00 2001
From: Anthonin Bonnefoy <anthonin.bonnefoy@datadoghq.com>
Date: Fri, 26 Jun 2026 10:37:32 +0200
Subject: Fix tracing of BackendKeyData and CancelRequest
BackendKeyData length was increased from 4 bytes to a variable-length
length (up to 256 bytes) in a460251f0a. However, pqTrace still traces
it as a 4 bytes key, leading to a "mismatched message length" warning
message. The same issue impacts the tracing of CancelRequest.
This patch fixes the issue by using pqTraceOutputNchar instead of
pqTraceOutputInt32 in both cases.
---
src/interfaces/libpq/fe-trace.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/src/interfaces/libpq/fe-trace.c b/src/interfaces/libpq/fe-trace.c
index c348b08c39b..aa2637e4f1e 100644
--- a/src/interfaces/libpq/fe-trace.c
+++ b/src/interfaces/libpq/fe-trace.c
@@ -452,11 +452,11 @@ pqTraceOutput_CopyOutResponse(FILE *f, const char *message, int *cursor)
}
static void
-pqTraceOutput_BackendKeyData(FILE *f, const char *message, int *cursor, bool regress)
+pqTraceOutput_BackendKeyData(FILE *f, const char *message, int len, int *cursor, bool regress)
{
fprintf(f, "BackendKeyData\t");
pqTraceOutputInt32(f, message, cursor, regress);
- pqTraceOutputInt32(f, message, cursor, regress);
+ pqTraceOutputNchar(f, len, message, cursor, regress);
}
static void
@@ -762,7 +762,7 @@ pqTraceOutputMessage(PGconn *conn, const char *message, bool toServer)
/* No message content */
break;
case PqMsg_BackendKeyData:
- pqTraceOutput_BackendKeyData(conn->Pfdebug, message, &logCursor, regress);
+ pqTraceOutput_BackendKeyData(conn->Pfdebug, message, conn->be_cancel_key_len, &logCursor, regress);
break;
case PqMsg_NoData:
fprintf(conn->Pfdebug, "NoData");
@@ -876,7 +876,7 @@ pqTraceOutputNoTypeByteMessage(PGconn *conn, const char *message)
pqTraceOutputInt16(conn->Pfdebug, message, &logCursor);
pqTraceOutputInt16(conn->Pfdebug, message, &logCursor);
pqTraceOutputInt32(conn->Pfdebug, message, &logCursor, regress);
- pqTraceOutputInt32(conn->Pfdebug, message, &logCursor, regress);
+ pqTraceOutputNchar(conn->Pfdebug, conn->be_cancel_key_len, message, &logCursor, regress);
}
else if (version == NEGOTIATE_SSL_CODE)
{
--
2.54.0