mirror of
				https://github.com/postgres/postgres.git
				synced 2025-11-04 00:02:52 -05:00 
			
		
		
		
	Use the pattern from detach-partition-concurrently-3.spec. Per buildfarm member wrasse. Reviewed by Kyotaro Horiguchi and Andres Freund. Discussion: https://postgr.es/m/20220318072837.GC2739027@rfd.leadboat.com
		
			
				
	
	
		
			42 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			RPMSpec
		
	
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			RPMSpec
		
	
	
	
	
	
# Test that erroring out during logical slot creation is handled properly
 | 
						|
 | 
						|
session "s1"
 | 
						|
setup { SET synchronous_commit=on; }
 | 
						|
 | 
						|
step s1_b { BEGIN; }
 | 
						|
step s1_xid { SELECT 'xid' FROM txid_current(); }
 | 
						|
step s1_c { COMMIT; }
 | 
						|
step s1_cancel_s2 {
 | 
						|
    SELECT pg_cancel_backend(pid)
 | 
						|
    FROM pg_stat_activity
 | 
						|
    WHERE application_name = 'isolation/slot_creation_error/s2';
 | 
						|
}
 | 
						|
 | 
						|
step s1_terminate_s2 {
 | 
						|
    SELECT pg_terminate_backend(pid)
 | 
						|
    FROM pg_stat_activity
 | 
						|
    WHERE application_name = 'isolation/slot_creation_error/s2';
 | 
						|
}
 | 
						|
 | 
						|
step s1_view_slot {
 | 
						|
    SELECT slot_name, slot_type, active FROM pg_replication_slots WHERE slot_name = 'slot_creation_error'
 | 
						|
}
 | 
						|
 | 
						|
step s1_drop_slot {
 | 
						|
    SELECT pg_drop_replication_slot('slot_creation_error');
 | 
						|
}
 | 
						|
 | 
						|
session s2
 | 
						|
setup { SET synchronous_commit=on; }
 | 
						|
step s2_init {
 | 
						|
    SELECT 'init' FROM pg_create_logical_replication_slot('slot_creation_error', 'test_decoding');
 | 
						|
}
 | 
						|
 | 
						|
# The tests first start a transaction with an xid assigned in s1, then create
 | 
						|
# a slot in s2. The slot creation waits for s1's transaction to end. Instead
 | 
						|
# we cancel / terminate s2.
 | 
						|
permutation s1_b s1_xid s2_init s1_view_slot s1_cancel_s2(s2_init) s1_view_slot s1_c
 | 
						|
permutation s1_b s1_xid s2_init s1_c s1_view_slot s1_drop_slot # check slot creation still works
 | 
						|
permutation s1_b s1_xid s2_init s1_terminate_s2(s2_init) s1_c s1_view_slot
 | 
						|
# can't run tests after this, due to s2's connection failure
 |