@@ -54,6 +54,7 @@ def test_basic_page_vacuum_truncate(self):
5454
5555 self .backup_node (backup_dir , 'node' , node )
5656
57+ # TODO: make it dynamic
5758 node .safe_psql (
5859 "postgres" ,
5960 "delete from t_heap where ctid >= '(11,0)'" )
@@ -101,6 +102,80 @@ def test_basic_page_vacuum_truncate(self):
101102 # Clean after yourself
102103 self .del_test_dir (module_name , fname )
103104
105+ # @unittest.skip("skip")
106+ def test_page_vacuum_truncate_1 (self ):
107+ """
108+ make node, create table, take full backup,
109+ delete all data, vacuum relation,
110+ take page backup, insert some data,
111+ take second page backup and check data correctness
112+ """
113+ fname = self .id ().split ('.' )[3 ]
114+ backup_dir = os .path .join (self .tmp_path , module_name , fname , 'backup' )
115+ node = self .make_simple_node (
116+ base_dir = os .path .join (module_name , fname , 'node' ),
117+ set_replication = True ,
118+ initdb_params = ['--data-checksums' ],
119+ pg_options = {'autovacuum' : 'off' })
120+
121+ self .init_pb (backup_dir )
122+ self .add_instance (backup_dir , 'node' , node )
123+ self .set_archiving (backup_dir , 'node' , node )
124+ node .slow_start ()
125+
126+ node .safe_psql (
127+ "postgres" ,
128+ "create sequence t_seq; "
129+ "create table t_heap as select i as id, "
130+ "md5(i::text) as text, "
131+ "md5(repeat(i::text,10))::tsvector as tsvector "
132+ "from generate_series(0,1024) i" )
133+
134+ node .safe_psql (
135+ "postgres" ,
136+ "vacuum t_heap" )
137+
138+ self .backup_node (backup_dir , 'node' , node )
139+
140+ node .safe_psql (
141+ "postgres" ,
142+ "delete from t_heap" )
143+
144+ node .safe_psql (
145+ "postgres" ,
146+ "vacuum t_heap" )
147+
148+ self .backup_node (
149+ backup_dir , 'node' , node , backup_type = 'page' )
150+
151+ node .safe_psql (
152+ "postgres" ,
153+ "insert into t_heap select i as id, "
154+ "md5(i::text) as text, "
155+ "md5(repeat(i::text,10))::tsvector as tsvector "
156+ "from generate_series(0,1) i" )
157+
158+ self .backup_node (
159+ backup_dir , 'node' , node , backup_type = 'page' )
160+
161+ pgdata = self .pgdata_content (node .data_dir )
162+
163+ node_restored = self .make_simple_node (
164+ base_dir = os .path .join (module_name , fname , 'node_restored' ))
165+ node_restored .cleanup ()
166+
167+ self .restore_node (backup_dir , 'node' , node_restored )
168+
169+ # Physical comparison
170+ pgdata_restored = self .pgdata_content (node_restored .data_dir )
171+ self .compare_pgdata (pgdata , pgdata_restored )
172+
173+ self .set_auto_conf (node_restored , {'port' : node_restored .port })
174+ node_restored .slow_start ()
175+
176+ # Clean after yourself
177+ self .del_test_dir (module_name , fname )
178+
104179 # @unittest.skip("skip")
105180 def test_page_stream (self ):
106181 """
0 commit comments