mirror of
				https://github.com/postgres/postgres.git
				synced 2025-11-04 00:02:52 -05:00 
			
		
		
		
	In streaming mode, the transaction can be decoded in multiple streams and those streams can be interleaved with streams of other transactions. So, we can't remember the transaction's write status in the logical decoding context because that might get changed due to some other transactions and lead to wrong answers for 'skip-empty-xacts' option. We decided to keep each transaction's write status in the ReorderBufferTxn to avoid interleaved streams changing the status of some unrelated transactions. Diagnosed-by: Amit Kapila Author: Dilip Kumar Reviewed-by: Amit Kapila Discussion: https://postgr.es/m/CAA4eK1LR7=XNM_TLmpZMFuV8ZQpoxkem--NZJYf8YXmesbvwLA@mail.gmail.com
		
			
				
	
	
		
			21 lines
		
	
	
		
			798 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			21 lines
		
	
	
		
			798 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
Parsed test spec with 3 sessions
 | 
						|
 | 
						|
starting permutation: s0_begin s0_ddl s1_ddl s1_begin s1_toast_insert s2_ddl s1_commit s1_get_stream_changes
 | 
						|
step s0_begin: BEGIN;
 | 
						|
step s0_ddl: CREATE TABLE stream_test1(data text);
 | 
						|
step s1_ddl: CREATE TABLE stream_test(data text);
 | 
						|
step s1_begin: BEGIN;
 | 
						|
step s1_toast_insert: INSERT INTO stream_test SELECT large_val();
 | 
						|
step s2_ddl: CREATE TABLE stream_test2(data text);
 | 
						|
step s1_commit: COMMIT;
 | 
						|
step s1_get_stream_changes: SELECT data FROM pg_logical_slot_get_changes('isolation_slot', NULL,NULL, 'include-xids', '0', 'skip-empty-xacts', '1', 'stream-changes', '1');
 | 
						|
data           
 | 
						|
 | 
						|
opening a streamed block for transaction
 | 
						|
streaming change for transaction
 | 
						|
closing a streamed block for transaction
 | 
						|
committing streamed transaction
 | 
						|
?column?       
 | 
						|
 | 
						|
stop           
 |