@@ -596,11 +596,11 @@ do_backup_instance(void)
596596 {
597597 XLogRecPtr ptrack_lsn = get_last_ptrack_lsn ();
598598
599- if (ptrack_lsn > prev_backup -> stop_lsn )
599+ if (ptrack_lsn > prev_backup -> stop_lsn || ptrack_lsn == InvalidXLogRecPtr )
600600 {
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 from STOP LSN of previous backup %lx.\n"
602602 "Create new full backup before an incremental one." ,
603- ptrack_lsn , prev_backup -> start_lsn );
603+ ptrack_lsn , prev_backup -> stop_lsn );
604604 }
605605 parray_qsort (backup_files_list , pgFileComparePath );
606606 make_pagemap_from_ptrack (backup_files_list );
@@ -782,14 +782,17 @@ do_backup(void)
782782 current .stream = stream_wal ;
783783
784784 is_ptrack_support = pg_ptrack_support ();
785+ if (is_ptrack_support )
786+ {
787+ is_ptrack_enable = pg_ptrack_enable ();
788+ }
785789
786790 if (current .backup_mode == BACKUP_MODE_DIFF_PTRACK )
787791 {
788792 if (!is_ptrack_support )
789793 elog (ERROR , "This PostgreSQL instance does not support ptrack" );
790794 else
791795 {
792- is_ptrack_enable = pg_ptrack_enable ();
793796 if (!is_ptrack_enable )
794797 elog (ERROR , "Ptrack is disabled" );
795798 }
@@ -1060,16 +1063,23 @@ pg_ptrack_support(void)
10601063 PGresult * res_db ;
10611064
10621065 res_db = pgut_execute (backup_conn ,
1063- "SELECT proname FROM pg_proc WHERE proname='pg_ptrack_clear' " ,
1066+ "SELECT ptrack_version() " ,
10641067 0 , NULL );
10651068
10661069 if (PQntuples (res_db ) == 0 )
10671070 {
10681071 PQclear (res_db );
10691072 return false;
10701073 }
1071- PQclear (res_db );
10721074
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 );
10731083 return true;
10741084}
10751085
@@ -1546,13 +1556,13 @@ pg_stop_backup(pgBackup *backup)
15461556 */
15471557 sent = pgut_send (conn ,
15481558 "SELECT *, txid_snapshot_xmax(txid_current_snapshot()),"
1549- " current_timestamp(0)::timestamp "
1559+ " current_timestamp(0)::timestamptz "
15501560 " FROM pg_stop_backup(false)" ,
15511561 0 , NULL , WARNING );
15521562 else
15531563 sent = pgut_send (conn ,
15541564 "SELECT *, txid_snapshot_xmax(txid_current_snapshot()),"
1555- " current_timestamp(0)::timestamp "
1565+ " current_timestamp(0)::timestamptz "
15561566 " FROM pg_stop_backup()" ,
15571567 0 , NULL , WARNING );
15581568
0 commit comments