Skip to content

Commit e7e3414

Browse files
committed
Suppress length of Notice/Error msgs in PQtrace regress mode
A (relatively minor) annoyance of ErrorResponse/NoticeResponse messages as printed by PQtrace() is that their length might vary when we move error messages from one source file to another, one function to another, or even when their location line numbers change number of digits. To avoid having to adjust expected files for some tests, make the regress mode of PQtrace() suppress the length word of NoticeResponse and ErrorResponse messages. Discussion: https://postgr.es/m/20210402023010.GA13563@alvherre.pgsql Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us>
1 parent 846d35b commit e7e3414

File tree

3 files changed

+17
-8
lines changed

3 files changed

+17
-8
lines changed

src/interfaces/libpq/fe-trace.c

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -549,7 +549,16 @@ pqTraceOutputMessage(PGconn *conn, const char *message, bool toServer)
549549
length = (int) pg_ntoh32(length);
550550
logCursor += 4;
551551

552-
fprintf(conn->Pfdebug, "%s\t%d\t", prefix, length);
552+
/*
553+
* In regress mode, suppress the length of ErrorResponse and
554+
* NoticeResponse. The F (file name), L (line number) and R (routine
555+
* name) fields can change as server code is modified, and if their
556+
* lengths differ from the originals, that would break tests.
557+
*/
558+
if (regress && !toServer && (id == 'E' || id == 'N'))
559+
fprintf(conn->Pfdebug, "%s\tNN\t", prefix);
560+
else
561+
fprintf(conn->Pfdebug, "%s\t%d\t", prefix, length);
553562

554563
switch (id)
555564
{

src/test/modules/libpq_pipeline/traces/pipeline_abort.trace

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
F 42 Query "DROP TABLE IF EXISTS pq_pipeline_demo"
2-
B 123 NoticeResponse S "NOTICE" V "NOTICE" C "00000" M "table "pq_pipeline_demo" does not exist, skipping" F "SSSS" L "SSSS" R "SSSS" \x00
2+
B NN NoticeResponse S "NOTICE" V "NOTICE" C "00000" M "table "pq_pipeline_demo" does not exist, skipping" F "SSSS" L "SSSS" R "SSSS" \x00
33
B 15 CommandComplete "DROP TABLE"
44
B 5 ReadyForQuery I
55
F 99 Query "CREATE UNLOGGED TABLE pq_pipeline_demo(id serial primary key, itemno integer,int8filler int8);"
@@ -27,7 +27,7 @@ B 4 ParseComplete
2727
B 4 BindComplete
2828
B 4 NoData
2929
B 15 CommandComplete "INSERT 0 1"
30-
B 217 ErrorResponse S "ERROR" V "ERROR" C "42883" M "function no_such_function(integer) does not exist" H "No function matches the given name and argument types. You might need to add explicit type casts." P "8" F "SSSS" L "SSSS" R "SSSS" \x00
30+
B NN ErrorResponse S "ERROR" V "ERROR" C "42883" M "function no_such_function(integer) does not exist" H "No function matches the given name and argument types. You might need to add explicit type casts." P "8" F "SSSS" L "SSSS" R "SSSS" \x00
3131
B 5 ReadyForQuery I
3232
B 4 ParseComplete
3333
B 4 BindComplete
@@ -39,7 +39,7 @@ F 12 Bind "" "" 0 0 0
3939
F 6 Describe P ""
4040
F 9 Execute "" 0
4141
F 4 Sync
42-
B 123 ErrorResponse S "ERROR" V "ERROR" C "42601" M "cannot insert multiple commands into a prepared statement" F "SSSS" L "SSSS" R "SSSS" \x00
42+
B NN ErrorResponse S "ERROR" V "ERROR" C "42601" M "cannot insert multiple commands into a prepared statement" F "SSSS" L "SSSS" R "SSSS" \x00
4343
B 5 ReadyForQuery I
4444
F 54 Parse "" "SELECT 1.0/g FROM generate_series(3, -1, -1) g" 0
4545
F 12 Bind "" "" 0 0 0
@@ -52,7 +52,7 @@ B 33 RowDescription 1 "?column?" NNNN 0 NNNN 65535 -1 0
5252
B 32 DataRow 1 22 '0.33333333333333333333'
5353
B 32 DataRow 1 22 '0.50000000000000000000'
5454
B 32 DataRow 1 22 '1.00000000000000000000'
55-
B 70 ErrorResponse S "ERROR" V "ERROR" C "22012" M "division by zero" F "SSSS" L "SSSS" R "SSSS" \x00
55+
B NN ErrorResponse S "ERROR" V "ERROR" C "22012" M "division by zero" F "SSSS" L "SSSS" R "SSSS" \x00
5656
B 5 ReadyForQuery I
5757
F 40 Query "SELECT itemno FROM pq_pipeline_demo"
5858
B 31 RowDescription 1 "itemno" NNNN 2 NNNN 4 -1 0

src/test/modules/libpq_pipeline/traces/transaction.trace

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
F 79 Query "DROP TABLE IF EXISTS pq_pipeline_tst;CREATE TABLE pq_pipeline_tst (id int)"
2-
B 122 NoticeResponse S "NOTICE" V "NOTICE" C "00000" M "table "pq_pipeline_tst" does not exist, skipping" F "SSSS" L "SSSS" R "SSSS" \x00
2+
B NN NoticeResponse S "NOTICE" V "NOTICE" C "00000" M "table "pq_pipeline_tst" does not exist, skipping" F "SSSS" L "SSSS" R "SSSS" \x00
33
B 15 CommandComplete "DROP TABLE"
44
B 17 CommandComplete "CREATE TABLE"
55
B 5 ReadyForQuery I
@@ -40,9 +40,9 @@ B 4 BindComplete
4040
B 4 NoData
4141
B 10 CommandComplete "BEGIN"
4242
B 4 ParseComplete
43-
B 65 ErrorResponse S "ERROR" V "ERROR" C "22012" M "division by zero" F "SSSS" L "SSSS" R "SSSS" \x00
43+
B NN ErrorResponse S "ERROR" V "ERROR" C "22012" M "division by zero" F "SSSS" L "SSSS" R "SSSS" \x00
4444
B 5 ReadyForQuery E
45-
B 145 ErrorResponse S "ERROR" V "ERROR" C "25P02" M "current transaction is aborted, commands ignored until end of transaction block" F "SSSS" L "SSSS" R "SSSS" \x00
45+
B NN ErrorResponse S "ERROR" V "ERROR" C "25P02" M "current transaction is aborted, commands ignored until end of transaction block" F "SSSS" L "SSSS" R "SSSS" \x00
4646
B 5 ReadyForQuery E
4747
B 4 BindComplete
4848
B 4 NoData

0 commit comments

Comments
 (0)