@@ -1241,3 +1241,70 @@ def test_archive_restore_to_restore_point(self):
12411241
12421242 # Clean after yourself
12431243 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