Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 7ee0803

Browse files
committed
make pg_probackup compatible with ptrack 1.5;
cleanup the code; fix parallel pg_ptrack_get_block()
1 parent 0905edf commit 7ee0803

File tree

2 files changed

+20
-24
lines changed

2 files changed

+20
-24
lines changed

src/backup.c

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1070,10 +1070,10 @@ pg_ptrack_support(void)
10701070
return false;
10711071
}
10721072

1073-
/* Now we support only ptrack version 1.3 */
1074-
if (strcmp(PQgetvalue(res_db, 0, 0), "1.4") != 0)
1073+
/* Now we support only ptrack version 1.5 */
1074+
if (strcmp(PQgetvalue(res_db, 0, 0), "1.5") != 0)
10751075
{
1076-
elog(WARNING, "Update your ptrack to the version 1.4. Current version is %s", PQgetvalue(res_db, 0, 0));
1076+
elog(WARNING, "Update your ptrack to the version 1.5. Current version is %s", PQgetvalue(res_db, 0, 0));
10771077
PQclear(res_db);
10781078
return false;
10791079
}
@@ -2692,51 +2692,51 @@ pg_ptrack_get_block(Oid dbOid,
26922692
BlockNumber blknum,
26932693
size_t *result_size)
26942694
{
2695-
PGresult *res_db;
26962695
PGresult *res;
2697-
const char *dbname;
26982696
char *params[4];
26992697
char *result;
2700-
char *val;
2701-
PGconn *tmp_conn;
2698+
PGconn *tmp_conn = NULL;
27022699

27032700
params[0] = palloc(64);
27042701
params[1] = palloc(64);
27052702
params[2] = palloc(64);
27062703
params[3] = palloc(64);
27072704

27082705
/*
2709-
* Use backup_conn, cause we can do it from any database.
2706+
* Use tmp_conn, since we may work in parallel threads.
2707+
* We can connect to any database.
27102708
*/
27112709
sprintf(params[0], "%i", tblsOid);
27122710
sprintf(params[1], "%i", dbOid);
27132711
sprintf(params[2], "%i", relOid);
27142712
sprintf(params[3], "%u", blknum);
27152713

2714+
tmp_conn = pgut_connect(pgut_dbname);
2715+
27162716
//elog(LOG, "db %i pg_ptrack_get_block(%i, %i, %u)",dbOid, tblsOid, relOid, blknum);
2717-
res = pgut_execute(backup_conn, "SELECT pg_ptrack_get_block_2($1, $2, $3, $4)",
2717+
res = pgut_execute(tmp_conn, "SELECT pg_ptrack_get_block_2($1, $2, $3, $4)",
27182718
4, (const char **)params, true);
27192719

27202720
if (PQnfields(res) != 1)
27212721
{
2722-
elog(LOG, "cannot get file block for relation oid %u",
2722+
elog(VERBOSE, "cannot get file block for relation oid %u",
27232723
relOid);
27242724
return NULL;
27252725
}
27262726

27272727
if (PQgetisnull(res, 0, 0))
27282728
{
2729-
elog(LOG, "cannot get file block for relation oid %u",
2729+
elog(VERBOSE, "cannot get file block for relation oid %u",
27302730
relOid);
27312731
return NULL;
27322732
}
27332733

2734-
val = PQgetvalue(res, 0, 0);
2735-
27362734
result = (char *) PQunescapeBytea((unsigned char *) PQgetvalue(res, 0, 0),
27372735
result_size);
27382736

27392737
PQclear(res);
2738+
pgut_disconnect(tmp_conn);
2739+
27402740
pfree(params[0]);
27412741
pfree(params[1]);
27422742
pfree(params[2]);

src/data.c

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -258,10 +258,9 @@ backup_data_page(pgFile *file, XLogRecPtr prev_backup_start_lsn,
258258
{
259259
/* This block was truncated.*/
260260
header.compressed_size = PageIsTruncated;
261-
page_is_valid = true;
262261
/* Page is not actually valid, but it is absent
263262
* and we're not going to reread it or validate */
264-
// elog(WARNING, "backup blkno %u. PageIsTruncated", blknum);
263+
page_is_valid = true;
265264
}
266265

267266
if (result == 1)
@@ -272,7 +271,6 @@ backup_data_page(pgFile *file, XLogRecPtr prev_backup_start_lsn,
272271
if (backup_mode == BACKUP_MODE_DIFF_PTRACK)
273272
{
274273
size_t page_size = 0;
275-
PageHeader phdr = (PageHeader) page;
276274

277275
free(page);
278276
page = NULL;
@@ -283,7 +281,6 @@ backup_data_page(pgFile *file, XLogRecPtr prev_backup_start_lsn,
283281
{
284282
/* This block was truncated.*/
285283
header.compressed_size = PageIsTruncated;
286-
// elog(WARNING, "backup blkno %u. reread PageIsTruncated", blknum);
287284
}
288285
else if (page_size != BLCKSZ)
289286
{
@@ -312,18 +309,18 @@ backup_data_page(pgFile *file, XLogRecPtr prev_backup_start_lsn,
312309

313310
file->compress_alg = compress_alg;
314311

315-
// elog(WARNING, "backup blkno %u. header.compressed_size %d", blknum, header.compressed_size);
316312
Assert (header.compressed_size <= BLCKSZ);
317313
}
318314

319315
write_buffer_size = sizeof(header);
320316

321-
/* The page was truncated. Write only header
322-
/* to know that we must truncate restored file */
317+
/*
318+
* The page was truncated. Write only header
319+
* to know that we must truncate restored file
320+
*/
323321
if (header.compressed_size == PageIsTruncated)
324322
{
325323
memcpy(write_buffer, &header, sizeof(header));
326-
// elog(WARNING, "page was truncated in file %s block %u", file->path, header.block);
327324
}
328325
/* The page compression failed. Write it as is. */
329326
else if (header.compressed_size == -1)
@@ -341,8 +338,8 @@ backup_data_page(pgFile *file, XLogRecPtr prev_backup_start_lsn,
341338
write_buffer_size += MAXALIGN(header.compressed_size);
342339
}
343340

344-
// elog(WARNING, "backup blkno %u, compressed_size %d write_buffer_size %ld",
345-
// blknum, header.compressed_size, write_buffer_size);
341+
/* elog(VERBOSE, "backup blkno %u, compressed_size %d write_buffer_size %ld",
342+
blknum, header.compressed_size, write_buffer_size); */
346343

347344
/* Update CRC */
348345
COMP_CRC32C(*crc, &write_buffer, write_buffer_size);
@@ -590,7 +587,6 @@ restore_data_file(const char *from_root,
590587
break;
591588
}
592589

593-
//elog(VERBOSE, "file %s, header compressed size %d", file->path, header.compressed_size);
594590
Assert(header.compressed_size <= BLCKSZ);
595591

596592
read_len = fread(compressed_page.data, 1,

0 commit comments

Comments
 (0)