@@ -1241,3 +1241,70 @@ def test_archive_restore_to_restore_point(self):
1241
1241
1242
1242
# Clean after yourself
1243
1243
self .del_test_dir (module_name , fname )
1244
+
1245
+ # @unittest.skip("skip")
1246
+ # @unittest.expectedFailure
1247
+ def test_zags_block_corrupt (self ):
1248
+ fname = self .id ().split ('.' )[3 ]
1249
+ node = self .make_simple_node (
1250
+ base_dir = "{0}/{1}/node" .format (module_name , fname ),
1251
+ initdb_params = ['--data-checksums' ],
1252
+ pg_options = {'wal_level' : 'replica' }
1253
+ )
1254
+ backup_dir = os .path .join (self .tmp_path , module_name , fname , 'backup' )
1255
+ self .init_pb (backup_dir )
1256
+ self .add_instance (backup_dir , 'node' , node )
1257
+ self .set_archiving (backup_dir , 'node' , node )
1258
+ node .start ()
1259
+
1260
+ self .backup_node (backup_dir , 'node' , node )
1261
+
1262
+ conn = node .connect ()
1263
+ with node .connect ("postgres" ) as conn :
1264
+
1265
+ conn .execute (
1266
+ "create table tbl(i int)" )
1267
+ conn .execute (
1268
+ "create index idx ON tbl (i)" )
1269
+ conn .execute (
1270
+ "insert into tbl select i from generate_series(0,400) as i" )
1271
+ conn .execute (
1272
+ "select pg_relation_size('idx')" )
1273
+ conn .execute (
1274
+ "delete from tbl where i < 100" )
1275
+ conn .execute (
1276
+ "explain analyze select i from tbl order by i" )
1277
+ conn .execute (
1278
+ "select i from tbl order by i" )
1279
+ conn .execute (
1280
+ "create extension pageinspect" )
1281
+ print (conn .execute (
1282
+ "select * from bt_page_stats('idx',1)" ))
1283
+ conn .execute (
1284
+ "insert into tbl select i from generate_series(0,100) as i" )
1285
+ conn .execute (
1286
+ "insert into tbl select i from generate_series(0,100) as i" )
1287
+ conn .execute (
1288
+ "insert into tbl select i from generate_series(0,100) as i" )
1289
+ conn .execute (
1290
+ "insert into tbl select i from generate_series(0,100) as i" )
1291
+
1292
+ conn .commit ()
1293
+
1294
+ node_restored = self .make_simple_node (
1295
+ base_dir = "{0}/{1}/node_restored" .format (module_name , fname ),
1296
+ initdb_params = ['--data-checksums' ],
1297
+ pg_options = {'wal_level' : 'replica' }
1298
+ )
1299
+
1300
+ node_restored .cleanup ()
1301
+
1302
+ self .restore_node (
1303
+ backup_dir , 'node' , node_restored )
1304
+
1305
+ node_restored .append_conf ("postgresql.auto.conf" , "archive_mode = 'off'" )
1306
+ node_restored .append_conf (
1307
+ "postgresql.auto.conf" , "port = {0}" .format (node_restored .port ))
1308
+
1309
+ node_restored .slow_start ()
1310
+ exit (1 )
0 commit comments