diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2002-09-02 01:05:06 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2002-09-02 01:05:06 +0000 |
commit | c7a165adc64e3e67e0dcee4088d84a0638b3515a (patch) | |
tree | 97d02a63e6ab6a516cb8e8ba24b0ba42782d202d /src/backend/commands/vacuum.c | |
parent | fcd34f9f7ff561213beef97f93c32f415e35a79c (diff) | |
download | postgresql-c7a165adc64e3e67e0dcee4088d84a0638b3515a.tar.gz postgresql-c7a165adc64e3e67e0dcee4088d84a0638b3515a.zip |
Code review for HeapTupleHeader changes. Add version number to page headers
(overlaying low byte of page size) and add HEAP_HASOID bit to t_infomask,
per earlier discussion. Simplify scheme for overlaying fields in tuple
header (no need for cmax to live in more than one place). Don't try to
clear infomask status bits in tqual.c --- not safe to do it there. Don't
try to force output table of a SELECT INTO to have OIDs, either. Get rid
of unnecessarily complex three-state scheme for TupleDesc.tdhasoids, which
has already caused one recent failure. Improve documentation.
Diffstat (limited to 'src/backend/commands/vacuum.c')
-rw-r--r-- | src/backend/commands/vacuum.c | 36 |
1 files changed, 20 insertions, 16 deletions
diff --git a/src/backend/commands/vacuum.c b/src/backend/commands/vacuum.c index cda893fab75..3e8cc79596f 100644 --- a/src/backend/commands/vacuum.c +++ b/src/backend/commands/vacuum.c @@ -13,7 +13,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/commands/vacuum.c,v 1.235 2002/08/30 22:18:05 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/commands/vacuum.c,v 1.236 2002/09/02 01:05:04 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -396,7 +396,6 @@ getrels(const RangeVar *vacrel, const char *stmttype) { /* Make a relation list entry for this guy */ oldcontext = MemoryContextSwitchTo(vac_context); - AssertTupleDescHasOid(pgclass->rd_att); vrl = lappendi(vrl, HeapTupleGetOid(tuple)); MemoryContextSwitchTo(oldcontext); } @@ -1861,8 +1860,9 @@ repair_frag(VRelStats *vacrelstats, Relation onerel, /* NO ELOG(ERROR) TILL CHANGES ARE LOGGED */ START_CRIT_SECTION(); - tuple.t_data->t_infomask &= - ~(HEAP_XMIN_COMMITTED | HEAP_XMIN_INVALID | HEAP_MOVED_IN); + tuple.t_data->t_infomask &= ~(HEAP_XMIN_COMMITTED | + HEAP_XMIN_INVALID | + HEAP_MOVED_IN); tuple.t_data->t_infomask |= HEAP_MOVED_OFF; HeapTupleHeaderSetXvac(tuple.t_data, myXID); @@ -1901,12 +1901,16 @@ repair_frag(VRelStats *vacrelstats, Relation onerel, * Update the state of the copied tuple, and store it * on the destination page. */ - newtup.t_data->t_infomask &= - ~(HEAP_XMIN_COMMITTED | HEAP_XMIN_INVALID | HEAP_MOVED_OFF); + newtup.t_data->t_infomask &= ~(HEAP_XMIN_COMMITTED | + HEAP_XMIN_INVALID | + HEAP_MOVED_OFF); newtup.t_data->t_infomask |= HEAP_MOVED_IN; HeapTupleHeaderSetXvac(newtup.t_data, myXID); - newoff = PageAddItem(ToPage, (Item) newtup.t_data, tuple_len, - InvalidOffsetNumber, LP_USED); + newoff = PageAddItem(ToPage, + (Item) newtup.t_data, + tuple_len, + InvalidOffsetNumber, + LP_USED); if (newoff == InvalidOffsetNumber) { elog(PANIC, "moving chain: failed to add item with len = %lu to page %u", @@ -2038,11 +2042,11 @@ repair_frag(VRelStats *vacrelstats, Relation onerel, START_CRIT_SECTION(); /* - * Mark new tuple as moved_in by vacuum and store vacuum XID - * in t_cid !!! + * Mark new tuple as MOVED_IN by me. */ - newtup.t_data->t_infomask &= - ~(HEAP_XMIN_COMMITTED | HEAP_XMIN_INVALID | HEAP_MOVED_OFF); + newtup.t_data->t_infomask &= ~(HEAP_XMIN_COMMITTED | + HEAP_XMIN_INVALID | + HEAP_MOVED_OFF); newtup.t_data->t_infomask |= HEAP_MOVED_IN; HeapTupleHeaderSetXvac(newtup.t_data, myXID); @@ -2064,11 +2068,11 @@ repair_frag(VRelStats *vacrelstats, Relation onerel, newtup.t_self = newtup.t_data->t_ctid; /* - * Mark old tuple as moved_off by vacuum and store vacuum XID - * in t_cid !!! + * Mark old tuple as MOVED_OFF by me. */ - tuple.t_data->t_infomask &= - ~(HEAP_XMIN_COMMITTED | HEAP_XMIN_INVALID | HEAP_MOVED_IN); + tuple.t_data->t_infomask &= ~(HEAP_XMIN_COMMITTED | + HEAP_XMIN_INVALID | + HEAP_MOVED_IN); tuple.t_data->t_infomask |= HEAP_MOVED_OFF; HeapTupleHeaderSetXvac(tuple.t_data, myXID); |