Skip to content

Commit a180c2b

Browse files
committed
Stabilize test_decoding touching with sequences
Some of the test_decoding regression tests are unstable due to modifying a sequence. The first increment of a sequence after a checkpoint is always logged (and thus decoded), which makes the output unpredictable. The runs are usually much shorter than a checkpoint internal, so these failures are rare, but we've seen a couple of them on animals that are either slow or are running with valgrind/clobber cache/... Fixed by skipping sequence decoding in most tests, with the exception of the test aimed at testing decoding of sequences. Reported-by: Amita Kapila Discussion: https://postgr.es/m/d045f3c2-6cfb-06d3-5540-e63c320df8bc@enterprisedb.com
1 parent 54c72eb commit a180c2b

File tree

10 files changed

+44
-44
lines changed

10 files changed

+44
-44
lines changed

contrib/test_decoding/expected/ddl.out

Lines changed: 13 additions & 13 deletions
Large diffs are not rendered by default.

contrib/test_decoding/expected/decoding_in_xact.out

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'inc
6868

6969
COMMIT;
7070
INSERT INTO nobarf(data) VALUES('3');
71-
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
71+
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1', 'include-sequences', '0');
7272
data
7373
-----------------------------------------------------------
7474
BEGIN

contrib/test_decoding/expected/replorigin.out

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ SELECT pg_replication_origin_xact_setup('0/aabbccdd', '2013-01-01 00:00');
110110
(1 row)
111111

