@@ -54,6 +54,7 @@ def test_basic_page_vacuum_truncate(self):
54
54
55
55
self .backup_node (backup_dir , 'node' , node )
56
56
57
+ # TODO: make it dynamic
57
58
node .safe_psql (
58
59
"postgres" ,
59
60
"delete from t_heap where ctid >= '(11,0)'" )
@@ -101,6 +102,80 @@ def test_basic_page_vacuum_truncate(self):
101
102
# Clean after yourself
102
103
self .del_test_dir (module_name , fname )
103
104
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
+
104
179
# @unittest.skip("skip")
105
180
def test_page_stream (self ):
106
181
"""
0 commit comments