mirror of
				https://github.com/postgres/postgres.git
				synced 2025-11-03 09:13:20 +03:00 
			
		
		
		
	989d23b has caused its tests to be broken as the module defines unused
steps, turning the buildfarm red.
		
	
		
			
				
	
	
		
			44 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			RPMSpec
		
	
	
	
	
	
			
		
		
	
	
			44 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			RPMSpec
		
	
	
	
	
	
# Test snapshot transfer from subxact to top-level and receival of later snaps.
 | 
						|
 | 
						|
setup
 | 
						|
{
 | 
						|
    SELECT 'init' FROM pg_create_logical_replication_slot('isolation_slot', 'test_decoding'); -- must be first write in xact
 | 
						|
    DROP TABLE IF EXISTS dummy;
 | 
						|
    CREATE TABLE dummy(i int);
 | 
						|
    DROP TABLE IF EXISTS harvest;
 | 
						|
    CREATE TABLE harvest(apples int, pears int);
 | 
						|
}
 | 
						|
 | 
						|
teardown
 | 
						|
{
 | 
						|
    DROP TABLE IF EXISTS harvest;
 | 
						|
    DROP TABLE IF EXISTS dummy;
 | 
						|
    SELECT 'stop' FROM pg_drop_replication_slot('isolation_slot');
 | 
						|
}
 | 
						|
 | 
						|
session "s0"
 | 
						|
setup { SET synchronous_commit=on; }
 | 
						|
step "s0_begin" { BEGIN; }
 | 
						|
step "s0_begin_sub0" { SAVEPOINT s0; }
 | 
						|
step "s0_log_assignment" { SELECT txid_current() IS NULL; }
 | 
						|
step "s0_begin_sub1" { SAVEPOINT s1; }
 | 
						|
step "s0_sub_get_base_snap" { INSERT INTO dummy VALUES (0); }
 | 
						|
step "s0_insert" { INSERT INTO harvest VALUES (1, 2, 3); }
 | 
						|
step "s0_end_sub0" { RELEASE SAVEPOINT s0; }
 | 
						|
step "s0_end_sub1" { RELEASE SAVEPOINT s1; }
 | 
						|
step "s0_commit" { COMMIT; }
 | 
						|
step "s0_get_changes" { SELECT data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1'); }
 | 
						|
 | 
						|
session "s1"
 | 
						|
setup { SET synchronous_commit=on; }
 | 
						|
step "s1_produce_new_snap" { ALTER TABLE harvest ADD COLUMN mangos int; }
 | 
						|
 | 
						|
# start top-level without base snap, get base snap in subxact, then create new
 | 
						|
# snap and make sure it is queued.
 | 
						|
permutation "s0_begin" "s0_begin_sub0" "s0_log_assignment" "s0_sub_get_base_snap" "s1_produce_new_snap" "s0_insert" "s0_end_sub0" "s0_commit" "s0_get_changes"
 | 
						|
 | 
						|
# In previous test, we firstly associated subxact with xact and only then got
 | 
						|
# base snap; now nest one more subxact to get snap first and only then (at
 | 
						|
# commit) associate it with toplevel.
 | 
						|
permutation "s0_begin" "s0_begin_sub0" "s0_log_assignment" "s0_begin_sub1" "s0_sub_get_base_snap" "s1_produce_new_snap" "s0_insert" "s0_end_sub1" "s0_end_sub0" "s0_commit" "s0_get_changes"
 |