@@ -1327,6 +1327,48 @@ def test_merge_different_compression_algo(self):
13271327
13281328self .del_test_dir (module_name ,fname )
13291329
1330+ def test_merge_different_wal_modes (self ):
1331+ """
1332+ Check that backups with different wal modes can be merged
1333+ correctly
1334+ """
1335+ fname = self .id ().split ('.' )[3 ]
1336+ backup_dir = os .path .join (self .tmp_path ,module_name ,fname ,'backup' )
1337+ node = self .make_simple_node (
1338+ base_dir = os .path .join (module_name ,fname ,'node' ),
1339+ set_replication = True ,
1340+ initdb_params = ['--data-checksums' ])
1341+
1342+ self .init_pb (backup_dir )
1343+ self .add_instance (backup_dir ,'node' ,node )
1344+ self .set_archiving (backup_dir ,'node' ,node )
1345+ node .slow_start ()
1346+
1347+ # FULL stream backup
1348+ self .backup_node (
1349+ backup_dir ,'node' ,node ,options = ['--stream' ])
1350+
1351+ # DELTA archive backup
1352+ backup_id = self .backup_node (
1353+ backup_dir ,'node' ,node ,backup_type = 'delta' )
1354+
1355+ self .merge_backup (backup_dir ,'node' ,backup_id = backup_id )
1356+
1357+ self .assertEqual (
1358+ 'ARCHIVE' ,self .show_pb (backup_dir ,'node' ,backup_id )['wal' ])
1359+
1360+ # DELTA stream backup
1361+ backup_id = self .backup_node (
1362+ backup_dir ,'node' ,node ,
1363+ backup_type = 'delta' ,options = ['--stream' ])
1364+
1365+ self .merge_backup (backup_dir ,'node' ,backup_id = backup_id )
1366+
1367+ self .assertEqual (
1368+ 'STREAM' ,self .show_pb (backup_dir ,'node' ,backup_id )['wal' ])
1369+
1370+ self .del_test_dir (module_name ,fname )
1371+
13301372# 1. always use parent link when merging (intermediates may be from different chain)
13311373# 2. page backup we are merging with may disappear after failed merge,
13321374# it should not be possible to continue merge after that