@@ -596,11 +596,11 @@ do_backup_instance(void)
596
596
{
597
597
XLogRecPtr ptrack_lsn = get_last_ptrack_lsn ();
598
598
599
- if (ptrack_lsn > prev_backup -> stop_lsn )
599
+ if (ptrack_lsn > prev_backup -> stop_lsn || ptrack_lsn == InvalidXLogRecPtr )
600
600
{
601
- elog (ERROR ,"LSN from ptrack_control %lx differs from LSN of previous backup %lx.\n"
601
+ elog (ERROR ,"LSN from ptrack_control %lx differs fromSTOP LSN of previous backup %lx.\n"
602
602
"Create new full backup before an incremental one." ,
603
- ptrack_lsn ,prev_backup -> start_lsn );
603
+ ptrack_lsn ,prev_backup -> stop_lsn );
604
604
}
605
605
parray_qsort (backup_files_list ,pgFileComparePath );
606
606
make_pagemap_from_ptrack (backup_files_list );
@@ -782,14 +782,17 @@ do_backup(void)
782
782
current .stream = stream_wal ;
783
783
784
784
is_ptrack_support = pg_ptrack_support ();
785
+ if (is_ptrack_support )
786
+ {
787
+ is_ptrack_enable = pg_ptrack_enable ();
788
+ }
785
789
786
790
if (current .backup_mode == BACKUP_MODE_DIFF_PTRACK )
787
791
{
788
792
if (!is_ptrack_support )
789
793
elog (ERROR ,"This PostgreSQL instance does not support ptrack" );
790
794
else
791
795
{
792
- is_ptrack_enable = pg_ptrack_enable ();
793
796
if (!is_ptrack_enable )
794
797
elog (ERROR ,"Ptrack is disabled" );
795
798
}
@@ -1060,16 +1063,23 @@ pg_ptrack_support(void)
1060
1063
PGresult * res_db ;
1061
1064
1062
1065
res_db = pgut_execute (backup_conn ,
1063
- "SELECTproname FROM pg_proc WHERE proname='pg_ptrack_clear' " ,
1066
+ "SELECTptrack_version() " ,
1064
1067
0 ,NULL );
1065
1068
1066
1069
if (PQntuples (res_db )== 0 )
1067
1070
{
1068
1071
PQclear (res_db );
1069
1072
return false;
1070
1073
}
1071
- PQclear (res_db );
1072
1074
1075
+ /* Now we support only ptrack version 1.3 */
1076
+ if (strcmp (PQgetvalue (res_db ,0 ,0 ),"1.3" )!= 0 )
1077
+ {
1078
+ PQclear (res_db );
1079
+ return false;
1080
+ }
1081
+
1082
+ PQclear (res_db );
1073
1083
return true;
1074
1084
}
1075
1085
@@ -1546,13 +1556,13 @@ pg_stop_backup(pgBackup *backup)
1546
1556
*/
1547
1557
sent = pgut_send (conn ,
1548
1558
"SELECT *, txid_snapshot_xmax(txid_current_snapshot()),"
1549
- " current_timestamp(0)::timestamp "
1559
+ " current_timestamp(0)::timestamptz "
1550
1560
" FROM pg_stop_backup(false)" ,
1551
1561
0 ,NULL ,WARNING );
1552
1562
else
1553
1563
sent = pgut_send (conn ,
1554
1564
"SELECT *, txid_snapshot_xmax(txid_current_snapshot()),"
1555
- " current_timestamp(0)::timestamp "
1565
+ " current_timestamp(0)::timestamptz "
1556
1566
" FROM pg_stop_backup()" ,
1557
1567
0 ,NULL ,WARNING );
1558
1568