mirror of
				https://github.com/postgres/postgres.git
				synced 2025-10-31 10:30:33 +03:00 
			
		
		
		
	This module provides SQL functions that allow to inspect logical decoding components. It currently allows to inspect the contents of serialized logical snapshots of a running database cluster, which is useful for debugging or educational purposes. Author: Bertrand Drouvot Reviewed-by: Amit Kapila, Shveta Malik, Peter Smith, Peter Eisentraut Reviewed-by: David G. Johnston Discussion: https://postgr.es/m/ZscuZ92uGh3wm4tW%40ip-10-97-1-34.eu-west-3.compute.internal
		
			
				
	
	
		
			53 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			53 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| Parsed test spec with 2 sessions
 | |
| 
 | |
| starting permutation: s0_init s0_begin s0_savepoint s0_truncate s1_checkpoint s1_get_changes s0_commit s0_begin s0_insert s1_checkpoint s1_get_changes s0_commit s1_get_changes s1_get_logical_snapshot_info s1_get_logical_snapshot_meta
 | |
| step s0_init: SELECT 'init' FROM pg_create_logical_replication_slot('isolation_slot', 'test_decoding');
 | |
| ?column?
 | |
| --------
 | |
| init    
 | |
| (1 row)
 | |
| 
 | |
| step s0_begin: BEGIN;
 | |
| step s0_savepoint: SAVEPOINT sp1;
 | |
| step s0_truncate: TRUNCATE tbl1;
 | |
| step s1_checkpoint: CHECKPOINT;
 | |
| step s1_get_changes: SELECT data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'skip-empty-xacts', '1', 'include-xids', '0');
 | |
| data
 | |
| ----
 | |
| (0 rows)
 | |
| 
 | |
| step s0_commit: COMMIT;
 | |
| step s0_begin: BEGIN;
 | |
| step s0_insert: INSERT INTO tbl1 VALUES (1);
 | |
| step s1_checkpoint: CHECKPOINT;
 | |
| step s1_get_changes: SELECT data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'skip-empty-xacts', '1', 'include-xids', '0');
 | |
| data                                   
 | |
| ---------------------------------------
 | |
| BEGIN                                  
 | |
| table public.tbl1: TRUNCATE: (no-flags)
 | |
| COMMIT                                 
 | |
| (3 rows)
 | |
| 
 | |
| step s0_commit: COMMIT;
 | |
| step s1_get_changes: SELECT data FROM pg_logical_slot_get_changes('isolation_slot', NULL, NULL, 'skip-empty-xacts', '1', 'include-xids', '0');
 | |
| data                                                         
 | |
| -------------------------------------------------------------
 | |
| BEGIN                                                        
 | |
| table public.tbl1: INSERT: val1[integer]:1 val2[integer]:null
 | |
| COMMIT                                                       
 | |
| (3 rows)
 | |
| 
 | |
| step s1_get_logical_snapshot_info: SELECT info.state, info.catchange_count, array_length(info.catchange_xip,1) AS catchange_array_length, info.committed_count, array_length(info.committed_xip,1) AS committed_array_length FROM pg_ls_logicalsnapdir(), pg_get_logical_snapshot_info(name) AS info ORDER BY 2;
 | |
| state     |catchange_count|catchange_array_length|committed_count|committed_array_length
 | |
| ----------+---------------+----------------------+---------------+----------------------
 | |
| consistent|              0|                      |              2|                     2
 | |
| consistent|              2|                     2|              0|                      
 | |
| (2 rows)
 | |
| 
 | |
| step s1_get_logical_snapshot_meta: SELECT COUNT(meta.*) from pg_ls_logicalsnapdir(), pg_get_logical_snapshot_meta(name) as meta;
 | |
| count
 | |
| -----
 | |
|     2
 | |
| (1 row)
 | |
| 
 |