@@ -826,8 +826,13 @@ pg_ptrack_get_and_clear(Oid tablespace_oid, Oid db_oid, Oid rel_oid,
826
826
res_db = pgut_execute (backup_conn ,
827
827
"SELECT datname FROM pg_database WHERE oid=$1" ,
828
828
1 , (const char * * ) params );
829
+
830
+ /*
831
+ * If database is not found, it's not an error.
832
+ * It could have been deleted since previous backup.
833
+ */
829
834
if (PQntuples (res_db ) != 1 || PQnfields (res_db ) != 1 )
830
- elog ( ERROR , "cannot find database by oid %u" , db_oid ) ;
835
+ return NULL ;
831
836
832
837
dbname = pstrdup (PQgetvalue (res_db , 0 , 0 ));
833
838
PQclear (res_db );
@@ -1877,22 +1882,24 @@ make_pagemap_from_ptrack(parray *files)
1877
1882
/* get ptrack map for all segments of the relation in a raw format */
1878
1883
ptrack_nonparsed = pg_ptrack_get_and_clear (tablespace_oid , db_oid ,
1879
1884
rel_oid , & ptrack_nonparsed_size );
1885
+ if (ptrack_nonparsed != NULL )
1886
+ {
1887
+ /*
1888
+ * FIXME When do we cut VARHDR from ptrack_nonparsed?
1889
+ * Compute the beginning of the ptrack map related to this segment
1890
+ */
1891
+ start_addr = (RELSEG_SIZE /HEAPBLOCKS_PER_BYTE )* p -> segno ;
1880
1892
1881
- /*
1882
- * FIXME When do we cut VARHDR from ptrack_nonparsed?
1883
- * Compute the beginning of the ptrack map related to this segment
1884
- */
1885
- start_addr = (RELSEG_SIZE /HEAPBLOCKS_PER_BYTE )* p -> segno ;
1886
-
1887
- if (start_addr + RELSEG_SIZE /HEAPBLOCKS_PER_BYTE > ptrack_nonparsed_size )
1888
- p -> pagemap .bitmapsize = ptrack_nonparsed_size - start_addr ;
1889
- else
1890
- p -> pagemap .bitmapsize = RELSEG_SIZE /HEAPBLOCKS_PER_BYTE ;
1893
+ if (start_addr + RELSEG_SIZE /HEAPBLOCKS_PER_BYTE > ptrack_nonparsed_size )
1894
+ p -> pagemap .bitmapsize = ptrack_nonparsed_size - start_addr ;
1895
+ else
1896
+ p -> pagemap .bitmapsize = RELSEG_SIZE /HEAPBLOCKS_PER_BYTE ;
1891
1897
1892
- p -> pagemap .bitmap = pg_malloc (p -> pagemap .bitmapsize );
1893
- memcpy (p -> pagemap .bitmap , ptrack_nonparsed + start_addr , p -> pagemap .bitmapsize );
1898
+ p -> pagemap .bitmap = pg_malloc (p -> pagemap .bitmapsize );
1899
+ memcpy (p -> pagemap .bitmap , ptrack_nonparsed + start_addr , p -> pagemap .bitmapsize );
1894
1900
1895
- pg_free (ptrack_nonparsed );
1901
+ pg_free (ptrack_nonparsed );
1902
+ }
1896
1903
}
1897
1904
}
1898
1905
}
0 commit comments