From 066ef2eb5de3f7403cb4d779190a2275a06dc277 Mon Sep 17 00:00:00 2001 From: Hou Zhijie Date: Mon, 7 Oct 2024 14:29:55 +0800 Subject: [PATCH v4 2/2] add a testcase in stream.sql PG16 --- contrib/test_decoding/expected/stream.out | 22 ++++++++++++++++++++++ contrib/test_decoding/sql/stream.sql | 22 ++++++++++++++++++++++ 2 files changed, 44 insertions(+) diff --git a/contrib/test_decoding/expected/stream.out b/contrib/test_decoding/expected/stream.out index 0f21dcb8e0..d4bfbf975d 100644 --- a/contrib/test_decoding/expected/stream.out +++ b/contrib/test_decoding/expected/stream.out @@ -106,6 +106,28 @@ SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL,NULL, 'incl committing streamed transaction (17 rows) +-- Test that accessing a TOAST table in streaming mode is allowed. +-- Create a table with a column that uses a TOASTed default value. +-- (temporarily hide query, to avoid the long CREATE TABLE stmt) +\set ECHO none +SET debug_logical_replication_streaming = immediate; +BEGIN; +INSERT INTO test_tab VALUES(1); +-- Force WAL flush, so that the above changes will be streamed. +SELECT 'force flush' FROM pg_switch_wal(); + ?column? +------------- + force flush +(1 row) + +SELECT count(*) FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1', 'stream-changes', '1'); + count +------- + 3 +(1 row) + +COMMIT; +RESET debug_logical_replication_streaming; DROP TABLE stream_test; SELECT pg_drop_replication_slot('regression_slot'); pg_drop_replication_slot diff --git a/contrib/test_decoding/sql/stream.sql b/contrib/test_decoding/sql/stream.sql index 4feec62972..0549d3204a 100644 --- a/contrib/test_decoding/sql/stream.sql +++ b/contrib/test_decoding/sql/stream.sql @@ -44,5 +44,27 @@ toasted-123456789012345678901234567890123456789012345678901234567890123456789012 SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL,NULL, 'include-xids', '0', 'skip-empty-xacts', '1', 'stream-changes', '1'); +-- Test that accessing a TOAST table in streaming mode is allowed. + +-- Create a table with a column that uses a TOASTed default value. +-- (temporarily hide query, to avoid the long CREATE TABLE stmt) +\set ECHO none +SELECT 'CREATE TABLE test_tab (a text DEFAULT ''' || string_agg('toast value', '') || ''');' FROM generate_series(1, 4000) +\gexec +\set ECHO all + +SET debug_logical_replication_streaming = immediate; + +BEGIN; +INSERT INTO test_tab VALUES(1); + +-- Force WAL flush, so that the above changes will be streamed. +SELECT 'force flush' FROM pg_switch_wal(); + +SELECT count(*) FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1', 'stream-changes', '1'); +COMMIT; + +RESET debug_logical_replication_streaming; + DROP TABLE stream_test; SELECT pg_drop_replication_slot('regression_slot'); -- 2.31.1