mirror of
				https://github.com/postgres/postgres.git
				synced 2025-10-31 10:30:33 +03:00 
			
		
		
		
	We were decoding empty transactions via streaming APIs added in commit
45fdc9738b even when the user used the option 'skip-empty-xacts'. The APIs
makes no effort to skip empty xacts under the assumption that we will
never try to stream such transactions. However, that is not true because
we can pick to stream a transaction that has change messages for
REORDER_BUFFER_CHANGE_INTERNAL_SNAPSHOT and we don't send such messages to
downstream rather they are just to update the internal state. So, we need
to skip such xacts when plugin uses the option 'skip-empty-xacts'.
Diagnosed-By: Amit Kapila
Author: Dilip Kumar
Reviewed-by: Amit Kapila
Discussion: https://postgr.es/m/CAA4eK1+OqgFNZkf7=ETe_y5ntjgDk3T0wcdkd4Sot_u1hySGfw@mail.gmail.com
		
	
		
			
				
	
	
		
			20 lines
		
	
	
		
			740 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			20 lines
		
	
	
		
			740 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| Parsed test spec with 2 sessions
 | |
| 
 | |
| starting permutation: s0_begin s0_ddl s1_ddl s1_begin s1_toast_insert 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 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           
 |