112112
INSERT INTO target_tbl(data)
113-
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1', 'only-local', '1');
113+
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1', 'only-local', '1', 'include-sequences', '0');
114114
COMMIT;
115115
-- check replication progress for the session is correct
116116
SELECT pg_replication_origin_session_progress(false);
@@ -154,14 +154,14 @@ SELECT pg_replication_origin_progress('regress_test_decoding: regression_slot',
154154
SELECT pg_replication_origin_session_reset();
155155
ERROR: no replication origin is configured
156156
-- and magically the replayed xact will be filtered!
157-
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1', 'only-local', '1');
157+
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1', 'only-local', '1', 'include-sequences', '0');
158158
data
159159
------
160160
(0 rows)
161161

162162
--but new original changes still show up
163163
INSERT INTO origin_tbl(data) VALUES ('will be replicated');
164-
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1', 'only-local', '1');
164+
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1', 'only-local', '1', 'include-sequences', '0');
165165
data
166166
--------------------------------------------------------------------------------
167167
BEGIN
@@ -227,7 +227,7 @@ SELECT local_id, external_id,
227227
1 | regress_test_decoding: regression_slot_no_lsn | f | t
228228
(1 row)
229229

230-
SELECT data FROM pg_logical_slot_get_changes('regression_slot_no_lsn', NULL, NULL, 'skip-empty-xacts', '1', 'include-xids', '0');
230+
SELECT data FROM pg_logical_slot_get_changes('regression_slot_no_lsn', NULL, NULL, 'skip-empty-xacts', '1', 'include-xids', '0', 'include-sequences', '0');
231231
data
232232
-------------------------------------------------------------------------------------
233233
BEGIN

contrib/test_decoding/expected/rewrite.out

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ INSERT INTO replication_example(somedata, testcolumn1, testcolumn3) VALUES (7, 5
115115
COMMIT;
116116
-- make old files go away
117117
CHECKPOINT;
118-
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
118+
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1', 'include-sequences', '0');
119119
data
120120
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
121121
BEGIN

contrib/test_decoding/expected/slot.out

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ SELECT data FROM pg_logical_slot_get_changes('regression_slot1', NULL, NULL, 'in
107107
COMMIT
108108
(7 rows)
109109

110-
SELECT data FROM pg_logical_slot_get_changes('regression_slot2', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
110+
SELECT data FROM pg_logical_slot_get_changes('regression_slot2', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1', 'include-sequences', '0');
111111
data
112112
---------------------------------------------------------------------------------------------------------
113113
BEGIN
@@ -132,15 +132,15 @@ SELECT :'wal_lsn' = :'end_lsn';
132132
t
133133
(1 row)
134134

135-
SELECT data FROM pg_logical_slot_get_changes('regression_slot1', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
135+
SELECT data FROM pg_logical_slot_get_changes('regression_slot1', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1', 'include-sequences', '0');
136136
data
137137
---------------------------------------------------------------------------------------------------------
138138
BEGIN
139139
table public.replication_example: INSERT: id[integer]:6 somedata[integer]:1 text[character varying]:'6'
140140
COMMIT
141141
(3 rows)
142142

143-
SELECT data FROM pg_logical_slot_get_changes('regression_slot2', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
143+
SELECT data FROM pg_logical_slot_get_changes('regression_slot2', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1', 'include-sequences', '0');
144144
data
145145
------
146146
(0 rows)

contrib/test_decoding/sql/ddl.sql

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ SELECT pg_drop_replication_slot('regression_slot');
1919

2020
-- check that we're detecting a streaming rep slot used for logical decoding
2121
SELECT 'init' FROM pg_create_physical_replication_slot('repl');
22-
SELECT data FROM pg_logical_slot_get_changes('repl', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
22+
SELECT data FROM pg_logical_slot_get_changes('repl', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1', 'include-sequences', '0');
2323
SELECT pg_drop_replication_slot('repl');
2424

2525

@@ -68,7 +68,7 @@ SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'inc
6868

6969
ALTER TABLE replication_example ALTER COLUMN somenum TYPE int4 USING (somenum::int4);
7070
-- check that this doesn't produce any changes from the heap rewrite
71-
SELECT count(data) FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
71+
SELECT count(data) FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1', 'include-sequences', '0');
7272

7373
INSERT INTO replication_example(somedata, somenum) VALUES (5, 1);
7474

@@ -82,7 +82,7 @@ INSERT INTO replication_example(somedata, somenum, zaphod1) VALUES (6, 4, 2);
8282
COMMIT;
8383

8484
-- show changes
85-
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
85+
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1', 'include-sequences', '0');
8686

8787
-- ON CONFLICT DO UPDATE support
8888
BEGIN;
@@ -91,7 +91,7 @@ INSERT INTO replication_example(id, somedata, somenum) SELECT i, i, i FROM gener
9191
COMMIT;
9292

9393
/* display results */
94-
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
94+
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1', 'include-sequences', '0');
9595

9696
CREATE TABLE tr_unique(id2 serial unique NOT NULL, data int);
9797
INSERT INTO tr_unique(data) VALUES(10);
@@ -104,7 +104,7 @@ INSERT INTO tr_pkey(data) VALUES(1);
104104
DELETE FROM tr_pkey;
105105

106106
/* display results */
107-
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
107+
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1', 'include-sequences', '0');
108108

109109
/*
110110
* check that disk spooling works (also for logical messages)
@@ -136,7 +136,7 @@ DROP TABLE spoolme;
136136
COMMIT;
137137

138138
SELECT data
139-
FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1')
139+
FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1', 'include-sequences', '0')
140140
WHERE data ~ 'UPDATE';
141141

142142
-- check that a large, spooled, upsert works
@@ -145,7 +145,7 @@ SELECT g.i, -g.i FROM generate_series(8000, 12000) g(i)
145145
ON CONFLICT(id) DO UPDATE SET data = EXCLUDED.data;
146146

147147
SELECT substring(data, 1, 29), count(*)
148-
FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1') WITH ORDINALITY
148+
FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1', 'include-sequences', '0') WITH ORDINALITY
149149
GROUP BY 1
150150
ORDER BY min(ordinality);
151151

@@ -202,7 +202,7 @@ RELEASE SAVEPOINT subtop;
202202
INSERT INTO tr_sub(path) VALUES ('2-top-#1');
203203
COMMIT;
204204

205-
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
205+
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1', 'include-sequences', '0');
206206

207207
-- make sure rollbacked subtransactions aren't decoded
208208
BEGIN;
@@ -215,7 +215,7 @@ ROLLBACK TO SAVEPOINT b;
215215
INSERT INTO tr_sub(path) VALUES ('3-top-2-#2');
216216
COMMIT;
217217

218-
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
218+
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1', 'include-sequences', '0');
219219

220220
-- test whether a known, but not yet logged toplevel xact, followed by a
221221
-- subxact commit is handled correctly
@@ -234,7 +234,7 @@ INSERT INTO tr_sub(path) VALUES ('5-top-1-#1');
234234
COMMIT;
235235

236236

237-
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
237+
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1', 'include-sequences', '0');
238238

239239
-- check that DDL in aborted subtransactions handled correctly
240240
CREATE TABLE tr_sub_ddl(data int);
@@ -247,7 +247,7 @@ ALTER TABLE tr_sub_ddl ALTER COLUMN data TYPE bigint;
247247
INSERT INTO tr_sub_ddl VALUES(43);
248248
COMMIT;
249249

250-
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
250+
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1', 'include-sequences', '0');
251251

252252

253253
/*
@@ -410,10 +410,10 @@ WHERE id = 1;
410410
-- make sure we decode correctly even if the toast table is gone
411411
DROP TABLE toasttable;
412412

413-
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
413+
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1', 'include-sequences', '0');
414414

415415
-- done, free logical replication slot
416-
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
416+
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1', 'include-sequences', '0');
417417

418418
SELECT pg_drop_replication_slot('regression_slot');
419419

contrib/test_decoding/sql/decoding_in_xact.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,6 @@ SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'inc
3636
COMMIT;
3737

3838
INSERT INTO nobarf(data) VALUES('3');
39-
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
39+
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1', 'include-sequences', '0');
4040

4141
SELECT 'stop' FROM pg_drop_replication_slot('regression_slot');

contrib/test_decoding/sql/replorigin.sql

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ BEGIN;
6060
-- setup transaction origin
6161
SELECT pg_replication_origin_xact_setup('0/aabbccdd', '2013-01-01 00:00');
6262
INSERT INTO target_tbl(data)
63-
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1', 'only-local', '1');
63+
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1', 'only-local', '1', 'include-sequences', '0');
6464
COMMIT;
6565

6666
-- check replication progress for the session is correct
@@ -79,11 +79,11 @@ SELECT pg_replication_origin_progress('regress_test_decoding: regression_slot',
7979
SELECT pg_replication_origin_session_reset();
8080

8181
-- and magically the replayed xact will be filtered!
82-
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1', 'only-local', '1');
82+
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1', 'only-local', '1', 'include-sequences', '0');
8383

8484
--but new original changes still show up
8585
INSERT INTO origin_tbl(data) VALUES ('will be replicated');
86-
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1', 'only-local', '1');
86+
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1', 'only-local', '1', 'include-sequences', '0');
8787

8888
SELECT pg_drop_replication_slot('regression_slot');
8989
SELECT pg_replication_origin_drop('regress_test_decoding: regression_slot');
@@ -114,7 +114,7 @@ SELECT local_id, external_id,
114114
remote_lsn <> '0/0' AS valid_remote_lsn,
115115
local_lsn <> '0/0' AS valid_local_lsn
116116
FROM pg_replication_origin_status;
117-
SELECT data FROM pg_logical_slot_get_changes('regression_slot_no_lsn', NULL, NULL, 'skip-empty-xacts', '1', 'include-xids', '0');
117+
SELECT data FROM pg_logical_slot_get_changes('regression_slot_no_lsn', NULL, NULL, 'skip-empty-xacts', '1', 'include-xids', '0', 'include-sequences', '0');
118118
-- Clean up
119119
SELECT pg_replication_origin_session_reset();
120120
SELECT pg_drop_replication_slot('regression_slot_no_lsn');

contrib/test_decoding/sql/rewrite.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ COMMIT;
9090
-- make old files go away
9191
CHECKPOINT;
9292

93-
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
93+
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1', 'include-sequences', '0');
9494

9595
-- trigger repeated rewrites of a system catalog with a toast table,
9696
-- that previously was buggy: 20180914021046.oi7dm4ra3ot2g2kt@alap3.anarazel.de

contrib/test_decoding/sql/slot.sql

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ SELECT 'init' FROM pg_create_logical_replication_slot('regression_slot2', 'test_
5151
INSERT INTO replication_example(somedata, text) VALUES (1, 3);
5252

5353
SELECT data FROM pg_logical_slot_get_changes('regression_slot1', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1', 'include-sequences', '0');
54-
SELECT data FROM pg_logical_slot_get_changes('regression_slot2', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
54+
SELECT data FROM pg_logical_slot_get_changes('regression_slot2', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1', 'include-sequences', '0');
5555

5656
INSERT INTO replication_example(somedata, text) VALUES (1, 4);
5757
INSERT INTO replication_example(somedata, text) VALUES (1, 5);
@@ -65,8 +65,8 @@ SELECT slot_name FROM pg_replication_slot_advance('regression_slot2', pg_current
6565

6666
SELECT :'wal_lsn' = :'end_lsn';
6767

68-
SELECT data FROM pg_logical_slot_get_changes('regression_slot1', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
69-
SELECT data FROM pg_logical_slot_get_changes('regression_slot2', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
68+
SELECT data FROM pg_logical_slot_get_changes('regression_slot1', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1', 'include-sequences', '0');
69+
SELECT data FROM pg_logical_slot_get_changes('regression_slot2', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1', 'include-sequences', '0');
7070

7171
DROP TABLE replication_example;
7272

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy