From cde7e367d411956d0b917492b1b521f948649649 Mon Sep 17 00:00:00 2001
From: Vigneshwaran C <vignesh21@gmail.com>
Date: Thu, 26 May 2022 19:29:33 +0530
Subject: [PATCH v28] Add a missing test to verify only-local parameter in
 test_decoding plugin.

Add a missing test to verify only-local parameter in test_decoding plugin.
---
 contrib/test_decoding/expected/replorigin.out | 41 +++++++++++++++++--
 contrib/test_decoding/sql/replorigin.sql      | 13 +++++-
 2 files changed, 50 insertions(+), 4 deletions(-)

diff --git a/contrib/test_decoding/expected/replorigin.out b/contrib/test_decoding/expected/replorigin.out
index 2e9ef7c823..7ff2784a70 100644
--- a/contrib/test_decoding/expected/replorigin.out
+++ b/contrib/test_decoding/expected/replorigin.out
@@ -169,13 +169,48 @@ SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'inc
  COMMIT
 (3 rows)
 
+-- Clean up
+SELECT pg_replication_origin_drop('regress_test_decoding: regression_slot');
+ pg_replication_origin_drop 
+----------------------------
+ 
+(1 row)
+
+-- Ensure that the remote origin data is filtered when only-local parameter is
+-- set.
+SELECT pg_replication_origin_create('regress_test_decoding: remote_origin');
+ pg_replication_origin_create 
+------------------------------
+                            1
+(1 row)
+
+SELECT pg_replication_origin_session_setup('regress_test_decoding: remote_origin');
+ pg_replication_origin_session_setup 
+-------------------------------------
+ 
+(1 row)
+
+INSERT INTO origin_tbl(data) VALUES ('only_local, commit_remote_origin');
+-- Remote origin data not returned when only-local parameter is set
+SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'skip-empty-xacts', '1', 'include-xids', '0', 'only-local', '1');
+ data 
+------
+(0 rows)
+
+-- Clean up
+SELECT pg_replication_origin_session_reset();
+ pg_replication_origin_session_reset 
+-------------------------------------
+ 
+(1 row)
+
 SELECT pg_drop_replication_slot('regression_slot');
  pg_drop_replication_slot 
 --------------------------
  
 (1 row)
 
-SELECT pg_replication_origin_drop('regress_test_decoding: regression_slot');
+SELECT pg_replication_origin_drop('regress_test_decoding: remote_origin');
  pg_replication_origin_drop 
 ----------------------------
  
@@ -231,10 +266,10 @@ SELECT data FROM pg_logical_slot_get_changes('regression_slot_no_lsn', NULL, NUL
                                         data                                         
 -------------------------------------------------------------------------------------
  BEGIN
- table public.origin_tbl: INSERT: id[integer]:4 data[text]:'no_lsn, commit'
+ table public.origin_tbl: INSERT: id[integer]:5 data[text]:'no_lsn, commit'
  COMMIT
  BEGIN
- table public.origin_tbl: INSERT: id[integer]:6 data[text]:'no_lsn, commit prepared'
+ table public.origin_tbl: INSERT: id[integer]:7 data[text]:'no_lsn, commit prepared'
  COMMIT
 (6 rows)
 
diff --git a/contrib/test_decoding/sql/replorigin.sql b/contrib/test_decoding/sql/replorigin.sql
index 2e28a48777..4e34aff3b5 100644
--- a/contrib/test_decoding/sql/replorigin.sql
+++ b/contrib/test_decoding/sql/replorigin.sql
@@ -84,9 +84,20 @@ SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'inc
 --but new original changes still show up
 INSERT INTO origin_tbl(data) VALUES ('will be replicated');
 SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1',  'only-local', '1');
+-- Clean up
+SELECT pg_replication_origin_drop('regress_test_decoding: regression_slot');
 
+-- Ensure that the remote origin data is filtered when only-local parameter is
+-- set.
+SELECT pg_replication_origin_create('regress_test_decoding: remote_origin');
+SELECT pg_replication_origin_session_setup('regress_test_decoding: remote_origin');
+INSERT INTO origin_tbl(data) VALUES ('only_local, commit_remote_origin');
+-- Remote origin data not returned when only-local parameter is set
+SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'skip-empty-xacts', '1', 'include-xids', '0', 'only-local', '1');
+-- Clean up
+SELECT pg_replication_origin_session_reset();
 SELECT pg_drop_replication_slot('regression_slot');
-SELECT pg_replication_origin_drop('regress_test_decoding: regression_slot');
+SELECT pg_replication_origin_drop('regress_test_decoding: remote_origin');
 
 -- Set of transactions with no origin LSNs and commit timestamps set for
 -- this session.
-- 
2.32.0

