From 04e1ba4c42f9a8ec66fcbf08692932c4571daf38 Mon Sep 17 00:00:00 2001 From: Anthonin Bonnefoy Date: Tue, 28 Jul 2026 09:46:17 +0200 Subject: Add trace tests for compression --- .../expected/compress_transaction_frame.out | 90 +++++ .../expected/compress_transaction_frame.trace | 209 +++++++++++ .../expected/compress_transaction_frame_1.out | 3 + .../compress_transaction_frame_1.trace | 27 ++ .../expected/compress_transaction_frame_2.out | 3 + .../compress_transaction_frame_2.trace | 27 ++ .../expected/protocol_compression_lz4.out | 114 ++++++ .../expected/protocol_compression_lz4.trace | 341 ++++++++++++++++++ .../expected/protocol_compression_lz4_1.out | 3 + .../expected/protocol_compression_lz4_1.trace | 27 ++ .../expected/protocol_compression_lz4_3.trace | 27 ++ .../expected/protocol_compression_switch.out | 10 + .../protocol_compression_switch.trace | 59 +++ .../protocol_compression_switch_1.out | 3 + .../protocol_compression_switch_1.trace | 27 ++ .../protocol_compression_switch_2.out | 3 + .../protocol_compression_switch_2.trace | 27 ++ .../protocol_compression_switch_3.trace | 27 ++ .../expected/protocol_compression_zstd.out | 114 ++++++ .../expected/protocol_compression_zstd.trace | 341 ++++++++++++++++++ .../expected/protocol_compression_zstd_1.out | 3 + .../protocol_compression_zstd_1.trace | 27 ++ .../protocol_compression_zstd_3.trace | 27 ++ .../trace/sql/compress_transaction_frame.sql | 45 +++ .../trace/sql/protocol_compression_lz4.sql | 143 ++++++++ .../trace/sql/protocol_compression_switch.sql | 19 + .../trace/sql/protocol_compression_zstd.sql | 144 ++++++++ src/test/trace/trace_schedule | 2 +- 28 files changed, 1891 insertions(+), 1 deletion(-) create mode 100644 src/test/trace/expected/compress_transaction_frame.out create mode 100644 src/test/trace/expected/compress_transaction_frame.trace create mode 100644 src/test/trace/expected/compress_transaction_frame_1.out create mode 100644 src/test/trace/expected/compress_transaction_frame_1.trace create mode 100644 src/test/trace/expected/compress_transaction_frame_2.out create mode 100644 src/test/trace/expected/compress_transaction_frame_2.trace create mode 100644 src/test/trace/expected/protocol_compression_lz4.out create mode 100644 src/test/trace/expected/protocol_compression_lz4.trace create mode 100644 src/test/trace/expected/protocol_compression_lz4_1.out create mode 100644 src/test/trace/expected/protocol_compression_lz4_1.trace create mode 100644 src/test/trace/expected/protocol_compression_lz4_3.trace create mode 100644 src/test/trace/expected/protocol_compression_switch.out create mode 100644 src/test/trace/expected/protocol_compression_switch.trace create mode 100644 src/test/trace/expected/protocol_compression_switch_1.out create mode 100644 src/test/trace/expected/protocol_compression_switch_1.trace create mode 100644 src/test/trace/expected/protocol_compression_switch_2.out create mode 100644 src/test/trace/expected/protocol_compression_switch_2.trace create mode 100644 src/test/trace/expected/protocol_compression_switch_3.trace create mode 100644 src/test/trace/expected/protocol_compression_zstd.out create mode 100644 src/test/trace/expected/protocol_compression_zstd.trace create mode 100644 src/test/trace/expected/protocol_compression_zstd_1.out create mode 100644 src/test/trace/expected/protocol_compression_zstd_1.trace create mode 100644 src/test/trace/expected/protocol_compression_zstd_3.trace create mode 100644 src/test/trace/sql/compress_transaction_frame.sql create mode 100644 src/test/trace/sql/protocol_compression_lz4.sql create mode 100644 src/test/trace/sql/protocol_compression_switch.sql create mode 100644 src/test/trace/sql/protocol_compression_zstd.sql diff --git a/src/test/trace/expected/compress_transaction_frame.out b/src/test/trace/expected/compress_transaction_frame.out new file mode 100644 index 00000000000..5049cac14a7 --- /dev/null +++ b/src/test/trace/expected/compress_transaction_frame.out @@ -0,0 +1,90 @@ + ?column? +---------- + 1 +(1 row) + + repeat +---------------------------------------------------------------------------------- + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +(1 row) + + repeat +---------------------------------------------------------------------------------- + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +(1 row) + + repeat +---------------------------------------------------------------------------------- + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +(1 row) + + ?column? +---------- + 1 +(1 row) + + ?column? +---------- + 1 +(1 row) + + repeat +---------------------------------------------------------------------------------- + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +(1 row) + + repeat +---------------------------------------------------------------------------------- + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +(1 row) + + repeat +---------------------------------------------------------------------------------- + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +(1 row) + + ?column? +---------- + 1 +(1 row) + + repeat +---------------------------------------------------------------------------------- + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +(1 row) + + repeat +---------------------------------------------------------------------------------- + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +(1 row) + + repeat +---------------------------------------------------------------------------------- + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +(1 row) + + ?column? +---------- + 1 +(1 row) + + ?column? +---------- + 1 +(1 row) + + repeat +---------------------------------------------------------------------------------- + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +(1 row) + + repeat +---------------------------------------------------------------------------------- + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +(1 row) + + repeat +---------------------------------------------------------------------------------- + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +(1 row) + diff --git a/src/test/trace/expected/compress_transaction_frame.trace b/src/test/trace/expected/compress_transaction_frame.trace new file mode 100644 index 00000000000..18deb73df2d --- /dev/null +++ b/src/test/trace/expected/compress_transaction_frame.trace @@ -0,0 +1,209 @@ +F NN StartupMessage 3 0 "user" "SSSS" "database" "SSSS" "options" "SSSS" "application_name" "SSSS" "_pq_.supported_compressions" "SSSS" "datestyle" "SSSS" "timezone" "SSSS" +B NN ParameterStatus "IntervalStyle" "SSSS" +B NN ParameterStatus "search_path" "SSSS" +B NN ParameterStatus "is_superuser" "SSSS" +B NN ParameterStatus "standard_conforming_strings" "SSSS" +B NN ParameterStatus "session_authorization" "SSSS" +B NN ParameterStatus "client_encoding" "SSSS" +B NN ParameterStatus "server_version" "SSSS" +B NN ParameterStatus "server_encoding" "SSSS" +B NN ParameterStatus "in_hot_standby" "SSSS" +B NN ParameterStatus "integer_datetimes" "SSSS" +B NN ParameterStatus "TimeZone" "SSSS" +B NN ParameterStatus "application_name" "SSSS" +B NN ParameterStatus "default_transaction_read_only" "SSSS" +B NN ParameterStatus "scram_iterations" "SSSS" +B NN ParameterStatus "DateStyle" "SSSS" +B 12 BackendKeyData NNNN 'BBBB' +B 5 ReadyForQuery I +F 70 Query "SET protocol_backend_compression_allowed_algorithms = 'zstd,lz4';" +B 8 CommandComplete "SET" +B 5 ReadyForQuery I +F 104 Query "SELECT current_setting('protocol_backend_compression_allowed_algorithms')!='zstd,lz4' AS skip_test " +B 34 RowDescription 1 "skip_test" NNNN 0 NNNN 1 -1 0 +B 11 DataRow 1 1 'f' +B 13 CommandComplete "SELECT 1" +B 5 ReadyForQuery I +F 45 Query "SET protocol_backend_compression='zstd';" +B 8 CommandComplete "SET" +B 5 ReadyForQuery I +F 61 Query "SET protocol_backend_compression_transaction_frame=true;" +B 8 CommandComplete "SET" +B 5 ReadyForQuery I +F 14 Query "SELECT 1;" +B 33 RowDescription 1 "?column?" NNNN 0 NNNN 4 -1 0 +B 11 DataRow 1 1 '1' +B 13 CommandComplete "SELECT 1" +B 5 ReadyForQuery I +F 11 Query "BEGIN;" +B 10 CommandComplete "BEGIN" +B 5 ReadyForQuery T +F 28 Query "SELECT repeat('a', 80);" +B* 31 RowDescription 1 "repeat" NNNN 0 NNNN 65535 -1 0 +B* 90 DataRow 1 80 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' +B NN CompressedMessages \x03 "TD" 'BBBB' +B 13 CommandComplete "SELECT 1" +B 5 ReadyForQuery T +F 12 Query "COMMIT;" +B 11 CommandComplete "COMMIT" +B NN CompressedMessages \x03 "" 'BBBB' +B 5 ReadyForQuery I +F 11 Query "BEGIN;" +B 10 CommandComplete "BEGIN" +B 5 ReadyForQuery T +F 28 Query "SELECT repeat('a', 80);" +B* 31 RowDescription 1 "repeat" NNNN 0 NNNN 65535 -1 0 +B* 90 DataRow 1 80 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' +B NN CompressedMessages \x03 "TD" 'BBBB' +B 13 CommandComplete "SELECT 1" +B 5 ReadyForQuery T +F 14 Query "ROLLBACK;" +B 13 CommandComplete "ROLLBACK" +B NN CompressedMessages \x03 "" 'BBBB' +B 5 ReadyForQuery I +F 28 Query "SELECT repeat('a', 80);" +B* 31 RowDescription 1 "repeat" NNNN 0 NNNN 65535 -1 0 +B* 90 DataRow 1 80 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' +B NN CompressedMessages \x03 "TD" 'BBBB' +B 13 CommandComplete "SELECT 1" +B NN CompressedMessages \x03 "" 'BBBB' +B 5 ReadyForQuery I +F 14 Query "SELECT 1;" +B 33 RowDescription 1 "?column?" NNNN 0 NNNN 4 -1 0 +B 11 DataRow 1 1 '1' +B 13 CommandComplete "SELECT 1" +B 5 ReadyForQuery I +F 62 Query "SET protocol_backend_compression_transaction_frame=false;" +B 8 CommandComplete "SET" +B 5 ReadyForQuery I +F 14 Query "SELECT 1;" +B 33 RowDescription 1 "?column?" NNNN 0 NNNN 4 -1 0 +B 11 DataRow 1 1 '1' +B 13 CommandComplete "SELECT 1" +B 5 ReadyForQuery I +F 11 Query "BEGIN;" +B 10 CommandComplete "BEGIN" +B 5 ReadyForQuery T +F 28 Query "SELECT repeat('a', 80);" +B* 31 RowDescription 1 "repeat" NNNN 0 NNNN 65535 -1 0 +B* 90 DataRow 1 80 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' +B NN CompressedMessages \x03 "TD" 'BBBB' +B 13 CommandComplete "SELECT 1" +B 5 ReadyForQuery T +F 12 Query "COMMIT;" +B 11 CommandComplete "COMMIT" +B 5 ReadyForQuery I +F 11 Query "BEGIN;" +B 10 CommandComplete "BEGIN" +B 5 ReadyForQuery T +F 28 Query "SELECT repeat('a', 80);" +B* 31 RowDescription 1 "repeat" NNNN 0 NNNN 65535 -1 0 +B* 90 DataRow 1 80 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' +B NN CompressedMessages \x03 "TD" 'BBBB' +B 13 CommandComplete "SELECT 1" +B 5 ReadyForQuery T +F 14 Query "ROLLBACK;" +B 13 CommandComplete "ROLLBACK" +B 5 ReadyForQuery I +F 28 Query "SELECT repeat('a', 80);" +B* 31 RowDescription 1 "repeat" NNNN 0 NNNN 65535 -1 0 +B* 90 DataRow 1 80 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' +B NN CompressedMessages \x03 "TD" 'BBBB' +B 13 CommandComplete "SELECT 1" +B 5 ReadyForQuery I +F 44 Query "SET protocol_backend_compression='lz4';" +B NN CompressedMessages \x03 "" 'BBBB' +B 8 CommandComplete "SET" +B 5 ReadyForQuery I +F 61 Query "SET protocol_backend_compression_transaction_frame=true;" +B 8 CommandComplete "SET" +B 5 ReadyForQuery I +F 14 Query "SELECT 1;" +B 33 RowDescription 1 "?column?" NNNN 0 NNNN 4 -1 0 +B 11 DataRow 1 1 '1' +B 13 CommandComplete "SELECT 1" +B 5 ReadyForQuery I +F 11 Query "BEGIN;" +B 10 CommandComplete "BEGIN" +B 5 ReadyForQuery T +F 28 Query "SELECT repeat('a', 80);" +B* 31 RowDescription 1 "repeat" NNNN 0 NNNN 65535 -1 0 +B* 90 DataRow 1 80 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' +B NN CompressedMessages \x02 "TD" 'BBBB' +B 13 CommandComplete "SELECT 1" +B 5 ReadyForQuery T +F 12 Query "COMMIT;" +B 11 CommandComplete "COMMIT" +B NN CompressedMessages \x02 "" 'BBBB' +B 5 ReadyForQuery I +F 11 Query "BEGIN;" +B 10 CommandComplete "BEGIN" +B 5 ReadyForQuery T +F 28 Query "SELECT repeat('a', 80);" +B* 31 RowDescription 1 "repeat" NNNN 0 NNNN 65535 -1 0 +B* 90 DataRow 1 80 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' +B NN CompressedMessages \x02 "TD" 'BBBB' +B 13 CommandComplete "SELECT 1" +B 5 ReadyForQuery T +F 14 Query "ROLLBACK;" +B 13 CommandComplete "ROLLBACK" +B NN CompressedMessages \x02 "" 'BBBB' +B 5 ReadyForQuery I +F 28 Query "SELECT repeat('a', 80);" +B* 31 RowDescription 1 "repeat" NNNN 0 NNNN 65535 -1 0 +B* 90 DataRow 1 80 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' +B NN CompressedMessages \x02 "TD" 'BBBB' +B 13 CommandComplete "SELECT 1" +B NN CompressedMessages \x02 "" 'BBBB' +B 5 ReadyForQuery I +F 14 Query "SELECT 1;" +B 33 RowDescription 1 "?column?" NNNN 0 NNNN 4 -1 0 +B 11 DataRow 1 1 '1' +B 13 CommandComplete "SELECT 1" +B 5 ReadyForQuery I +F 62 Query "SET protocol_backend_compression_transaction_frame=false;" +B 8 CommandComplete "SET" +B 5 ReadyForQuery I +F 14 Query "SELECT 1;" +B 33 RowDescription 1 "?column?" NNNN 0 NNNN 4 -1 0 +B 11 DataRow 1 1 '1' +B 13 CommandComplete "SELECT 1" +B 5 ReadyForQuery I +F 11 Query "BEGIN;" +B 10 CommandComplete "BEGIN" +B 5 ReadyForQuery T +F 28 Query "SELECT repeat('a', 80);" +B* 31 RowDescription 1 "repeat" NNNN 0 NNNN 65535 -1 0 +B* 90 DataRow 1 80 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' +B NN CompressedMessages \x02 "TD" 'BBBB' +B 13 CommandComplete "SELECT 1" +B 5 ReadyForQuery T +F 12 Query "COMMIT;" +B 11 CommandComplete "COMMIT" +B 5 ReadyForQuery I +F 11 Query "BEGIN;" +B 10 CommandComplete "BEGIN" +B 5 ReadyForQuery T +F 28 Query "SELECT repeat('a', 80);" +B* 31 RowDescription 1 "repeat" NNNN 0 NNNN 65535 -1 0 +B* 90 DataRow 1 80 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' +B NN CompressedMessages \x02 "TD" 'BBBB' +B 13 CommandComplete "SELECT 1" +B 5 ReadyForQuery T +F 14 Query "ROLLBACK;" +B 13 CommandComplete "ROLLBACK" +B 5 ReadyForQuery I +F 28 Query "SELECT repeat('a', 80);" +B* 31 RowDescription 1 "repeat" NNNN 0 NNNN 65535 -1 0 +B* 90 DataRow 1 80 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' +B NN CompressedMessages \x02 "TD" 'BBBB' +B 13 CommandComplete "SELECT 1" +B 5 ReadyForQuery I +F 40 Query "RESET protocol_backend_compression;" +B NN CompressedMessages \x02 "" 'BBBB' +B 10 CommandComplete "RESET" +B 5 ReadyForQuery I +F 58 Query "RESET protocol_backend_compression_transaction_frame;" +B 10 CommandComplete "RESET" +B 5 ReadyForQuery I +F 4 Terminate diff --git a/src/test/trace/expected/compress_transaction_frame_1.out b/src/test/trace/expected/compress_transaction_frame_1.out new file mode 100644 index 00000000000..612d7b2d5f1 --- /dev/null +++ b/src/test/trace/expected/compress_transaction_frame_1.out @@ -0,0 +1,3 @@ +ERROR: invalid value for parameter "protocol_backend_compression_allowed_algorithms": "zstd,lz4" +DETAIL: lz4 compression is not supported by this build +*** skipping compress transaction frame tests with zstd (not supported) *** diff --git a/src/test/trace/expected/compress_transaction_frame_1.trace b/src/test/trace/expected/compress_transaction_frame_1.trace new file mode 100644 index 00000000000..5d5b4ed26c2 --- /dev/null +++ b/src/test/trace/expected/compress_transaction_frame_1.trace @@ -0,0 +1,27 @@ +F NN StartupMessage 3 0 "user" "SSSS" "database" "SSSS" "options" "SSSS" "application_name" "SSSS" "_pq_.supported_compressions" "SSSS" "datestyle" "SSSS" "timezone" "SSSS" +B NN ParameterStatus "IntervalStyle" "SSSS" +B NN ParameterStatus "search_path" "SSSS" +B NN ParameterStatus "is_superuser" "SSSS" +B NN ParameterStatus "standard_conforming_strings" "SSSS" +B NN ParameterStatus "session_authorization" "SSSS" +B NN ParameterStatus "client_encoding" "SSSS" +B NN ParameterStatus "server_version" "SSSS" +B NN ParameterStatus "server_encoding" "SSSS" +B NN ParameterStatus "in_hot_standby" "SSSS" +B NN ParameterStatus "integer_datetimes" "SSSS" +B NN ParameterStatus "TimeZone" "SSSS" +B NN ParameterStatus "application_name" "SSSS" +B NN ParameterStatus "default_transaction_read_only" "SSSS" +B NN ParameterStatus "scram_iterations" "SSSS" +B NN ParameterStatus "DateStyle" "SSSS" +B 12 BackendKeyData NNNN 'BBBB' +B 5 ReadyForQuery I +F 70 Query "SET protocol_backend_compression_allowed_algorithms = 'zstd,lz4';" +B NN ErrorResponse S "ERROR" V "ERROR" C "22023" M "invalid value for parameter "protocol_backend_compression_allowed_algorithms": "zstd,lz4"" D "lz4 compression is not supported by this build" F "SSSS" L "SSSS" R "SSSS" \x00 +B 5 ReadyForQuery I +F 104 Query "SELECT current_setting('protocol_backend_compression_allowed_algorithms')!='zstd,lz4' AS skip_test " +B 34 RowDescription 1 "skip_test" NNNN 0 NNNN 1 -1 0 +B 11 DataRow 1 1 't' +B 13 CommandComplete "SELECT 1" +B 5 ReadyForQuery I +F 4 Terminate diff --git a/src/test/trace/expected/compress_transaction_frame_2.out b/src/test/trace/expected/compress_transaction_frame_2.out new file mode 100644 index 00000000000..74bba8ace2f --- /dev/null +++ b/src/test/trace/expected/compress_transaction_frame_2.out @@ -0,0 +1,3 @@ +ERROR: invalid value for parameter "protocol_backend_compression_allowed_algorithms": "zstd,lz4" +DETAIL: zstd compression is not supported by this build +*** skipping compress transaction frame tests with zstd (not supported) *** diff --git a/src/test/trace/expected/compress_transaction_frame_2.trace b/src/test/trace/expected/compress_transaction_frame_2.trace new file mode 100644 index 00000000000..d3b6dd36a79 --- /dev/null +++ b/src/test/trace/expected/compress_transaction_frame_2.trace @@ -0,0 +1,27 @@ +F NN StartupMessage 3 0 "user" "SSSS" "database" "SSSS" "options" "SSSS" "application_name" "SSSS" "_pq_.supported_compressions" "SSSS" "datestyle" "SSSS" "timezone" "SSSS" +B NN ParameterStatus "IntervalStyle" "SSSS" +B NN ParameterStatus "search_path" "SSSS" +B NN ParameterStatus "is_superuser" "SSSS" +B NN ParameterStatus "standard_conforming_strings" "SSSS" +B NN ParameterStatus "session_authorization" "SSSS" +B NN ParameterStatus "client_encoding" "SSSS" +B NN ParameterStatus "server_version" "SSSS" +B NN ParameterStatus "server_encoding" "SSSS" +B NN ParameterStatus "in_hot_standby" "SSSS" +B NN ParameterStatus "integer_datetimes" "SSSS" +B NN ParameterStatus "TimeZone" "SSSS" +B NN ParameterStatus "application_name" "SSSS" +B NN ParameterStatus "default_transaction_read_only" "SSSS" +B NN ParameterStatus "scram_iterations" "SSSS" +B NN ParameterStatus "DateStyle" "SSSS" +B 12 BackendKeyData NNNN 'BBBB' +B 5 ReadyForQuery I +F 70 Query "SET protocol_backend_compression_allowed_algorithms = 'zstd,lz4';" +B NN ErrorResponse S "ERROR" V "ERROR" C "22023" M "invalid value for parameter "protocol_backend_compression_allowed_algorithms": "zstd,lz4"" D "zstd compression is not supported by this build" F "SSSS" L "SSSS" R "SSSS" \x00 +B 5 ReadyForQuery I +F 104 Query "SELECT current_setting('protocol_backend_compression_allowed_algorithms')!='zstd,lz4' AS skip_test " +B 34 RowDescription 1 "skip_test" NNNN 0 NNNN 1 -1 0 +B 11 DataRow 1 1 't' +B 13 CommandComplete "SELECT 1" +B 5 ReadyForQuery I +F 4 Terminate diff --git a/src/test/trace/expected/protocol_compression_lz4.out b/src/test/trace/expected/protocol_compression_lz4.out new file mode 100644 index 00000000000..a2c544bcbd1 --- /dev/null +++ b/src/test/trace/expected/protocol_compression_lz4.out @@ -0,0 +1,114 @@ + ?column? +---------- + 1 +(1 row) + +WARNING: SET LOCAL can only be used in transaction blocks + ?column? +---------- + 1 +(1 row) + + ?column? +---------- + 1 +(1 row) + + text | ?column? | numeric | interval +------+----------+---------+---------- + 1 | 42 | 1 | @ 1 sec +(1 row) + +1 +2 +3 + ?column? +---------- + 1 +(1 row) + + repeat +------------------------------------------------------------------------------------------------------ + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +(1 row) + +ERROR: division by zero +ERROR: division by zero + ?column? +---------- + 1 +(1 row) + + generate_series +----------------- + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 +(10 rows) + + ?column? +---------- + 1 +(1 row) + + repeat +------------------------------------------ + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +(1 row) + + repeat +------------------------------------------ + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +(1 row) + + repeat +------------------------------------------ + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +(1 row) + + ?column? +---------- + 1 +(1 row) + + generate_series +----------------- + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 +(10 rows) + + ?column? +---------- + 1 +(1 row) + + repeat +------------------------------------------ + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +(1 row) + + repeat +------------------------------------------ + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +(1 row) + + repeat +------------------------------------------ + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +(1 row) + diff --git a/src/test/trace/expected/protocol_compression_lz4.trace b/src/test/trace/expected/protocol_compression_lz4.trace new file mode 100644 index 00000000000..42934e39bcd --- /dev/null +++ b/src/test/trace/expected/protocol_compression_lz4.trace @@ -0,0 +1,341 @@ +F NN StartupMessage 3 0 "user" "SSSS" "database" "SSSS" "options" "SSSS" "application_name" "SSSS" "_pq_.supported_compressions" "SSSS" "datestyle" "SSSS" "timezone" "SSSS" +B NN ParameterStatus "IntervalStyle" "SSSS" +B NN ParameterStatus "search_path" "SSSS" +B NN ParameterStatus "is_superuser" "SSSS" +B NN ParameterStatus "standard_conforming_strings" "SSSS" +B NN ParameterStatus "session_authorization" "SSSS" +B NN ParameterStatus "client_encoding" "SSSS" +B NN ParameterStatus "server_version" "SSSS" +B NN ParameterStatus "server_encoding" "SSSS" +B NN ParameterStatus "in_hot_standby" "SSSS" +B NN ParameterStatus "integer_datetimes" "SSSS" +B NN ParameterStatus "TimeZone" "SSSS" +B NN ParameterStatus "application_name" "SSSS" +B NN ParameterStatus "default_transaction_read_only" "SSSS" +B NN ParameterStatus "scram_iterations" "SSSS" +B NN ParameterStatus "DateStyle" "SSSS" +B 12 BackendKeyData NNNN 'BBBB' +B 5 ReadyForQuery I +F 65 Query "SET protocol_backend_compression_allowed_algorithms = 'lz4';" +B 8 CommandComplete "SET" +B 5 ReadyForQuery I +F 99 Query "SELECT current_setting('protocol_backend_compression_allowed_algorithms')!='lz4' AS skip_test " +B 34 RowDescription 1 "skip_test" NNNN 0 NNNN 1 -1 0 +B 11 DataRow 1 1 'f' +B 13 CommandComplete "SELECT 1" +B 5 ReadyForQuery I +F 44 Query "SET protocol_backend_compression='lz4';" +B 8 CommandComplete "SET" +B 5 ReadyForQuery I +F 52 Query "SET protocol_backend_compression_threshold=100;" +B 8 CommandComplete "SET" +B 5 ReadyForQuery I +F 20 Parse "one" "SELECT 1 " 0 +F 48 Parse "" "SET protocol_backend_compression='none';" 0 +F 14 Bind "" "" 0 0 1 0 +F 6 Describe P "" +F 9 Execute "" 0 +F 4 Sync +B 4 ParseComplete +B 4 ParseComplete +B 4 BindComplete +B 4 NoData +B 8 CommandComplete "SET" +B 5 ReadyForQuery I +F 50 Query "SET protocol_backend_compression_threshold=0;" +B 8 CommandComplete "SET" +B 5 ReadyForQuery I +F 11 Query "BEGIN;" +B 10 CommandComplete "BEGIN" +B 5 ReadyForQuery T +F 50 Query "SET LOCAL protocol_backend_compression='lz4';" +B 8 CommandComplete "SET" +B 5 ReadyForQuery T +F 14 Query "SELECT 1;" +B* 33 RowDescription 1 "?column?" NNNN 0 NNNN 4 -1 0 +B* 11 DataRow 1 1 '1' +B NN CompressedMessages \x02 "TD" 'BBBB' +B 13 CommandComplete "SELECT 1" +B 5 ReadyForQuery T +F 12 Query "COMMIT;" +B NN CompressedMessages \x02 "" 'BBBB' +B 11 CommandComplete "COMMIT" +B 5 ReadyForQuery I +F 53 Parse "" "SET LOCAL protocol_backend_compression='lz4';" 0 +F 14 Bind "" "" 0 0 1 0 +F 6 Describe P "" +F 9 Execute "" 0 +F 17 Parse "" "SELECT 1;" 0 +F 14 Bind "" "" 0 0 1 0 +F 6 Describe P "" +F 9 Execute "" 0 +F 4 Sync +B 4 ParseComplete +B 4 BindComplete +B 4 NoData +B NN NoticeResponse S "WARNING" V "WARNING" C "25P01" M "SET LOCAL can only be used in transaction blocks" F "SSSS" L "SSSS" R "SSSS" \x00 +B 8 CommandComplete "SET" +B* 4 ParseComplete +B* 4 BindComplete +B* 33 RowDescription 1 "?column?" NNNN 0 NNNN 4 -1 0 +B* 11 DataRow 1 1 '1' +B NN CompressedMessages \x02 "12TD" 'BBBB' +B 13 CommandComplete "SELECT 1" +B NN CompressedMessages \x02 "" 'BBBB' +B 5 ReadyForQuery I +F 44 Query "SET protocol_backend_compression='lz4';" +B 8 CommandComplete "SET" +B 5 ReadyForQuery I +F 50 Query "SET protocol_backend_compression_threshold=0;" +B 8 CommandComplete "SET" +B 5 ReadyForQuery I +F 14 Query "SELECT 1;" +B* 33 RowDescription 1 "?column?" NNNN 0 NNNN 4 -1 0 +B* 11 DataRow 1 1 '1' +B NN CompressedMessages \x02 "TD" 'BBBB' +B 13 CommandComplete "SELECT 1" +B 5 ReadyForQuery I +F 61 Parse "" "SELECT $1::text, '42', $1::numeric, interval '1 sec' " 0 +F 19 Bind "" "" 0 1 1 '1' 1 0 +F 6 Describe P "" +F 9 Execute "" 0 +F 4 Sync +B* 4 ParseComplete +B* 4 BindComplete +B* 109 RowDescription 4 "text" NNNN 0 NNNN 65535 -1 0 "?column?" NNNN 0 NNNN 65535 -1 0 "numeric" NNNN 0 NNNN 65535 -1 0 "interval" NNNN 0 NNNN 16 -1 0 +B* 33 DataRow 4 1 '1' 2 '42' 1 '1' 7 '@ 1 sec' +B NN CompressedMessages \x02 "12TD" 'BBBB' +B 13 CommandComplete "SELECT 1" +B 5 ReadyForQuery I +F 86 Query "COPY ( SELECT *, repeat ( ' ' , 80 ) FROM generate_series ( 1, 3 ) ) TO STDOUT ;" +B* 11 CopyOutResponse \x00 2 0 0 +B* 87 CopyData 'BBBB' +B* 87 CopyData 'BBBB' +B* 87 CopyData 'BBBB' +B* 4 CopyDone +B NN CompressedMessages \x02 "Hdddc" 'BBBB' +B 11 CommandComplete "COPY 3" +B 5 ReadyForQuery I +F 21 Query "LISTEN test_lz4;" +B 11 CommandComplete "LISTEN" +B 5 ReadyForQuery I +F 29 Query "NOTIFY test_lz4, 'test';" +B 11 CommandComplete "NOTIFY" +B* 22 NotificationResponse NNNN "test_lz4" "test" +B NN CompressedMessages \x02 "A" 'BBBB' +B 5 ReadyForQuery I +F 23 Query "UNLISTEN test_lz4;" +B 13 CommandComplete "UNLISTEN" +B 5 ReadyForQuery I +F 62 Query "SET protocol_backend_compression_allowed_algorithms = '';" +B 8 CommandComplete "SET" +B 5 ReadyForQuery I +F 14 Query "SELECT 1;" +B* 33 RowDescription 1 "?column?" NNNN 0 NNNN 4 -1 0 +B* 11 DataRow 1 1 '1' +B NN CompressedMessages \x02 "TD" 'BBBB' +B 13 CommandComplete "SELECT 1" +B 5 ReadyForQuery I +F 65 Query "SET protocol_backend_compression_allowed_algorithms = 'lz4';" +B 8 CommandComplete "SET" +B 5 ReadyForQuery I +F 21 Parse "test" "SELECT 1 " 0 +F 4 Flush +B* 4 ParseComplete +B NN CompressedMessages \x02 "1" 'BBBB' +F 32 Parse "" "SELECT repeat('a', 100);" 0 +F 14 Bind "" "" 0 0 1 0 +F 6 Describe P "" +F 9 Execute "" 0 +F 4 Sync +B* 4 ParseComplete +B* 4 BindComplete +B* 31 RowDescription 1 "repeat" NNNN 0 NNNN 65535 -1 0 +B* 110 DataRow 1 100 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' +B NN CompressedMessages \x02 "12TD" 'BBBB' +B 13 CommandComplete "SELECT 1" +B 5 ReadyForQuery I +F 36 Query "SET debug_parallel_query=false;" +B 8 CommandComplete "SET" +B 5 ReadyForQuery I +F 53 Query "SET protocol_backend_compression_threshold=1000;" +B 8 CommandComplete "SET" +B 5 ReadyForQuery I +F 57 Query "select 1 / i FROM generate_series(2, 0, -1) AS a(i);" +B 33 RowDescription 1 "?column?" NNNN 0 NNNN 4 -1 0 +B 11 DataRow 1 1 '0' +B 11 DataRow 1 1 '1' +B NN ErrorResponse S "ERROR" V "ERROR" C "22012" M "division by zero" F "SSSS" L "SSSS" R "SSSS" \x00 +B 5 ReadyForQuery I +F 50 Query "SET protocol_backend_compression_threshold=5;" +B 8 CommandComplete "SET" +B 5 ReadyForQuery I +F 57 Query "select 1 / i FROM generate_series(2, 0, -1) AS a(i);" +B* 33 RowDescription 1 "?column?" NNNN 0 NNNN 4 -1 0 +B* 11 DataRow 1 1 '0' +B* 11 DataRow 1 1 '1' +B NN CompressedMessages \x02 "TDD" 'BBBB' +B NN ErrorResponse S "ERROR" V "ERROR" C "22012" M "division by zero" F "SSSS" L "SSSS" R "SSSS" \x00 +B 5 ReadyForQuery I +F 32 Query "RESET debug_parallel_query;" +B 10 CommandComplete "RESET" +B 5 ReadyForQuery I +F 45 Query "SET protocol_backend_compression='none';" +B NN CompressedMessages \x02 "" 'BBBB' +B 8 CommandComplete "SET" +B 5 ReadyForQuery I +F 14 Query "SELECT 1;" +B 33 RowDescription 1 "?column?" NNNN 0 NNNN 4 -1 0 +B 11 DataRow 1 1 '1' +B 13 CommandComplete "SELECT 1" +B 5 ReadyForQuery I +F 44 Query "SET protocol_backend_compression='lz4';" +B 8 CommandComplete "SET" +B 5 ReadyForQuery I +F 56 Query "SET protocol_backend_compression_number_messages=5;" +B 8 CommandComplete "SET" +B 5 ReadyForQuery I +F 42 Query "SELECT * FROM generate_series(1, 10);" +B* 40 RowDescription 1 "generate_series" NNNN 0 NNNN 4 -1 0 +B* 11 DataRow 1 1 '1' +B* 11 DataRow 1 1 '2' +B* 11 DataRow 1 1 '3' +B* 11 DataRow 1 1 '4' +B* 11 DataRow 1 1 '5' +B NN CompressedMessages \x02 "TDDDDD" 'BBBB' +B* 11 DataRow 1 1 '6' +B* 11 DataRow 1 1 '7' +B* 11 DataRow 1 1 '8' +B* 11 DataRow 1 1 '9' +B* 12 DataRow 1 2 '10' +B NN CompressedMessages \x02 "DDDDD" 'BBBB' +B 14 CommandComplete "SELECT 10" +B 5 ReadyForQuery I +F 56 Query "RESET protocol_backend_compression_number_messages;" +B 10 CommandComplete "RESET" +B 5 ReadyForQuery I +F 61 Query "SET protocol_backend_compression_transaction_frame=true;" +B 8 CommandComplete "SET" +B NN CompressedMessages \x02 "" 'BBBB' +B 5 ReadyForQuery I +F 51 Query "SET protocol_backend_compression_threshold=50;" +B 8 CommandComplete "SET" +B 5 ReadyForQuery I +F 14 Query "SELECT 1;" +B 33 RowDescription 1 "?column?" NNNN 0 NNNN 4 -1 0 +B 11 DataRow 1 1 '1' +B 13 CommandComplete "SELECT 1" +B 5 ReadyForQuery I +F 11 Query "BEGIN;" +B 10 CommandComplete "BEGIN" +B 5 ReadyForQuery T +F 28 Query "SELECT repeat('a', 40);" +B* 31 RowDescription 1 "repeat" NNNN 0 NNNN 65535 -1 0 +B* 50 DataRow 1 40 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' +B NN CompressedMessages \x02 "TD" 'BBBB' +B 13 CommandComplete "SELECT 1" +B 5 ReadyForQuery T +F 12 Query "COMMIT;" +B 11 CommandComplete "COMMIT" +B NN CompressedMessages \x02 "" 'BBBB' +B 5 ReadyForQuery I +F 11 Query "BEGIN;" +B 10 CommandComplete "BEGIN" +B 5 ReadyForQuery T +F 28 Query "SELECT repeat('a', 40);" +B* 31 RowDescription 1 "repeat" NNNN 0 NNNN 65535 -1 0 +B* 50 DataRow 1 40 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' +B NN CompressedMessages \x02 "TD" 'BBBB' +B 13 CommandComplete "SELECT 1" +B 5 ReadyForQuery T +F 14 Query "ROLLBACK;" +B 13 CommandComplete "ROLLBACK" +B NN CompressedMessages \x02 "" 'BBBB' +B 5 ReadyForQuery I +F 28 Query "SELECT repeat('a', 40);" +B* 31 RowDescription 1 "repeat" NNNN 0 NNNN 65535 -1 0 +B* 50 DataRow 1 40 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' +B NN CompressedMessages \x02 "TD" 'BBBB' +B 13 CommandComplete "SELECT 1" +B NN CompressedMessages \x02 "" 'BBBB' +B 5 ReadyForQuery I +F 14 Query "SELECT 1;" +B 33 RowDescription 1 "?column?" NNNN 0 NNNN 4 -1 0 +B 11 DataRow 1 1 '1' +B 13 CommandComplete "SELECT 1" +B 5 ReadyForQuery I +F 56 Query "SET protocol_backend_compression_number_messages=5;" +B 8 CommandComplete "SET" +B 5 ReadyForQuery I +F 42 Query "SELECT * FROM generate_series(1, 10);" +B* 40 RowDescription 1 "generate_series" NNNN 0 NNNN 4 -1 0 +B* 11 DataRow 1 1 '1' +B* 11 DataRow 1 1 '2' +B* 11 DataRow 1 1 '3' +B* 11 DataRow 1 1 '4' +B* 11 DataRow 1 1 '5' +B NN CompressedMessages \x02 "TDDDDD" 'BBBB' +B* 11 DataRow 1 1 '6' +B* 11 DataRow 1 1 '7' +B* 11 DataRow 1 1 '8' +B* 11 DataRow 1 1 '9' +B* 12 DataRow 1 2 '10' +B NN CompressedMessages \x02 "DDDDD" 'BBBB' +B 14 CommandComplete "SELECT 10" +B NN CompressedMessages \x02 "" 'BBBB' +B 5 ReadyForQuery I +F 56 Query "RESET protocol_backend_compression_number_messages;" +B 10 CommandComplete "RESET" +B 5 ReadyForQuery I +F 62 Query "SET protocol_backend_compression_transaction_frame=false;" +B 8 CommandComplete "SET" +B 5 ReadyForQuery I +F 14 Query "SELECT 1;" +B 33 RowDescription 1 "?column?" NNNN 0 NNNN 4 -1 0 +B 11 DataRow 1 1 '1' +B 13 CommandComplete "SELECT 1" +B 5 ReadyForQuery I +F 11 Query "BEGIN;" +B 10 CommandComplete "BEGIN" +B 5 ReadyForQuery T +F 28 Query "SELECT repeat('a', 40);" +B* 31 RowDescription 1 "repeat" NNNN 0 NNNN 65535 -1 0 +B* 50 DataRow 1 40 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' +B NN CompressedMessages \x02 "TD" 'BBBB' +B 13 CommandComplete "SELECT 1" +B 5 ReadyForQuery T +F 12 Query "COMMIT;" +B 11 CommandComplete "COMMIT" +B 5 ReadyForQuery I +F 11 Query "BEGIN;" +B 10 CommandComplete "BEGIN" +B 5 ReadyForQuery T +F 28 Query "SELECT repeat('a', 40);" +B* 31 RowDescription 1 "repeat" NNNN 0 NNNN 65535 -1 0 +B* 50 DataRow 1 40 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' +B NN CompressedMessages \x02 "TD" 'BBBB' +B 13 CommandComplete "SELECT 1" +B 5 ReadyForQuery T +F 14 Query "ROLLBACK;" +B 13 CommandComplete "ROLLBACK" +B 5 ReadyForQuery I +F 28 Query "SELECT repeat('a', 40);" +B* 31 RowDescription 1 "repeat" NNNN 0 NNNN 65535 -1 0 +B* 50 DataRow 1 40 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' +B NN CompressedMessages \x02 "TD" 'BBBB' +B 13 CommandComplete "SELECT 1" +B 5 ReadyForQuery I +F 50 Query "RESET protocol_backend_compression_threshold;" +B 10 CommandComplete "RESET" +B 5 ReadyForQuery I +F 56 Query "RESET protocol_backend_compression_number_messages;" +B 10 CommandComplete "RESET" +B 5 ReadyForQuery I +F 58 Query "RESET protocol_backend_compression_transaction_frame;" +B 10 CommandComplete "RESET" +B 5 ReadyForQuery I +F 40 Query "RESET protocol_backend_compression;" +B NN CompressedMessages \x02 "" 'BBBB' +B 10 CommandComplete "RESET" +B 5 ReadyForQuery I +F 4 Terminate diff --git a/src/test/trace/expected/protocol_compression_lz4_1.out b/src/test/trace/expected/protocol_compression_lz4_1.out new file mode 100644 index 00000000000..ec253b9f58b --- /dev/null +++ b/src/test/trace/expected/protocol_compression_lz4_1.out @@ -0,0 +1,3 @@ +ERROR: invalid value for parameter "protocol_backend_compression_allowed_algorithms": "lz4" +DETAIL: lz4 compression is not supported by this build +*** skipping protocol compression tests with lz4 (not supported) *** diff --git a/src/test/trace/expected/protocol_compression_lz4_1.trace b/src/test/trace/expected/protocol_compression_lz4_1.trace new file mode 100644 index 00000000000..3079b3e1637 --- /dev/null +++ b/src/test/trace/expected/protocol_compression_lz4_1.trace @@ -0,0 +1,27 @@ +F NN StartupMessage 3 0 "user" "SSSS" "database" "SSSS" "options" "SSSS" "application_name" "SSSS" "_pq_.supported_compressions" "SSSS" "datestyle" "SSSS" "timezone" "SSSS" +B NN ParameterStatus "IntervalStyle" "SSSS" +B NN ParameterStatus "search_path" "SSSS" +B NN ParameterStatus "is_superuser" "SSSS" +B NN ParameterStatus "standard_conforming_strings" "SSSS" +B NN ParameterStatus "session_authorization" "SSSS" +B NN ParameterStatus "client_encoding" "SSSS" +B NN ParameterStatus "server_version" "SSSS" +B NN ParameterStatus "server_encoding" "SSSS" +B NN ParameterStatus "in_hot_standby" "SSSS" +B NN ParameterStatus "integer_datetimes" "SSSS" +B NN ParameterStatus "TimeZone" "SSSS" +B NN ParameterStatus "application_name" "SSSS" +B NN ParameterStatus "default_transaction_read_only" "SSSS" +B NN ParameterStatus "scram_iterations" "SSSS" +B NN ParameterStatus "DateStyle" "SSSS" +B 12 BackendKeyData NNNN 'BBBB' +B 5 ReadyForQuery I +F 65 Query "SET protocol_backend_compression_allowed_algorithms = 'lz4';" +B NN ErrorResponse S "ERROR" V "ERROR" C "22023" M "invalid value for parameter "protocol_backend_compression_allowed_algorithms": "lz4"" D "lz4 compression is not supported by this build" F "SSSS" L "SSSS" R "SSSS" \x00 +B 5 ReadyForQuery I +F 99 Query "SELECT current_setting('protocol_backend_compression_allowed_algorithms')!='lz4' AS skip_test " +B 34 RowDescription 1 "skip_test" NNNN 0 NNNN 1 -1 0 +B 11 DataRow 1 1 't' +B 13 CommandComplete "SELECT 1" +B 5 ReadyForQuery I +F 4 Terminate diff --git a/src/test/trace/expected/protocol_compression_lz4_3.trace b/src/test/trace/expected/protocol_compression_lz4_3.trace new file mode 100644 index 00000000000..8ee26ec01f2 --- /dev/null +++ b/src/test/trace/expected/protocol_compression_lz4_3.trace @@ -0,0 +1,27 @@ +F NN StartupMessage 3 0 "user" "SSSS" "database" "SSSS" "options" "SSSS" "application_name" "SSSS" "datestyle" "SSSS" "timezone" "SSSS" +B NN ParameterStatus "IntervalStyle" "SSSS" +B NN ParameterStatus "search_path" "SSSS" +B NN ParameterStatus "is_superuser" "SSSS" +B NN ParameterStatus "standard_conforming_strings" "SSSS" +B NN ParameterStatus "session_authorization" "SSSS" +B NN ParameterStatus "client_encoding" "SSSS" +B NN ParameterStatus "server_version" "SSSS" +B NN ParameterStatus "server_encoding" "SSSS" +B NN ParameterStatus "in_hot_standby" "SSSS" +B NN ParameterStatus "integer_datetimes" "SSSS" +B NN ParameterStatus "TimeZone" "SSSS" +B NN ParameterStatus "application_name" "SSSS" +B NN ParameterStatus "default_transaction_read_only" "SSSS" +B NN ParameterStatus "scram_iterations" "SSSS" +B NN ParameterStatus "DateStyle" "SSSS" +B 12 BackendKeyData NNNN 'BBBB' +B 5 ReadyForQuery I +F 65 Query "SET protocol_backend_compression_allowed_algorithms = 'lz4';" +B NN ErrorResponse S "ERROR" V "ERROR" C "22023" M "invalid value for parameter "protocol_backend_compression_allowed_algorithms": "lz4"" D "lz4 compression is not supported by this build" F "SSSS" L "SSSS" R "SSSS" \x00 +B 5 ReadyForQuery I +F 99 Query "SELECT current_setting('protocol_backend_compression_allowed_algorithms')!='lz4' AS skip_test " +B 34 RowDescription 1 "skip_test" NNNN 0 NNNN 1 -1 0 +B 11 DataRow 1 1 't' +B 13 CommandComplete "SELECT 1" +B 5 ReadyForQuery I +F 4 Terminate diff --git a/src/test/trace/expected/protocol_compression_switch.out b/src/test/trace/expected/protocol_compression_switch.out new file mode 100644 index 00000000000..864b641121d --- /dev/null +++ b/src/test/trace/expected/protocol_compression_switch.out @@ -0,0 +1,10 @@ + ?column? +---------- + 1 +(1 row) + + ?column? +---------- + 1 +(1 row) + diff --git a/src/test/trace/expected/protocol_compression_switch.trace b/src/test/trace/expected/protocol_compression_switch.trace new file mode 100644 index 00000000000..d0b1008ae37 --- /dev/null +++ b/src/test/trace/expected/protocol_compression_switch.trace @@ -0,0 +1,59 @@ +F NN StartupMessage 3 0 "user" "SSSS" "database" "SSSS" "options" "SSSS" "application_name" "SSSS" "_pq_.supported_compressions" "SSSS" "datestyle" "SSSS" "timezone" "SSSS" +B NN ParameterStatus "IntervalStyle" "SSSS" +B NN ParameterStatus "search_path" "SSSS" +B NN ParameterStatus "is_superuser" "SSSS" +B NN ParameterStatus "standard_conforming_strings" "SSSS" +B NN ParameterStatus "session_authorization" "SSSS" +B NN ParameterStatus "client_encoding" "SSSS" +B NN ParameterStatus "server_version" "SSSS" +B NN ParameterStatus "server_encoding" "SSSS" +B NN ParameterStatus "in_hot_standby" "SSSS" +B NN ParameterStatus "integer_datetimes" "SSSS" +B NN ParameterStatus "TimeZone" "SSSS" +B NN ParameterStatus "application_name" "SSSS" +B NN ParameterStatus "default_transaction_read_only" "SSSS" +B NN ParameterStatus "scram_iterations" "SSSS" +B NN ParameterStatus "DateStyle" "SSSS" +B 12 BackendKeyData NNNN 'BBBB' +B 5 ReadyForQuery I +F 70 Query "SET protocol_backend_compression_allowed_algorithms = 'zstd,lz4';" +B 8 CommandComplete "SET" +B 5 ReadyForQuery I +F 104 Query "SELECT current_setting('protocol_backend_compression_allowed_algorithms')!='zstd,lz4' AS skip_test " +B 34 RowDescription 1 "skip_test" NNNN 0 NNNN 1 -1 0 +B 11 DataRow 1 1 'f' +B 13 CommandComplete "SELECT 1" +B 5 ReadyForQuery I +F 45 Query "SET protocol_backend_compression='zstd';" +B 8 CommandComplete "SET" +B 5 ReadyForQuery I +F 50 Query "SET protocol_backend_compression_threshold=0;" +B 8 CommandComplete "SET" +B 5 ReadyForQuery I +F 14 Query "SELECT 1;" +B* 33 RowDescription 1 "?column?" NNNN 0 NNNN 4 -1 0 +B* 11 DataRow 1 1 '1' +B NN CompressedMessages \x03 "TD" 'BBBB' +B 13 CommandComplete "SELECT 1" +B 5 ReadyForQuery I +F 44 Query "SET protocol_backend_compression='lz4';" +B NN CompressedMessages \x03 "" 'BBBB' +B 8 CommandComplete "SET" +B 5 ReadyForQuery I +F 14 Query "SELECT 1;" +B* 33 RowDescription 1 "?column?" NNNN 0 NNNN 4 -1 0 +B* 11 DataRow 1 1 '1' +B NN CompressedMessages \x02 "TD" 'BBBB' +B 13 CommandComplete "SELECT 1" +B 5 ReadyForQuery I +F 45 Query "SET protocol_backend_compression='zstd';" +B NN CompressedMessages \x02 "" 'BBBB' +B 8 CommandComplete "SET" +B 5 ReadyForQuery I +F 56 Query "RESET protocol_backend_compression_number_messages;" +B 10 CommandComplete "RESET" +B 5 ReadyForQuery I +F 40 Query "RESET protocol_backend_compression;" +B 10 CommandComplete "RESET" +B 5 ReadyForQuery I +F 4 Terminate diff --git a/src/test/trace/expected/protocol_compression_switch_1.out b/src/test/trace/expected/protocol_compression_switch_1.out new file mode 100644 index 00000000000..ae7d5aea7b0 --- /dev/null +++ b/src/test/trace/expected/protocol_compression_switch_1.out @@ -0,0 +1,3 @@ +ERROR: invalid value for parameter "protocol_backend_compression_allowed_algorithms": "zstd,lz4" +DETAIL: lz4 compression is not supported by this build +*** skipping protocol compression tests with lz4 and zstd (not supported) *** diff --git a/src/test/trace/expected/protocol_compression_switch_1.trace b/src/test/trace/expected/protocol_compression_switch_1.trace new file mode 100644 index 00000000000..5d5b4ed26c2 --- /dev/null +++ b/src/test/trace/expected/protocol_compression_switch_1.trace @@ -0,0 +1,27 @@ +F NN StartupMessage 3 0 "user" "SSSS" "database" "SSSS" "options" "SSSS" "application_name" "SSSS" "_pq_.supported_compressions" "SSSS" "datestyle" "SSSS" "timezone" "SSSS" +B NN ParameterStatus "IntervalStyle" "SSSS" +B NN ParameterStatus "search_path" "SSSS" +B NN ParameterStatus "is_superuser" "SSSS" +B NN ParameterStatus "standard_conforming_strings" "SSSS" +B NN ParameterStatus "session_authorization" "SSSS" +B NN ParameterStatus "client_encoding" "SSSS" +B NN ParameterStatus "server_version" "SSSS" +B NN ParameterStatus "server_encoding" "SSSS" +B NN ParameterStatus "in_hot_standby" "SSSS" +B NN ParameterStatus "integer_datetimes" "SSSS" +B NN ParameterStatus "TimeZone" "SSSS" +B NN ParameterStatus "application_name" "SSSS" +B NN ParameterStatus "default_transaction_read_only" "SSSS" +B NN ParameterStatus "scram_iterations" "SSSS" +B NN ParameterStatus "DateStyle" "SSSS" +B 12 BackendKeyData NNNN 'BBBB' +B 5 ReadyForQuery I +F 70 Query "SET protocol_backend_compression_allowed_algorithms = 'zstd,lz4';" +B NN ErrorResponse S "ERROR" V "ERROR" C "22023" M "invalid value for parameter "protocol_backend_compression_allowed_algorithms": "zstd,lz4"" D "lz4 compression is not supported by this build" F "SSSS" L "SSSS" R "SSSS" \x00 +B 5 ReadyForQuery I +F 104 Query "SELECT current_setting('protocol_backend_compression_allowed_algorithms')!='zstd,lz4' AS skip_test " +B 34 RowDescription 1 "skip_test" NNNN 0 NNNN 1 -1 0 +B 11 DataRow 1 1 't' +B 13 CommandComplete "SELECT 1" +B 5 ReadyForQuery I +F 4 Terminate diff --git a/src/test/trace/expected/protocol_compression_switch_2.out b/src/test/trace/expected/protocol_compression_switch_2.out new file mode 100644 index 00000000000..6b038616713 --- /dev/null +++ b/src/test/trace/expected/protocol_compression_switch_2.out @@ -0,0 +1,3 @@ +ERROR: invalid value for parameter "protocol_backend_compression_allowed_algorithms": "zstd,lz4" +DETAIL: zstd compression is not supported by this build +*** skipping protocol compression tests with lz4 and zstd (not supported) *** diff --git a/src/test/trace/expected/protocol_compression_switch_2.trace b/src/test/trace/expected/protocol_compression_switch_2.trace new file mode 100644 index 00000000000..d3b6dd36a79 --- /dev/null +++ b/src/test/trace/expected/protocol_compression_switch_2.trace @@ -0,0 +1,27 @@ +F NN StartupMessage 3 0 "user" "SSSS" "database" "SSSS" "options" "SSSS" "application_name" "SSSS" "_pq_.supported_compressions" "SSSS" "datestyle" "SSSS" "timezone" "SSSS" +B NN ParameterStatus "IntervalStyle" "SSSS" +B NN ParameterStatus "search_path" "SSSS" +B NN ParameterStatus "is_superuser" "SSSS" +B NN ParameterStatus "standard_conforming_strings" "SSSS" +B NN ParameterStatus "session_authorization" "SSSS" +B NN ParameterStatus "client_encoding" "SSSS" +B NN ParameterStatus "server_version" "SSSS" +B NN ParameterStatus "server_encoding" "SSSS" +B NN ParameterStatus "in_hot_standby" "SSSS" +B NN ParameterStatus "integer_datetimes" "SSSS" +B NN ParameterStatus "TimeZone" "SSSS" +B NN ParameterStatus "application_name" "SSSS" +B NN ParameterStatus "default_transaction_read_only" "SSSS" +B NN ParameterStatus "scram_iterations" "SSSS" +B NN ParameterStatus "DateStyle" "SSSS" +B 12 BackendKeyData NNNN 'BBBB' +B 5 ReadyForQuery I +F 70 Query "SET protocol_backend_compression_allowed_algorithms = 'zstd,lz4';" +B NN ErrorResponse S "ERROR" V "ERROR" C "22023" M "invalid value for parameter "protocol_backend_compression_allowed_algorithms": "zstd,lz4"" D "zstd compression is not supported by this build" F "SSSS" L "SSSS" R "SSSS" \x00 +B 5 ReadyForQuery I +F 104 Query "SELECT current_setting('protocol_backend_compression_allowed_algorithms')!='zstd,lz4' AS skip_test " +B 34 RowDescription 1 "skip_test" NNNN 0 NNNN 1 -1 0 +B 11 DataRow 1 1 't' +B 13 CommandComplete "SELECT 1" +B 5 ReadyForQuery I +F 4 Terminate diff --git a/src/test/trace/expected/protocol_compression_switch_3.trace b/src/test/trace/expected/protocol_compression_switch_3.trace new file mode 100644 index 00000000000..ab3fd70d9b1 --- /dev/null +++ b/src/test/trace/expected/protocol_compression_switch_3.trace @@ -0,0 +1,27 @@ +F NN StartupMessage 3 0 "user" "SSSS" "database" "SSSS" "options" "SSSS" "application_name" "SSSS" "datestyle" "SSSS" "timezone" "SSSS" +B NN ParameterStatus "IntervalStyle" "SSSS" +B NN ParameterStatus "search_path" "SSSS" +B NN ParameterStatus "is_superuser" "SSSS" +B NN ParameterStatus "standard_conforming_strings" "SSSS" +B NN ParameterStatus "session_authorization" "SSSS" +B NN ParameterStatus "client_encoding" "SSSS" +B NN ParameterStatus "server_version" "SSSS" +B NN ParameterStatus "server_encoding" "SSSS" +B NN ParameterStatus "in_hot_standby" "SSSS" +B NN ParameterStatus "integer_datetimes" "SSSS" +B NN ParameterStatus "TimeZone" "SSSS" +B NN ParameterStatus "application_name" "SSSS" +B NN ParameterStatus "default_transaction_read_only" "SSSS" +B NN ParameterStatus "scram_iterations" "SSSS" +B NN ParameterStatus "DateStyle" "SSSS" +B 12 BackendKeyData NNNN 'BBBB' +B 5 ReadyForQuery I +F 70 Query "SET protocol_backend_compression_allowed_algorithms = 'zstd,lz4';" +B NN ErrorResponse S "ERROR" V "ERROR" C "22023" M "invalid value for parameter "protocol_backend_compression_allowed_algorithms": "zstd,lz4"" D "zstd compression is not supported by this build" F "SSSS" L "SSSS" R "SSSS" \x00 +B 5 ReadyForQuery I +F 104 Query "SELECT current_setting('protocol_backend_compression_allowed_algorithms')!='zstd,lz4' AS skip_test " +B 34 RowDescription 1 "skip_test" NNNN 0 NNNN 1 -1 0 +B 11 DataRow 1 1 't' +B 13 CommandComplete "SELECT 1" +B 5 ReadyForQuery I +F 4 Terminate diff --git a/src/test/trace/expected/protocol_compression_zstd.out b/src/test/trace/expected/protocol_compression_zstd.out new file mode 100644 index 00000000000..a2c544bcbd1 --- /dev/null +++ b/src/test/trace/expected/protocol_compression_zstd.out @@ -0,0 +1,114 @@ + ?column? +---------- + 1 +(1 row) + +WARNING: SET LOCAL can only be used in transaction blocks + ?column? +---------- + 1 +(1 row) + + ?column? +---------- + 1 +(1 row) + + text | ?column? | numeric | interval +------+----------+---------+---------- + 1 | 42 | 1 | @ 1 sec +(1 row) + +1 +2 +3 + ?column? +---------- + 1 +(1 row) + + repeat +------------------------------------------------------------------------------------------------------ + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +(1 row) + +ERROR: division by zero +ERROR: division by zero + ?column? +---------- + 1 +(1 row) + + generate_series +----------------- + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 +(10 rows) + + ?column? +---------- + 1 +(1 row) + + repeat +------------------------------------------ + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +(1 row) + + repeat +------------------------------------------ + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +(1 row) + + repeat +------------------------------------------ + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +(1 row) + + ?column? +---------- + 1 +(1 row) + + generate_series +----------------- + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 +(10 rows) + + ?column? +---------- + 1 +(1 row) + + repeat +------------------------------------------ + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +(1 row) + + repeat +------------------------------------------ + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +(1 row) + + repeat +------------------------------------------ + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +(1 row) + diff --git a/src/test/trace/expected/protocol_compression_zstd.trace b/src/test/trace/expected/protocol_compression_zstd.trace new file mode 100644 index 00000000000..e94021e2b30 --- /dev/null +++ b/src/test/trace/expected/protocol_compression_zstd.trace @@ -0,0 +1,341 @@ +F NN StartupMessage 3 0 "user" "SSSS" "database" "SSSS" "options" "SSSS" "application_name" "SSSS" "_pq_.supported_compressions" "SSSS" "datestyle" "SSSS" "timezone" "SSSS" +B NN ParameterStatus "IntervalStyle" "SSSS" +B NN ParameterStatus "search_path" "SSSS" +B NN ParameterStatus "is_superuser" "SSSS" +B NN ParameterStatus "standard_conforming_strings" "SSSS" +B NN ParameterStatus "session_authorization" "SSSS" +B NN ParameterStatus "client_encoding" "SSSS" +B NN ParameterStatus "server_version" "SSSS" +B NN ParameterStatus "server_encoding" "SSSS" +B NN ParameterStatus "in_hot_standby" "SSSS" +B NN ParameterStatus "integer_datetimes" "SSSS" +B NN ParameterStatus "TimeZone" "SSSS" +B NN ParameterStatus "application_name" "SSSS" +B NN ParameterStatus "default_transaction_read_only" "SSSS" +B NN ParameterStatus "scram_iterations" "SSSS" +B NN ParameterStatus "DateStyle" "SSSS" +B 12 BackendKeyData NNNN 'BBBB' +B 5 ReadyForQuery I +F 66 Query "SET protocol_backend_compression_allowed_algorithms = 'zstd';" +B 8 CommandComplete "SET" +B 5 ReadyForQuery I +F 100 Query "SELECT current_setting('protocol_backend_compression_allowed_algorithms')!='zstd' AS skip_test " +B 34 RowDescription 1 "skip_test" NNNN 0 NNNN 1 -1 0 +B 11 DataRow 1 1 'f' +B 13 CommandComplete "SELECT 1" +B 5 ReadyForQuery I +F 45 Query "SET protocol_backend_compression='zstd';" +B 8 CommandComplete "SET" +B 5 ReadyForQuery I +F 52 Query "SET protocol_backend_compression_threshold=100;" +B 8 CommandComplete "SET" +B 5 ReadyForQuery I +F 20 Parse "one" "SELECT 1 " 0 +F 48 Parse "" "SET protocol_backend_compression='none';" 0 +F 14 Bind "" "" 0 0 1 0 +F 6 Describe P "" +F 9 Execute "" 0 +F 4 Sync +B 4 ParseComplete +B 4 ParseComplete +B 4 BindComplete +B 4 NoData +B 8 CommandComplete "SET" +B 5 ReadyForQuery I +F 50 Query "SET protocol_backend_compression_threshold=0;" +B 8 CommandComplete "SET" +B 5 ReadyForQuery I +F 11 Query "BEGIN;" +B 10 CommandComplete "BEGIN" +B 5 ReadyForQuery T +F 51 Query "SET LOCAL protocol_backend_compression='zstd';" +B 8 CommandComplete "SET" +B 5 ReadyForQuery T +F 14 Query "SELECT 1;" +B* 33 RowDescription 1 "?column?" NNNN 0 NNNN 4 -1 0 +B* 11 DataRow 1 1 '1' +B NN CompressedMessages \x03 "TD" 'BBBB' +B 13 CommandComplete "SELECT 1" +B 5 ReadyForQuery T +F 12 Query "COMMIT;" +B NN CompressedMessages \x03 "" 'BBBB' +B 11 CommandComplete "COMMIT" +B 5 ReadyForQuery I +F 54 Parse "" "SET LOCAL protocol_backend_compression='zstd';" 0 +F 14 Bind "" "" 0 0 1 0 +F 6 Describe P "" +F 9 Execute "" 0 +F 17 Parse "" "SELECT 1;" 0 +F 14 Bind "" "" 0 0 1 0 +F 6 Describe P "" +F 9 Execute "" 0 +F 4 Sync +B 4 ParseComplete +B 4 BindComplete +B 4 NoData +B NN NoticeResponse S "WARNING" V "WARNING" C "25P01" M "SET LOCAL can only be used in transaction blocks" F "SSSS" L "SSSS" R "SSSS" \x00 +B 8 CommandComplete "SET" +B* 4 ParseComplete +B* 4 BindComplete +B* 33 RowDescription 1 "?column?" NNNN 0 NNNN 4 -1 0 +B* 11 DataRow 1 1 '1' +B NN CompressedMessages \x03 "12TD" 'BBBB' +B 13 CommandComplete "SELECT 1" +B NN CompressedMessages \x03 "" 'BBBB' +B 5 ReadyForQuery I +F 45 Query "SET protocol_backend_compression='zstd';" +B 8 CommandComplete "SET" +B 5 ReadyForQuery I +F 50 Query "SET protocol_backend_compression_threshold=0;" +B 8 CommandComplete "SET" +B 5 ReadyForQuery I +F 14 Query "SELECT 1;" +B* 33 RowDescription 1 "?column?" NNNN 0 NNNN 4 -1 0 +B* 11 DataRow 1 1 '1' +B NN CompressedMessages \x03 "TD" 'BBBB' +B 13 CommandComplete "SELECT 1" +B 5 ReadyForQuery I +F 61 Parse "" "SELECT $1::text, '42', $1::numeric, interval '1 sec' " 0 +F 19 Bind "" "" 0 1 1 '1' 1 0 +F 6 Describe P "" +F 9 Execute "" 0 +F 4 Sync +B* 4 ParseComplete +B* 4 BindComplete +B* 109 RowDescription 4 "text" NNNN 0 NNNN 65535 -1 0 "?column?" NNNN 0 NNNN 65535 -1 0 "numeric" NNNN 0 NNNN 65535 -1 0 "interval" NNNN 0 NNNN 16 -1 0 +B* 33 DataRow 4 1 '1' 2 '42' 1 '1' 7 '@ 1 sec' +B NN CompressedMessages \x03 "12TD" 'BBBB' +B 13 CommandComplete "SELECT 1" +B 5 ReadyForQuery I +F 86 Query "COPY ( SELECT *, repeat ( ' ' , 80 ) FROM generate_series ( 1, 3 ) ) TO STDOUT ;" +B* 11 CopyOutResponse \x00 2 0 0 +B* 87 CopyData 'BBBB' +B* 87 CopyData 'BBBB' +B* 87 CopyData 'BBBB' +B* 4 CopyDone +B NN CompressedMessages \x03 "Hdddc" 'BBBB' +B 11 CommandComplete "COPY 3" +B 5 ReadyForQuery I +F 22 Query "LISTEN test_zstd;" +B 11 CommandComplete "LISTEN" +B 5 ReadyForQuery I +F 30 Query "NOTIFY test_zstd, 'test';" +B 11 CommandComplete "NOTIFY" +B* 23 NotificationResponse NNNN "test_zstd" "test" +B NN CompressedMessages \x03 "A" 'BBBB' +B 5 ReadyForQuery I +F 24 Query "UNLISTEN test_zstd;" +B 13 CommandComplete "UNLISTEN" +B 5 ReadyForQuery I +F 62 Query "SET protocol_backend_compression_allowed_algorithms = '';" +B 8 CommandComplete "SET" +B 5 ReadyForQuery I +F 14 Query "SELECT 1;" +B* 33 RowDescription 1 "?column?" NNNN 0 NNNN 4 -1 0 +B* 11 DataRow 1 1 '1' +B NN CompressedMessages \x03 "TD" 'BBBB' +B 13 CommandComplete "SELECT 1" +B 5 ReadyForQuery I +F 66 Query "SET protocol_backend_compression_allowed_algorithms = 'zstd';" +B 8 CommandComplete "SET" +B 5 ReadyForQuery I +F 21 Parse "test" "SELECT 1 " 0 +F 4 Flush +B* 4 ParseComplete +B NN CompressedMessages \x03 "1" 'BBBB' +F 32 Parse "" "SELECT repeat('a', 100);" 0 +F 14 Bind "" "" 0 0 1 0 +F 6 Describe P "" +F 9 Execute "" 0 +F 4 Sync +B* 4 ParseComplete +B* 4 BindComplete +B* 31 RowDescription 1 "repeat" NNNN 0 NNNN 65535 -1 0 +B* 110 DataRow 1 100 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' +B NN CompressedMessages \x03 "12TD" 'BBBB' +B 13 CommandComplete "SELECT 1" +B 5 ReadyForQuery I +F 36 Query "SET debug_parallel_query=false;" +B 8 CommandComplete "SET" +B 5 ReadyForQuery I +F 53 Query "SET protocol_backend_compression_threshold=1000;" +B 8 CommandComplete "SET" +B 5 ReadyForQuery I +F 57 Query "select 1 / i FROM generate_series(2, 0, -1) AS a(i);" +B 33 RowDescription 1 "?column?" NNNN 0 NNNN 4 -1 0 +B 11 DataRow 1 1 '0' +B 11 DataRow 1 1 '1' +B NN ErrorResponse S "ERROR" V "ERROR" C "22012" M "division by zero" F "SSSS" L "SSSS" R "SSSS" \x00 +B 5 ReadyForQuery I +F 50 Query "SET protocol_backend_compression_threshold=5;" +B 8 CommandComplete "SET" +B 5 ReadyForQuery I +F 57 Query "select 1 / i FROM generate_series(2, 0, -1) AS a(i);" +B* 33 RowDescription 1 "?column?" NNNN 0 NNNN 4 -1 0 +B* 11 DataRow 1 1 '0' +B* 11 DataRow 1 1 '1' +B NN CompressedMessages \x03 "TDD" 'BBBB' +B NN ErrorResponse S "ERROR" V "ERROR" C "22012" M "division by zero" F "SSSS" L "SSSS" R "SSSS" \x00 +B 5 ReadyForQuery I +F 32 Query "RESET debug_parallel_query;" +B 10 CommandComplete "RESET" +B 5 ReadyForQuery I +F 45 Query "SET protocol_backend_compression='none';" +B NN CompressedMessages \x03 "" 'BBBB' +B 8 CommandComplete "SET" +B 5 ReadyForQuery I +F 14 Query "SELECT 1;" +B 33 RowDescription 1 "?column?" NNNN 0 NNNN 4 -1 0 +B 11 DataRow 1 1 '1' +B 13 CommandComplete "SELECT 1" +B 5 ReadyForQuery I +F 45 Query "SET protocol_backend_compression='zstd';" +B 8 CommandComplete "SET" +B 5 ReadyForQuery I +F 56 Query "SET protocol_backend_compression_number_messages=5;" +B 8 CommandComplete "SET" +B 5 ReadyForQuery I +F 42 Query "SELECT * FROM generate_series(1, 10);" +B* 40 RowDescription 1 "generate_series" NNNN 0 NNNN 4 -1 0 +B* 11 DataRow 1 1 '1' +B* 11 DataRow 1 1 '2' +B* 11 DataRow 1 1 '3' +B* 11 DataRow 1 1 '4' +B* 11 DataRow 1 1 '5' +B NN CompressedMessages \x03 "TDDDDD" 'BBBB' +B* 11 DataRow 1 1 '6' +B* 11 DataRow 1 1 '7' +B* 11 DataRow 1 1 '8' +B* 11 DataRow 1 1 '9' +B* 12 DataRow 1 2 '10' +B NN CompressedMessages \x03 "DDDDD" 'BBBB' +B 14 CommandComplete "SELECT 10" +B 5 ReadyForQuery I +F 56 Query "RESET protocol_backend_compression_number_messages;" +B 10 CommandComplete "RESET" +B 5 ReadyForQuery I +F 61 Query "SET protocol_backend_compression_transaction_frame=true;" +B 8 CommandComplete "SET" +B NN CompressedMessages \x03 "" 'BBBB' +B 5 ReadyForQuery I +F 51 Query "SET protocol_backend_compression_threshold=50;" +B 8 CommandComplete "SET" +B 5 ReadyForQuery I +F 14 Query "SELECT 1;" +B 33 RowDescription 1 "?column?" NNNN 0 NNNN 4 -1 0 +B 11 DataRow 1 1 '1' +B 13 CommandComplete "SELECT 1" +B 5 ReadyForQuery I +F 11 Query "BEGIN;" +B 10 CommandComplete "BEGIN" +B 5 ReadyForQuery T +F 28 Query "SELECT repeat('a', 40);" +B* 31 RowDescription 1 "repeat" NNNN 0 NNNN 65535 -1 0 +B* 50 DataRow 1 40 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' +B NN CompressedMessages \x03 "TD" 'BBBB' +B 13 CommandComplete "SELECT 1" +B 5 ReadyForQuery T +F 12 Query "COMMIT;" +B 11 CommandComplete "COMMIT" +B NN CompressedMessages \x03 "" 'BBBB' +B 5 ReadyForQuery I +F 11 Query "BEGIN;" +B 10 CommandComplete "BEGIN" +B 5 ReadyForQuery T +F 28 Query "SELECT repeat('a', 40);" +B* 31 RowDescription 1 "repeat" NNNN 0 NNNN 65535 -1 0 +B* 50 DataRow 1 40 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' +B NN CompressedMessages \x03 "TD" 'BBBB' +B 13 CommandComplete "SELECT 1" +B 5 ReadyForQuery T +F 14 Query "ROLLBACK;" +B 13 CommandComplete "ROLLBACK" +B NN CompressedMessages \x03 "" 'BBBB' +B 5 ReadyForQuery I +F 28 Query "SELECT repeat('a', 40);" +B* 31 RowDescription 1 "repeat" NNNN 0 NNNN 65535 -1 0 +B* 50 DataRow 1 40 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' +B NN CompressedMessages \x03 "TD" 'BBBB' +B 13 CommandComplete "SELECT 1" +B NN CompressedMessages \x03 "" 'BBBB' +B 5 ReadyForQuery I +F 14 Query "SELECT 1;" +B 33 RowDescription 1 "?column?" NNNN 0 NNNN 4 -1 0 +B 11 DataRow 1 1 '1' +B 13 CommandComplete "SELECT 1" +B 5 ReadyForQuery I +F 56 Query "SET protocol_backend_compression_number_messages=5;" +B 8 CommandComplete "SET" +B 5 ReadyForQuery I +F 42 Query "SELECT * FROM generate_series(1, 10);" +B* 40 RowDescription 1 "generate_series" NNNN 0 NNNN 4 -1 0 +B* 11 DataRow 1 1 '1' +B* 11 DataRow 1 1 '2' +B* 11 DataRow 1 1 '3' +B* 11 DataRow 1 1 '4' +B* 11 DataRow 1 1 '5' +B NN CompressedMessages \x03 "TDDDDD" 'BBBB' +B* 11 DataRow 1 1 '6' +B* 11 DataRow 1 1 '7' +B* 11 DataRow 1 1 '8' +B* 11 DataRow 1 1 '9' +B* 12 DataRow 1 2 '10' +B NN CompressedMessages \x03 "DDDDD" 'BBBB' +B 14 CommandComplete "SELECT 10" +B NN CompressedMessages \x03 "" 'BBBB' +B 5 ReadyForQuery I +F 56 Query "RESET protocol_backend_compression_number_messages;" +B 10 CommandComplete "RESET" +B 5 ReadyForQuery I +F 62 Query "SET protocol_backend_compression_transaction_frame=false;" +B 8 CommandComplete "SET" +B 5 ReadyForQuery I +F 14 Query "SELECT 1;" +B 33 RowDescription 1 "?column?" NNNN 0 NNNN 4 -1 0 +B 11 DataRow 1 1 '1' +B 13 CommandComplete "SELECT 1" +B 5 ReadyForQuery I +F 11 Query "BEGIN;" +B 10 CommandComplete "BEGIN" +B 5 ReadyForQuery T +F 28 Query "SELECT repeat('a', 40);" +B* 31 RowDescription 1 "repeat" NNNN 0 NNNN 65535 -1 0 +B* 50 DataRow 1 40 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' +B NN CompressedMessages \x03 "TD" 'BBBB' +B 13 CommandComplete "SELECT 1" +B 5 ReadyForQuery T +F 12 Query "COMMIT;" +B 11 CommandComplete "COMMIT" +B 5 ReadyForQuery I +F 11 Query "BEGIN;" +B 10 CommandComplete "BEGIN" +B 5 ReadyForQuery T +F 28 Query "SELECT repeat('a', 40);" +B* 31 RowDescription 1 "repeat" NNNN 0 NNNN 65535 -1 0 +B* 50 DataRow 1 40 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' +B NN CompressedMessages \x03 "TD" 'BBBB' +B 13 CommandComplete "SELECT 1" +B 5 ReadyForQuery T +F 14 Query "ROLLBACK;" +B 13 CommandComplete "ROLLBACK" +B 5 ReadyForQuery I +F 28 Query "SELECT repeat('a', 40);" +B* 31 RowDescription 1 "repeat" NNNN 0 NNNN 65535 -1 0 +B* 50 DataRow 1 40 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' +B NN CompressedMessages \x03 "TD" 'BBBB' +B 13 CommandComplete "SELECT 1" +B 5 ReadyForQuery I +F 50 Query "RESET protocol_backend_compression_threshold;" +B 10 CommandComplete "RESET" +B 5 ReadyForQuery I +F 56 Query "RESET protocol_backend_compression_number_messages;" +B 10 CommandComplete "RESET" +B 5 ReadyForQuery I +F 58 Query "RESET protocol_backend_compression_transaction_frame;" +B 10 CommandComplete "RESET" +B 5 ReadyForQuery I +F 40 Query "RESET protocol_backend_compression;" +B NN CompressedMessages \x03 "" 'BBBB' +B 10 CommandComplete "RESET" +B 5 ReadyForQuery I +F 4 Terminate diff --git a/src/test/trace/expected/protocol_compression_zstd_1.out b/src/test/trace/expected/protocol_compression_zstd_1.out new file mode 100644 index 00000000000..1c1abb2f535 --- /dev/null +++ b/src/test/trace/expected/protocol_compression_zstd_1.out @@ -0,0 +1,3 @@ +ERROR: invalid value for parameter "protocol_backend_compression_allowed_algorithms": "zstd" +DETAIL: zstd compression is not supported by this build +*** skipping protocol compression tests with zstd (not supported) *** diff --git a/src/test/trace/expected/protocol_compression_zstd_1.trace b/src/test/trace/expected/protocol_compression_zstd_1.trace new file mode 100644 index 00000000000..44aedef9937 --- /dev/null +++ b/src/test/trace/expected/protocol_compression_zstd_1.trace @@ -0,0 +1,27 @@ +F NN StartupMessage 3 0 "user" "SSSS" "database" "SSSS" "options" "SSSS" "application_name" "SSSS" "_pq_.supported_compressions" "SSSS" "datestyle" "SSSS" "timezone" "SSSS" +B NN ParameterStatus "IntervalStyle" "SSSS" +B NN ParameterStatus "search_path" "SSSS" +B NN ParameterStatus "is_superuser" "SSSS" +B NN ParameterStatus "standard_conforming_strings" "SSSS" +B NN ParameterStatus "session_authorization" "SSSS" +B NN ParameterStatus "client_encoding" "SSSS" +B NN ParameterStatus "server_version" "SSSS" +B NN ParameterStatus "server_encoding" "SSSS" +B NN ParameterStatus "in_hot_standby" "SSSS" +B NN ParameterStatus "integer_datetimes" "SSSS" +B NN ParameterStatus "TimeZone" "SSSS" +B NN ParameterStatus "application_name" "SSSS" +B NN ParameterStatus "default_transaction_read_only" "SSSS" +B NN ParameterStatus "scram_iterations" "SSSS" +B NN ParameterStatus "DateStyle" "SSSS" +B 12 BackendKeyData NNNN 'BBBB' +B 5 ReadyForQuery I +F 66 Query "SET protocol_backend_compression_allowed_algorithms = 'zstd';" +B NN ErrorResponse S "ERROR" V "ERROR" C "22023" M "invalid value for parameter "protocol_backend_compression_allowed_algorithms": "zstd"" D "zstd compression is not supported by this build" F "SSSS" L "SSSS" R "SSSS" \x00 +B 5 ReadyForQuery I +F 100 Query "SELECT current_setting('protocol_backend_compression_allowed_algorithms')!='zstd' AS skip_test " +B 34 RowDescription 1 "skip_test" NNNN 0 NNNN 1 -1 0 +B 11 DataRow 1 1 't' +B 13 CommandComplete "SELECT 1" +B 5 ReadyForQuery I +F 4 Terminate diff --git a/src/test/trace/expected/protocol_compression_zstd_3.trace b/src/test/trace/expected/protocol_compression_zstd_3.trace new file mode 100644 index 00000000000..4e8ce2c3716 --- /dev/null +++ b/src/test/trace/expected/protocol_compression_zstd_3.trace @@ -0,0 +1,27 @@ +F NN StartupMessage 3 0 "user" "SSSS" "database" "SSSS" "options" "SSSS" "application_name" "SSSS" "datestyle" "SSSS" "timezone" "SSSS" +B NN ParameterStatus "IntervalStyle" "SSSS" +B NN ParameterStatus "search_path" "SSSS" +B NN ParameterStatus "is_superuser" "SSSS" +B NN ParameterStatus "standard_conforming_strings" "SSSS" +B NN ParameterStatus "session_authorization" "SSSS" +B NN ParameterStatus "client_encoding" "SSSS" +B NN ParameterStatus "server_version" "SSSS" +B NN ParameterStatus "server_encoding" "SSSS" +B NN ParameterStatus "in_hot_standby" "SSSS" +B NN ParameterStatus "integer_datetimes" "SSSS" +B NN ParameterStatus "TimeZone" "SSSS" +B NN ParameterStatus "application_name" "SSSS" +B NN ParameterStatus "default_transaction_read_only" "SSSS" +B NN ParameterStatus "scram_iterations" "SSSS" +B NN ParameterStatus "DateStyle" "SSSS" +B 12 BackendKeyData NNNN 'BBBB' +B 5 ReadyForQuery I +F 66 Query "SET protocol_backend_compression_allowed_algorithms = 'zstd';" +B NN ErrorResponse S "ERROR" V "ERROR" C "22023" M "invalid value for parameter "protocol_backend_compression_allowed_algorithms": "zstd"" D "zstd compression is not supported by this build" F "SSSS" L "SSSS" R "SSSS" \x00 +B 5 ReadyForQuery I +F 100 Query "SELECT current_setting('protocol_backend_compression_allowed_algorithms')!='zstd' AS skip_test " +B 34 RowDescription 1 "skip_test" NNNN 0 NNNN 1 -1 0 +B 11 DataRow 1 1 't' +B 13 CommandComplete "SELECT 1" +B 5 ReadyForQuery I +F 4 Terminate diff --git a/src/test/trace/sql/compress_transaction_frame.sql b/src/test/trace/sql/compress_transaction_frame.sql new file mode 100644 index 00000000000..7e7b2bded9f --- /dev/null +++ b/src/test/trace/sql/compress_transaction_frame.sql @@ -0,0 +1,45 @@ +-- Test compress transaction frame behavior + +SET protocol_backend_compression_allowed_algorithms = 'zstd,lz4'; +SELECT current_setting('protocol_backend_compression_allowed_algorithms')!='zstd,lz4' AS skip_test \gset +\if :skip_test + \echo '*** skipping compress transaction frame tests with zstd (not supported) ***' + \quit +\endif + +SET protocol_backend_compression='zstd'; +SET protocol_backend_compression_transaction_frame=true; + +-- No compression triggered, frame shouldn't be closed +SELECT 1; + +-- Frame should be closed on COMMIT +BEGIN; +SELECT repeat('a', 80); +COMMIT; + +-- Frame should be closed on ROLLBACK +BEGIN; +SELECT repeat('a', 80); +ROLLBACK; + +-- Implicit transaction should also close the frame +SELECT repeat('a', 80); + +-- After a closed frame, sending uncompressed messages shouldn't generate any +-- CompressedMessages +SELECT 1; + +-- This should be sent in a single compressed frame +SET protocol_backend_compression_transaction_frame=false; +SELECT 1; +BEGIN; +SELECT repeat('a', 80); +COMMIT; +BEGIN; +SELECT repeat('a', 80); +ROLLBACK; +SELECT repeat('a', 80); + +RESET protocol_backend_compression; +RESET protocol_backend_compression_transaction_frame; diff --git a/src/test/trace/sql/protocol_compression_lz4.sql b/src/test/trace/sql/protocol_compression_lz4.sql new file mode 100644 index 00000000000..35b39980287 --- /dev/null +++ b/src/test/trace/sql/protocol_compression_lz4.sql @@ -0,0 +1,143 @@ +-- Test protocol compression with lz4 + +SET protocol_backend_compression_allowed_algorithms = 'lz4'; +SELECT current_setting('protocol_backend_compression_allowed_algorithms')!='lz4' AS skip_test \gset +\if :skip_test + \echo '*** skipping protocol compression tests with lz4 (not supported) ***' + \quit +\endif + +------------------------- +-- Enable/Disable compression +------------------------- + +-- With an ongoing frame, toggling compression to none should flush +-- current buffer +SET protocol_backend_compression='lz4'; +SET protocol_backend_compression_threshold=100; +\startpipeline +SELECT 1 \parse one +SET protocol_backend_compression='none'; +\endpipeline + +-- Test enabling compression within a transaction +SET protocol_backend_compression_threshold=0; +BEGIN; +SET LOCAL protocol_backend_compression='lz4'; +SELECT 1; +COMMIT; + +-- Test enabling compression within an implicit transaction +\startpipeline +SET LOCAL protocol_backend_compression='lz4'; +SELECT 1; +\endpipeline + +------------------------- +-- Test Simple/Extended/Copy Queries +------------------------- + +SET protocol_backend_compression='lz4'; +SET protocol_backend_compression_threshold=0; + +-- Check simple query +SELECT 1; + +-- Check extended query +SELECT $1::text, '42', $1::numeric, interval '1 sec' \bind 1 \g + +-- Check copy +\copy (SELECT *, repeat(' ', 80) FROM generate_series(1, 3)) to stdout; + +-- Check Notify messages are compressed +LISTEN test_lz4; +NOTIFY test_lz4, 'test'; +UNLISTEN test_lz4; + +-- Removing allowed algorithm should leave the current compression +SET protocol_backend_compression_allowed_algorithms = ''; +SELECT 1; +SET protocol_backend_compression_allowed_algorithms = 'lz4'; + +-- A flush request should force the uncompressed messages to be sent +-- immediately +\startpipeline +SELECT 1 \parse test +\flushrequest +\flush +\getresults +SELECT repeat('a', 100); +\endpipeline + +-- We need to temporarily disable debug_parallel_query here. When the +-- error is triggered within a parallel worker, no data rows will be +-- sent which will lead to a different protocol trace. +SET debug_parallel_query=false; + +-- Check triggering an error +-- Stay below the compression threshold +SET protocol_backend_compression_threshold=1000; +select 1 / i FROM generate_series(2, 0, -1) AS a(i); +-- Cross the compression threshold +SET protocol_backend_compression_threshold=5; +select 1 / i FROM generate_series(2, 0, -1) AS a(i); + +RESET debug_parallel_query; + +-- Test lz4 -> none -> lz4 with an opened frame +SET protocol_backend_compression='none'; +SELECT 1; +SET protocol_backend_compression='lz4'; + +-- CompressedMessages should be sent if compress_number_messages threshold is +-- reached +SET protocol_backend_compression_number_messages=5; +SELECT * FROM generate_series(1, 10); +RESET protocol_backend_compression_number_messages; + +------------------------- +-- Transaction frame +------------------------- +SET protocol_backend_compression_transaction_frame=true; +SET protocol_backend_compression_threshold=50; + +-- No compression triggered, frame shouldn't be closed +SELECT 1; + +-- Frame should be closed on COMMIT +BEGIN; +SELECT repeat('a', 40); +COMMIT; + +-- Frame should be closed on ROLLBACK +BEGIN; +SELECT repeat('a', 40); +ROLLBACK; + +-- Frame should be closed after an implicit transaction +SELECT repeat('a', 40); + +-- After a closed frame, sending uncompressed messages shouldn't generate any +-- CompressedMessages +SELECT 1; + +-- Frame should be left opened for the 2 batches of CompressedMessages +SET protocol_backend_compression_number_messages=5; +SELECT * FROM generate_series(1, 10); +RESET protocol_backend_compression_number_messages; + +-- This should be sent in a single compressed frame +SET protocol_backend_compression_transaction_frame=false; +SELECT 1; +BEGIN; +SELECT repeat('a', 40); +COMMIT; +BEGIN; +SELECT repeat('a', 40); +ROLLBACK; +SELECT repeat('a', 40); + +RESET protocol_backend_compression_threshold; +RESET protocol_backend_compression_number_messages; +RESET protocol_backend_compression_transaction_frame; +RESET protocol_backend_compression; diff --git a/src/test/trace/sql/protocol_compression_switch.sql b/src/test/trace/sql/protocol_compression_switch.sql new file mode 100644 index 00000000000..309502a6de2 --- /dev/null +++ b/src/test/trace/sql/protocol_compression_switch.sql @@ -0,0 +1,19 @@ +-- Test compression algorithm switch behavior + +SET protocol_backend_compression_allowed_algorithms = 'zstd,lz4'; +SELECT current_setting('protocol_backend_compression_allowed_algorithms')!='zstd,lz4' AS skip_test \gset +\if :skip_test + \echo '*** skipping protocol compression tests with lz4 and zstd (not supported) ***' + \quit +\endif + +-- Test compression algorithm change with an opened frame +SET protocol_backend_compression='zstd'; +SET protocol_backend_compression_threshold=0; +SELECT 1; +SET protocol_backend_compression='lz4'; +SELECT 1; +SET protocol_backend_compression='zstd'; + +RESET protocol_backend_compression_number_messages; +RESET protocol_backend_compression; diff --git a/src/test/trace/sql/protocol_compression_zstd.sql b/src/test/trace/sql/protocol_compression_zstd.sql new file mode 100644 index 00000000000..c2783af3331 --- /dev/null +++ b/src/test/trace/sql/protocol_compression_zstd.sql @@ -0,0 +1,144 @@ +-- Test protocol compression with zstd + +SET protocol_backend_compression_allowed_algorithms = 'zstd'; +SELECT current_setting('protocol_backend_compression_allowed_algorithms')!='zstd' AS skip_test \gset +\if :skip_test + \echo '*** skipping protocol compression tests with zstd (not supported) ***' + \quit +\endif + +------------------------- +-- Enable/Disable compression +------------------------- + +-- While we are below the compression threshold, message bytes are stored in +-- pqcompress' buffer. Setting compression to none should flush stored messages +-- immediately +SET protocol_backend_compression='zstd'; +SET protocol_backend_compression_threshold=100; +\startpipeline +SELECT 1 \parse one +SET protocol_backend_compression='none'; +\endpipeline + +-- Test enabling compression within a transaction +SET protocol_backend_compression_threshold=0; +BEGIN; +SET LOCAL protocol_backend_compression='zstd'; +SELECT 1; +COMMIT; + +-- Test enabling compression within an implicit transaction +\startpipeline +SET LOCAL protocol_backend_compression='zstd'; +SELECT 1; +\endpipeline + +------------------------- +-- Test Simple/Extended/Copy Queries +------------------------- + +SET protocol_backend_compression='zstd'; +SET protocol_backend_compression_threshold=0; + +-- Check simple query +SELECT 1; + +-- Check extended query +SELECT $1::text, '42', $1::numeric, interval '1 sec' \bind 1 \g + +-- Check copy +\copy (SELECT *, repeat(' ', 80) FROM generate_series(1, 3)) to stdout; + +-- Check Notify messages are compressed +LISTEN test_zstd; +NOTIFY test_zstd, 'test'; +UNLISTEN test_zstd; + +-- Removing allowed algorithm should leave the current compression +SET protocol_backend_compression_allowed_algorithms = ''; +SELECT 1; +SET protocol_backend_compression_allowed_algorithms = 'zstd'; + +-- A flush request should force the uncompressed messages to be sent +-- immediately +\startpipeline +SELECT 1 \parse test +\flushrequest +\flush +\getresults +SELECT repeat('a', 100); +\endpipeline + +-- We need to temporarily disable debug_parallel_query here. When the +-- error is triggered within a parallel worker, no data rows will be +-- sent which will lead to a different protocol trace. +SET debug_parallel_query=false; + +-- Check triggering an error +-- Stay below the compression threshold +SET protocol_backend_compression_threshold=1000; +select 1 / i FROM generate_series(2, 0, -1) AS a(i); +-- Cross the compression threshold +SET protocol_backend_compression_threshold=5; +select 1 / i FROM generate_series(2, 0, -1) AS a(i); + +RESET debug_parallel_query; + +-- Test zstd -> none -> zstd with an opened frame +SET protocol_backend_compression='none'; +SELECT 1; +SET protocol_backend_compression='zstd'; + +-- CompressedMessages should be sent if compress_number_messages threshold is +-- reached +SET protocol_backend_compression_number_messages=5; +SELECT * FROM generate_series(1, 10); +RESET protocol_backend_compression_number_messages; + +------------------------- +-- Transaction frame +------------------------- +SET protocol_backend_compression_transaction_frame=true; +SET protocol_backend_compression_threshold=50; + +-- No compression triggered, frame shouldn't be closed +SELECT 1; + +-- Frame should be closed on COMMIT +BEGIN; +SELECT repeat('a', 40); +COMMIT; + +-- Frame should be closed on ROLLBACK +BEGIN; +SELECT repeat('a', 40); +ROLLBACK; + +-- Frame should be closed after an implicit transaction +SELECT repeat('a', 40); + +-- After a closed frame, sending uncompressed messages shouldn't generate any +-- CompressedMessages +SELECT 1; + +-- Frame should be left opened for the 2 batches of CompressedMessages +SET protocol_backend_compression_number_messages=5; +SELECT * FROM generate_series(1, 10); +RESET protocol_backend_compression_number_messages; + +-- This should be sent in a single compressed frame +SET protocol_backend_compression_transaction_frame=false; +SELECT 1; +BEGIN; +SELECT repeat('a', 40); +COMMIT; +BEGIN; +SELECT repeat('a', 40); +ROLLBACK; +SELECT repeat('a', 40); + +RESET protocol_backend_compression_threshold; +RESET protocol_backend_compression_number_messages; +RESET protocol_backend_compression_transaction_frame; +RESET protocol_backend_compression; diff --git a/src/test/trace/trace_schedule b/src/test/trace/trace_schedule index d08de8e3cfd..35e2fc55e56 100644 --- a/src/test/trace/trace_schedule +++ b/src/test/trace/trace_schedule @@ -5,4 +5,4 @@ # resulting protocol trace is compared against expected/.trace. # ---------- -test: +test: protocol_compression_switch protocol_compression_lz4 protocol_compression_zstd -- 2.50.1 (Apple Git-155)