diff --git a/src/backend/access/gist/gistscan.c b/src/backend/access/gist/gistscan.c index 933ca0f6c6..919ae5c374 100644 --- a/src/backend/access/gist/gistscan.c +++ b/src/backend/access/gist/gistscan.c @@ -8,7 +8,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/access/gist/gistscan.c,v 1.59 2005/06/27 12:45:22 teodor Exp $ + * $PostgreSQL: pgsql/src/backend/access/gist/gistscan.c,v 1.60 2005/09/22 18:49:45 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -380,7 +380,7 @@ gistadjone(IndexScanDesc scan, */ static void adjustiptr(IndexScanDesc scan, - ItemPointer iptr, GISTSearchStack *stk, + ItemPointer iptr, GISTSearchStack *stk, int op, BlockNumber blkno, OffsetNumber offnum, XLogRecPtr newlsn, XLogRecPtr oldlsn) @@ -422,7 +422,8 @@ adjustiptr(IndexScanDesc scan, } break; default: - elog(ERROR, "Bad operation in GiST scan adjust: %d", op); + elog(ERROR, "unrecognized GiST scan adjust operation: %d", + op); } } } diff --git a/src/backend/access/gist/gistutil.c b/src/backend/access/gist/gistutil.c index 5b6d13a7a3..193b687ce2 100644 --- a/src/backend/access/gist/gistutil.c +++ b/src/backend/access/gist/gistutil.c @@ -8,7 +8,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/access/gist/gistutil.c,v 1.5 2005/06/30 17:52:14 teodor Exp $ + * $PostgreSQL: pgsql/src/backend/access/gist/gistutil.c,v 1.6 2005/09/22 18:49:45 tgl Exp $ *------------------------------------------------------------------------- */ #include "postgres.h" @@ -71,7 +71,7 @@ gistfillbuffer(Relation r, Page page, IndexTuple *itup, l = PageAddItem(page, (Item) itup[i], IndexTupleSize(itup[i]), off, LP_USED); if (l == InvalidOffsetNumber) - elog(ERROR, "gistfillbuffer: failed to add index item to \"%s\"", + elog(ERROR, "failed to add item to index page in \"%s\"", RelationGetRelationName(r)); off++; } @@ -645,8 +645,9 @@ gistchoose(Relation r, Page p, IndexTuple it, /* it has compressed entry */ IndexTuple itup = (IndexTuple) PageGetItem(p, PageGetItemId(p, i)); if ( !GistPageIsLeaf(p) && GistTupleIsInvalid(itup) ) { - elog(LOG, "It's desirable to vacuum or reindex GiST index '%s' due to crash recovery", - RelationGetRelationName(r)); + ereport(LOG, + (errmsg("index \"%s\" needs VACUUM or REINDEX to finish crash recovery", + RelationGetRelationName(r)))); continue; } diff --git a/src/backend/access/gist/gistvacuum.c b/src/backend/access/gist/gistvacuum.c index bcd5ec559c..13496d3af6 100644 --- a/src/backend/access/gist/gistvacuum.c +++ b/src/backend/access/gist/gistvacuum.c @@ -8,7 +8,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/access/gist/gistvacuum.c,v 1.7 2005/09/02 19:02:19 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/access/gist/gistvacuum.c,v 1.8 2005/09/22 18:49:45 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -78,7 +78,8 @@ gistVacuumUpdate( GistVacuum *gv, BlockNumber blkno, bool needunion ) { needchildunion = (GistTupleIsInvalid(idxtuple)) ? true : false; if ( needchildunion ) - elog(DEBUG2,"gistVacuumUpdate: Need union for block %u", ItemPointerGetBlockNumber(&(idxtuple->t_tid))); + elog(DEBUG2, "gistVacuumUpdate: need union for block %u", + ItemPointerGetBlockNumber(&(idxtuple->t_tid))); chldtuple = gistVacuumUpdate( gv, ItemPointerGetBlockNumber(&(idxtuple->t_tid)), needchildunion ); @@ -309,10 +310,10 @@ gistvacuumcleanup(PG_FUNCTION_ARGS) { } freeGISTstate(&(gv.giststate)); MemoryContextDelete(gv.opCtx); - } else if (needFullVacuum) { - elog(NOTICE,"It's desirable to vacuum full or reindex GiST index '%s' due to crash recovery", - RelationGetRelationName(rel)); - } + } else if (needFullVacuum) + ereport(NOTICE, + (errmsg("index \"%s\" needs VACUUM FULL or REINDEX to finish crash recovery", + RelationGetRelationName(rel)))); needFullVacuum = false; diff --git a/src/backend/access/gist/gistxlog.c b/src/backend/access/gist/gistxlog.c index 49766a4608..76ff96d5bb 100644 --- a/src/backend/access/gist/gistxlog.c +++ b/src/backend/access/gist/gistxlog.c @@ -8,7 +8,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/access/gist/gistxlog.c,v 1.7 2005/07/01 13:18:17 teodor Exp $ + * $PostgreSQL: pgsql/src/backend/access/gist/gistxlog.c,v 1.8 2005/09/22 18:49:45 tgl Exp $ *------------------------------------------------------------------------- */ #include "postgres.h" @@ -162,7 +162,7 @@ gistRedoEntryUpdateRecord(XLogRecPtr lsn, XLogRecord *record, bool isnewroot) { return; buffer = XLogReadBuffer(false, reln, xlrec.data->blkno); if (!BufferIsValid(buffer)) - elog(PANIC, "gistRedoEntryUpdateRecord: block %u unfound", xlrec.data->blkno); + elog(PANIC, "block %u unfound", xlrec.data->blkno); page = (Page) BufferGetPage(buffer); if ( isnewroot ) { @@ -173,7 +173,7 @@ gistRedoEntryUpdateRecord(XLogRecPtr lsn, XLogRecord *record, bool isnewroot) { } } else { if ( PageIsNew((PageHeader) page) ) - elog(PANIC, "gistRedoEntryUpdateRecord: uninitialized page blkno %u", xlrec.data->blkno); + elog(PANIC, "uninitialized page %u", xlrec.data->blkno); if (XLByteLE(lsn, PageGetLSN(page))) { LockBuffer(buffer, BUFFER_LOCK_UNLOCK); ReleaseBuffer(buffer); @@ -270,11 +270,10 @@ gistRedoPageSplitRecord(XLogRecPtr lsn, XLogRecord *record ) { /* first of all wee need get F_LEAF flag from original page */ buffer = XLogReadBuffer( false, reln, xlrec.data->origblkno); if (!BufferIsValid(buffer)) - elog(PANIC, "gistRedoEntryUpdateRecord: block %u unfound", xlrec.data->origblkno); + elog(PANIC, "block %u unfound", xlrec.data->origblkno); page = (Page) BufferGetPage(buffer); if ( PageIsNew((PageHeader) page) ) - elog(PANIC, "gistRedoEntryUpdateRecord: uninitialized page blkno %u", - xlrec.data->origblkno); + elog(PANIC, "uninitialized page %u", xlrec.data->origblkno); flags = ( GistPageIsLeaf(page) ) ? F_LEAF : 0; LockBuffer(buffer, BUFFER_LOCK_UNLOCK); @@ -287,7 +286,7 @@ gistRedoPageSplitRecord(XLogRecPtr lsn, XLogRecord *record ) { buffer = XLogReadBuffer( !isorigpage, reln, newpage->header->blkno); if (!BufferIsValid(buffer)) - elog(PANIC, "gistRedoEntryUpdateRecord: block %u unfound", newpage->header->blkno); + elog(PANIC, "block %u unfound", newpage->header->blkno); page = (Page) BufferGetPage(buffer); if (XLByteLE(lsn, PageGetLSN(page))) { @@ -330,7 +329,7 @@ gistRedoCreateIndex(XLogRecPtr lsn, XLogRecord *record) { return; buffer = XLogReadBuffer( true, reln, GIST_ROOT_BLKNO); if (!BufferIsValid(buffer)) - elog(PANIC, "gistRedoCreateIndex: block unfound"); + elog(PANIC, "root block unfound"); page = (Page) BufferGetPage(buffer); if (!PageIsNew((PageHeader) page) && XLByteLE(lsn, PageGetLSN(page))) { @@ -450,6 +449,7 @@ gist_desc(char *buf, uint8 xl_info, char *rec) ((gistxlogInsertComplete*)rec)->node.spcNode, ((gistxlogInsertComplete*)rec)->node.dbNode, ((gistxlogInsertComplete*)rec)->node.relNode); + break; default: elog(PANIC, "gist_desc: unknown op code %u", info); } @@ -474,9 +474,9 @@ static Buffer gistXLogReadAndLockBuffer( Relation r, BlockNumber blkno ) { Buffer buffer = XLogReadBuffer( false, r, blkno ); if (!BufferIsValid(buffer)) - elog(PANIC, "gistXLogReadAndLockBuffer: block %u unfound", blkno); + elog(PANIC, "block %u unfound", blkno); if ( PageIsNew( (PageHeader)(BufferGetPage(buffer)) ) ) - elog(PANIC, "gistXLogReadAndLockBuffer: uninitialized page blkno %u", blkno); + elog(PANIC, "uninitialized page %u", blkno); return buffer; } @@ -507,7 +507,7 @@ gixtxlogFindPath( Relation index, gistIncompleteInsert *insert ) { ptr = ptr->parent; } } else - elog(LOG, "gixtxlogFindPath: lost parent for block %u", insert->origblkno); + elog(LOG, "lost parent for block %u", insert->origblkno); } /* @@ -545,7 +545,7 @@ gistContinueInsert(gistIncompleteInsert *insert) { Page page; if (!BufferIsValid(buffer)) - elog(PANIC, "gistContinueInsert: root block unfound"); + elog(PANIC, "root block unfound"); page = BufferGetPage(buffer); if (XLByteLE(insert->lsn, PageGetLSN(page))) { @@ -580,10 +580,10 @@ gistContinueInsert(gistIncompleteInsert *insert) { numbuffer=1; buffers[numbuffer-1] = XLogReadBuffer(false, index, insert->path[i]); if (!BufferIsValid(buffers[numbuffer-1])) - elog(PANIC, "gistContinueInsert: block %u unfound", insert->path[i]); + elog(PANIC, "block %u unfound", insert->path[i]); pages[numbuffer-1] = BufferGetPage( buffers[numbuffer-1] ); if ( PageIsNew((PageHeader)(pages[numbuffer-1])) ) - elog(PANIC, "gistContinueInsert: uninitialized page blkno %u", insert->path[i]); + elog(PANIC, "uninitialized page %u", insert->path[i]); if (XLByteLE(insert->lsn, PageGetLSN(pages[numbuffer-1]))) { LockBuffer(buffers[numbuffer-1], BUFFER_LOCK_UNLOCK); @@ -614,7 +614,7 @@ gistContinueInsert(gistIncompleteInsert *insert) { /* no space left on page, so we should split */ buffers[numbuffer] = XLogReadBuffer(true, index, P_NEW); if (!BufferIsValid(buffers[numbuffer])) - elog(PANIC, "gistContinueInsert: can't create new block"); + elog(PANIC, "could not obtain new block"); GISTInitBuffer(buffers[numbuffer], 0); pages[numbuffer] = BufferGetPage( buffers[numbuffer] ); gistfillbuffer( index, pages[numbuffer], itup, lenitup, FirstOffsetNumber ); @@ -628,13 +628,13 @@ gistContinueInsert(gistIncompleteInsert *insert) { /* sanity check */ if ( i+1 != insert->pathlen ) - elog(PANIC,"gistContinueInsert: can't restore index '%s'", - RelationGetRelationName( index )); + elog(PANIC,"unexpected pathlen in index \"%s\"", + RelationGetRelationName( index )); /* fill new page */ buffers[numbuffer] = XLogReadBuffer(true, index, P_NEW); if (!BufferIsValid(buffers[numbuffer])) - elog(PANIC, "gistContinueInsert: can't create new block"); + elog(PANIC, "could not obtain new block"); GISTInitBuffer(buffers[numbuffer], 0); pages[numbuffer] = BufferGetPage( buffers[numbuffer] ); gistfillbuffer(index, pages[numbuffer], parentitup, pituplen, FirstOffsetNumber); @@ -644,12 +644,12 @@ gistContinueInsert(gistIncompleteInsert *insert) { GISTInitBuffer(buffers[0], 0); for(j=1;jnode.spcNode, insert->node.dbNode, insert->node.relNode); + ereport(LOG, + (errmsg("index %u/%u/%u needs VACUUM or REINDEX to finish crash recovery", + insert->node.spcNode, insert->node.dbNode, insert->node.relNode), + errdetail("Incomplete insertion detected during crash replay."))); } void