mirror of
https://github.com/postgres/postgres.git
synced 2025-04-24 10:47:04 +03:00
Fix a confusing amcheck corruption message.
Don't complain about the last TOAST chunk number being different from what we expected if there are no TOAST chunks at all. In such a case, saying that the final chunk number is 0 is not really accurate, and the fact the value is missing from the TOAST table is reported separately anyway. Mark Dilger Discussion: http://postgr.es/m/AA5506CE-7D2A-42E4-A51D-358635E3722D@enterprisedb.com
This commit is contained in:
parent
c6fc50cb40
commit
4078ce65a0
@ -1100,14 +1100,14 @@ check_tuple_attribute(HeapCheckContext *ctx)
|
|||||||
check_toast_tuple(toasttup, ctx);
|
check_toast_tuple(toasttup, ctx);
|
||||||
ctx->chunkno++;
|
ctx->chunkno++;
|
||||||
}
|
}
|
||||||
if (ctx->chunkno != (ctx->endchunk + 1))
|
|
||||||
report_corruption(ctx,
|
|
||||||
psprintf("final toast chunk number %u differs from expected value %u",
|
|
||||||
ctx->chunkno, (ctx->endchunk + 1)));
|
|
||||||
if (!found_toasttup)
|
if (!found_toasttup)
|
||||||
report_corruption(ctx,
|
report_corruption(ctx,
|
||||||
psprintf("toasted value for attribute %u missing from toast table",
|
psprintf("toasted value for attribute %u missing from toast table",
|
||||||
ctx->attnum));
|
ctx->attnum));
|
||||||
|
else if (ctx->chunkno != (ctx->endchunk + 1))
|
||||||
|
report_corruption(ctx,
|
||||||
|
psprintf("final toast chunk number %u differs from expected value %u",
|
||||||
|
ctx->chunkno, (ctx->endchunk + 1)));
|
||||||
systable_endscan_ordered(toastscan);
|
systable_endscan_ordered(toastscan);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -296,7 +296,7 @@ close($file)
|
|||||||
$node->start;
|
$node->start;
|
||||||
|
|
||||||
# Ok, Xids and page layout look ok. We can run corruption tests.
|
# Ok, Xids and page layout look ok. We can run corruption tests.
|
||||||
plan tests => 20;
|
plan tests => 19;
|
||||||
|
|
||||||
# Check that pg_amcheck runs against the uncorrupted table without error.
|
# Check that pg_amcheck runs against the uncorrupted table without error.
|
||||||
$node->command_ok(['pg_amcheck', '-p', $port, 'postgres'],
|
$node->command_ok(['pg_amcheck', '-p', $port, 'postgres'],
|
||||||
@ -489,7 +489,6 @@ for (my $tupidx = 0; $tupidx < ROWCOUNT; $tupidx++)
|
|||||||
|
|
||||||
$header = header(0, $offnum, 2);
|
$header = header(0, $offnum, 2);
|
||||||
push @expected,
|
push @expected,
|
||||||
qr/${header}final toast chunk number 0 differs from expected value \d+/,
|
|
||||||
qr/${header}toasted value for attribute 2 missing from toast table/;
|
qr/${header}toasted value for attribute 2 missing from toast table/;
|
||||||
}
|
}
|
||||||
elsif ($offnum == 14)
|
elsif ($offnum == 14)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user