elog cleanup - Mailing list pgsql-patches

From Bruce Momjian
Subject elog cleanup
Date
Msg-id 200202190516.g1J5GFM07350@candle.pha.pa.us
Whole thread Raw
Responses Re: elog cleanup
Re: elog cleanup
List pgsql-patches
This patch fixes several issues with our elog() handling:

o Uniformly spaces tags so log message are indented the same amount:

    LOG:     database system was shut down at 2002-02-19 05:51:35 CET
    LOG:     checkpoint record is at 0/BF1D8AC
    LOG:     redo record is at 0/BF1D8AC; undo record is at 0/0; Shut...
    LOG:     next transaction id: 242; next oid: 866295
    LOG:     database system is ready
    ERROR:   parser: parse error at or near "asdf"

o Renames REALLYFATAL to CRASH (per Tom)

o Remove STOP and make it CRASH

o Add INFO level that prints only to the client

o Add LOG level to print messages only to the server log

o Cause VACUUM to only print to the client

o Change NOTICE to INFO when informational messages are sent.  This
mimics the behavior of syslog(3). Before we only had NOTICE.  INFO now
gives us LOG_INFO for messages like sequence creation with SERIAL:

     LOG_ALERT     A condition that should be corrected immediately, such as a
                   corrupted system database.

     LOG_CRIT      Critical conditions, e.g., hard device errors.

     LOG_ERR       Errors.

     LOG_WARNING   Warning messages.

     LOG_NOTICE    Conditions that are not error conditions, but should possi-
                   bly be handled specially.

     LOG_INFO      Informational messages.

     LOG_DEBUG     Messages that contain information normally of use only when
                   debugging a program.

o Server startup message now are labeled with LOG instead of DEBUG,
preventing confusion when people think they have debug enabled.

--
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 853-3000
  +  If your life is a hard drive,     |  830 Blythe Avenue
  +  Christ can be your backup.        |  Drexel Hill, Pennsylvania 19026
Index: src/backend/access/gist/gist.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/access/gist/gist.c,v
retrieving revision 1.88
diff -c -r1.88 gist.c
*** src/backend/access/gist/gist.c    2002/02/11 22:41:59    1.88
--- src/backend/access/gist/gist.c    2002/02/19 04:54:53
***************
*** 1953,1965 ****
  void
  gist_redo(XLogRecPtr lsn, XLogRecord *record)
  {
!     elog(STOP, "gist_redo: unimplemented");
  }

  void
  gist_undo(XLogRecPtr lsn, XLogRecord *record)
  {
!     elog(STOP, "gist_undo: unimplemented");
  }

  void
--- 1953,1965 ----
  void
  gist_redo(XLogRecPtr lsn, XLogRecord *record)
  {
!     elog(CRASH, "gist_redo: unimplemented");
  }

  void
  gist_undo(XLogRecPtr lsn, XLogRecord *record)
  {
!     elog(CRASH, "gist_undo: unimplemented");
  }

  void
Index: src/backend/access/hash/hash.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/access/hash/hash.c,v
retrieving revision 1.53
diff -c -r1.53 hash.c
*** src/backend/access/hash/hash.c    2001/10/25 05:49:20    1.53
--- src/backend/access/hash/hash.c    2002/02/19 04:54:53
***************
*** 468,480 ****
  void
  hash_redo(XLogRecPtr lsn, XLogRecord *record)
  {
!     elog(STOP, "hash_redo: unimplemented");
  }

  void
  hash_undo(XLogRecPtr lsn, XLogRecord *record)
  {
!     elog(STOP, "hash_undo: unimplemented");
  }

  void
--- 468,480 ----
  void
  hash_redo(XLogRecPtr lsn, XLogRecord *record)
  {
!     elog(CRASH, "hash_redo: unimplemented");
  }

  void
  hash_undo(XLogRecPtr lsn, XLogRecord *record)
  {
!     elog(CRASH, "hash_undo: unimplemented");
  }

  void
Index: src/backend/access/heap/heapam.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/access/heap/heapam.c,v
retrieving revision 1.129
diff -c -r1.129 heapam.c
*** src/backend/access/heap/heapam.c    2002/01/15 22:14:17    1.129
--- src/backend/access/heap/heapam.c    2002/02/19 04:54:55
***************
*** 1958,1968 ****

      buffer = XLogReadBuffer(false, reln, xlrec->block);
      if (!BufferIsValid(buffer))
!         elog(STOP, "heap_clean_redo: no block");

      page = (Page) BufferGetPage(buffer);
      if (PageIsNew((PageHeader) page))
!         elog(STOP, "heap_clean_redo: uninitialized page");

      if (XLByteLE(lsn, PageGetLSN(page)))
      {
--- 1958,1968 ----

      buffer = XLogReadBuffer(false, reln, xlrec->block);
      if (!BufferIsValid(buffer))
!         elog(CRASH, "heap_clean_redo: no block");

      page = (Page) BufferGetPage(buffer);
      if (PageIsNew((PageHeader) page))
!         elog(CRASH, "heap_clean_redo: uninitialized page");

      if (XLByteLE(lsn, PageGetLSN(page)))
      {
***************
*** 2015,2025 ****
      buffer = XLogReadBuffer(false, reln,
                          ItemPointerGetBlockNumber(&(xlrec->target.tid)));
      if (!BufferIsValid(buffer))
!         elog(STOP, "heap_delete_%sdo: no block", (redo) ? "re" : "un");

      page = (Page) BufferGetPage(buffer);
      if (PageIsNew((PageHeader) page))
!         elog(STOP, "heap_delete_%sdo: uninitialized page", (redo) ? "re" : "un");

      if (redo)
      {
--- 2015,2025 ----
      buffer = XLogReadBuffer(false, reln,
                          ItemPointerGetBlockNumber(&(xlrec->target.tid)));
      if (!BufferIsValid(buffer))
!         elog(CRASH, "heap_delete_%sdo: no block", (redo) ? "re" : "un");

      page = (Page) BufferGetPage(buffer);
      if (PageIsNew((PageHeader) page))
!         elog(CRASH, "heap_delete_%sdo: uninitialized page", (redo) ? "re" : "un");

      if (redo)
      {
***************
*** 2031,2044 ****
      }
      else if (XLByteLT(PageGetLSN(page), lsn))    /* changes are not applied
                                                   * ?! */
!         elog(STOP, "heap_delete_undo: bad page LSN");

      offnum = ItemPointerGetOffsetNumber(&(xlrec->target.tid));
      if (PageGetMaxOffsetNumber(page) >= offnum)
          lp = PageGetItemId(page, offnum);

      if (PageGetMaxOffsetNumber(page) < offnum || !ItemIdIsUsed(lp))
!         elog(STOP, "heap_delete_%sdo: invalid lp", (redo) ? "re" : "un");

      htup = (HeapTupleHeader) PageGetItem(page, lp);

--- 2031,2044 ----
      }
      else if (XLByteLT(PageGetLSN(page), lsn))    /* changes are not applied
                                                   * ?! */
!         elog(CRASH, "heap_delete_undo: bad page LSN");

      offnum = ItemPointerGetOffsetNumber(&(xlrec->target.tid));
      if (PageGetMaxOffsetNumber(page) >= offnum)
          lp = PageGetItemId(page, offnum);

      if (PageGetMaxOffsetNumber(page) < offnum || !ItemIdIsUsed(lp))
!         elog(CRASH, "heap_delete_%sdo: invalid lp", (redo) ? "re" : "un");

      htup = (HeapTupleHeader) PageGetItem(page, lp);

***************
*** 2054,2060 ****
          return;
      }

!     elog(STOP, "heap_delete_undo: unimplemented");
  }

  static void
--- 2054,2060 ----
          return;
      }

!     elog(CRASH, "heap_delete_undo: unimplemented");
  }

  static void
***************
*** 2080,2086 ****
      page = (Page) BufferGetPage(buffer);
      if (PageIsNew((PageHeader) page) &&
          (!redo || !(record->xl_info & XLOG_HEAP_INIT_PAGE)))
!         elog(STOP, "heap_insert_%sdo: uninitialized page", (redo) ? "re" : "un");

      if (redo)
      {
--- 2080,2086 ----
      page = (Page) BufferGetPage(buffer);
      if (PageIsNew((PageHeader) page) &&
          (!redo || !(record->xl_info & XLOG_HEAP_INIT_PAGE)))
!         elog(CRASH, "heap_insert_%sdo: uninitialized page", (redo) ? "re" : "un");

      if (redo)
      {
***************
*** 2104,2110 ****

          offnum = ItemPointerGetOffsetNumber(&(xlrec->target.tid));
          if (PageGetMaxOffsetNumber(page) + 1 < offnum)
!             elog(STOP, "heap_insert_redo: invalid max offset number");

          newlen = record->xl_len - SizeOfHeapInsert - SizeOfHeapHeader;
          Assert(newlen <= MaxTupleSize);
--- 2104,2110 ----

          offnum = ItemPointerGetOffsetNumber(&(xlrec->target.tid));
          if (PageGetMaxOffsetNumber(page) + 1 < offnum)
!             elog(CRASH, "heap_insert_redo: invalid max offset number");

          newlen = record->xl_len - SizeOfHeapInsert - SizeOfHeapHeader;
          Assert(newlen <= MaxTupleSize);
***************
*** 2128,2134 ****
          offnum = PageAddItem(page, (Item) htup, newlen, offnum,
                               LP_USED | OverwritePageMode);
          if (offnum == InvalidOffsetNumber)
!             elog(STOP, "heap_insert_redo: failed to add tuple");
          PageSetLSN(page, lsn);
          PageSetSUI(page, ThisStartUpID);        /* prev sui */
          UnlockAndWriteBuffer(buffer);
--- 2128,2134 ----
          offnum = PageAddItem(page, (Item) htup, newlen, offnum,
                               LP_USED | OverwritePageMode);
          if (offnum == InvalidOffsetNumber)
!             elog(CRASH, "heap_insert_redo: failed to add tuple");
          PageSetLSN(page, lsn);
          PageSetSUI(page, ThisStartUpID);        /* prev sui */
          UnlockAndWriteBuffer(buffer);
***************
*** 2138,2146 ****
      /* undo insert */
      if (XLByteLT(PageGetLSN(page), lsn))        /* changes are not applied
                                                   * ?! */
!         elog(STOP, "heap_insert_undo: bad page LSN");

!     elog(STOP, "heap_insert_undo: unimplemented");
  }

  /*
--- 2138,2146 ----
      /* undo insert */
      if (XLByteLT(PageGetLSN(page), lsn))        /* changes are not applied
                                                   * ?! */
!         elog(CRASH, "heap_insert_undo: bad page LSN");

!     elog(CRASH, "heap_insert_undo: unimplemented");
  }

  /*
***************
*** 2171,2181 ****
      buffer = XLogReadBuffer(false, reln,
                          ItemPointerGetBlockNumber(&(xlrec->target.tid)));
      if (!BufferIsValid(buffer))
!         elog(STOP, "heap_update_%sdo: no block", (redo) ? "re" : "un");

      page = (Page) BufferGetPage(buffer);
      if (PageIsNew((PageHeader) page))
!         elog(STOP, "heap_update_%sdo: uninitialized old page", (redo) ? "re" : "un");

      if (redo)
      {
--- 2171,2181 ----
      buffer = XLogReadBuffer(false, reln,
                          ItemPointerGetBlockNumber(&(xlrec->target.tid)));
      if (!BufferIsValid(buffer))
!         elog(CRASH, "heap_update_%sdo: no block", (redo) ? "re" : "un");

      page = (Page) BufferGetPage(buffer);
      if (PageIsNew((PageHeader) page))
!         elog(CRASH, "heap_update_%sdo: uninitialized old page", (redo) ? "re" : "un");

      if (redo)
      {
***************
*** 2189,2202 ****
      }
      else if (XLByteLT(PageGetLSN(page), lsn))    /* changes are not applied
                                                   * ?! */
!         elog(STOP, "heap_update_undo: bad old tuple page LSN");

      offnum = ItemPointerGetOffsetNumber(&(xlrec->target.tid));
      if (PageGetMaxOffsetNumber(page) >= offnum)
          lp = PageGetItemId(page, offnum);

      if (PageGetMaxOffsetNumber(page) < offnum || !ItemIdIsUsed(lp))
!         elog(STOP, "heap_update_%sdo: invalid lp", (redo) ? "re" : "un");

      htup = (HeapTupleHeader) PageGetItem(page, lp);

--- 2189,2202 ----
      }
      else if (XLByteLT(PageGetLSN(page), lsn))    /* changes are not applied
                                                   * ?! */
!         elog(CRASH, "heap_update_undo: bad old tuple page LSN");

      offnum = ItemPointerGetOffsetNumber(&(xlrec->target.tid));
      if (PageGetMaxOffsetNumber(page) >= offnum)
          lp = PageGetItemId(page, offnum);

      if (PageGetMaxOffsetNumber(page) < offnum || !ItemIdIsUsed(lp))
!         elog(CRASH, "heap_update_%sdo: invalid lp", (redo) ? "re" : "un");

      htup = (HeapTupleHeader) PageGetItem(page, lp);

***************
*** 2224,2230 ****
          goto newt;
      }

!     elog(STOP, "heap_update_undo: unimplemented");

      /* Deal with new tuple */

--- 2224,2230 ----
          goto newt;
      }

!     elog(CRASH, "heap_update_undo: unimplemented");

      /* Deal with new tuple */

***************
*** 2245,2251 ****
  newsame:;
      if (PageIsNew((PageHeader) page) &&
          (!redo || !(record->xl_info & XLOG_HEAP_INIT_PAGE)))
!         elog(STOP, "heap_update_%sdo: uninitialized page", (redo) ? "re" : "un");

      if (redo)
      {
--- 2245,2251 ----
  newsame:;
      if (PageIsNew((PageHeader) page) &&
          (!redo || !(record->xl_info & XLOG_HEAP_INIT_PAGE)))
!         elog(CRASH, "heap_update_%sdo: uninitialized page", (redo) ? "re" : "un");

      if (redo)
      {
***************
*** 2269,2275 ****

          offnum = ItemPointerGetOffsetNumber(&(xlrec->newtid));
          if (PageGetMaxOffsetNumber(page) + 1 < offnum)
!             elog(STOP, "heap_update_redo: invalid max offset number");

          hsize = SizeOfHeapUpdate + SizeOfHeapHeader;
          if (move)
--- 2269,2275 ----

          offnum = ItemPointerGetOffsetNumber(&(xlrec->newtid));
          if (PageGetMaxOffsetNumber(page) + 1 < offnum)
!             elog(CRASH, "heap_update_redo: invalid max offset number");

          hsize = SizeOfHeapUpdate + SizeOfHeapHeader;
          if (move)
***************
*** 2315,2321 ****
          offnum = PageAddItem(page, (Item) htup, newlen, offnum,
                               LP_USED | OverwritePageMode);
          if (offnum == InvalidOffsetNumber)
!             elog(STOP, "heap_update_redo: failed to add tuple");
          PageSetLSN(page, lsn);
          PageSetSUI(page, ThisStartUpID);        /* prev sui */
          UnlockAndWriteBuffer(buffer);
--- 2315,2321 ----
          offnum = PageAddItem(page, (Item) htup, newlen, offnum,
                               LP_USED | OverwritePageMode);
          if (offnum == InvalidOffsetNumber)
!             elog(CRASH, "heap_update_redo: failed to add tuple");
          PageSetLSN(page, lsn);
          PageSetSUI(page, ThisStartUpID);        /* prev sui */
          UnlockAndWriteBuffer(buffer);
***************
*** 2324,2332 ****

      /* undo */
      if (XLByteLT(PageGetLSN(page), lsn))        /* changes not applied?! */
!         elog(STOP, "heap_update_undo: bad new tuple page LSN");

!     elog(STOP, "heap_update_undo: unimplemented");

  }

--- 2324,2332 ----

      /* undo */
      if (XLByteLT(PageGetLSN(page), lsn))        /* changes not applied?! */
!         elog(CRASH, "heap_update_undo: bad new tuple page LSN");

!     elog(CRASH, "heap_update_undo: unimplemented");

  }

***************
*** 2342,2371 ****
      HeapTupleHeader htup;

      if (!RelationIsValid(reln))
!         elog(STOP, "_heap_unlock_tuple: can't open relation");

      buffer = XLogReadBuffer(false, reln,
                              ItemPointerGetBlockNumber(&(xltid->tid)));
      if (!BufferIsValid(buffer))
!         elog(STOP, "_heap_unlock_tuple: can't read buffer");

      page = (Page) BufferGetPage(buffer);
      if (PageIsNew((PageHeader) page))
!         elog(STOP, "_heap_unlock_tuple: uninitialized page");

      offnum = ItemPointerGetOffsetNumber(&(xltid->tid));
      if (offnum > PageGetMaxOffsetNumber(page))
!         elog(STOP, "_heap_unlock_tuple: invalid itemid");
      lp = PageGetItemId(page, offnum);

      if (!ItemIdIsUsed(lp) || ItemIdDeleted(lp))
!         elog(STOP, "_heap_unlock_tuple: unused/deleted tuple in rollback");

      htup = (HeapTupleHeader) PageGetItem(page, lp);

      if (!TransactionIdEquals(htup->t_xmax, GetCurrentTransactionId()) ||
          htup->t_cmax != GetCurrentCommandId())
!         elog(STOP, "_heap_unlock_tuple: invalid xmax/cmax in rollback");
      htup->t_infomask &= ~HEAP_XMAX_UNLOGGED;
      htup->t_infomask |= HEAP_XMAX_INVALID;
      UnlockAndWriteBuffer(buffer);
--- 2342,2371 ----
      HeapTupleHeader htup;

      if (!RelationIsValid(reln))
!         elog(CRASH, "_heap_unlock_tuple: can't open relation");

      buffer = XLogReadBuffer(false, reln,
                              ItemPointerGetBlockNumber(&(xltid->tid)));
      if (!BufferIsValid(buffer))
!         elog(CRASH, "_heap_unlock_tuple: can't read buffer");

      page = (Page) BufferGetPage(buffer);
      if (PageIsNew((PageHeader) page))
!         elog(CRASH, "_heap_unlock_tuple: uninitialized page");

      offnum = ItemPointerGetOffsetNumber(&(xltid->tid));
      if (offnum > PageGetMaxOffsetNumber(page))
!         elog(CRASH, "_heap_unlock_tuple: invalid itemid");
      lp = PageGetItemId(page, offnum);

      if (!ItemIdIsUsed(lp) || ItemIdDeleted(lp))
!         elog(CRASH, "_heap_unlock_tuple: unused/deleted tuple in rollback");

      htup = (HeapTupleHeader) PageGetItem(page, lp);

      if (!TransactionIdEquals(htup->t_xmax, GetCurrentTransactionId()) ||
          htup->t_cmax != GetCurrentCommandId())
!         elog(CRASH, "_heap_unlock_tuple: invalid xmax/cmax in rollback");
      htup->t_infomask &= ~HEAP_XMAX_UNLOGGED;
      htup->t_infomask |= HEAP_XMAX_INVALID;
      UnlockAndWriteBuffer(buffer);
***************
*** 2389,2395 ****
      else if (info == XLOG_HEAP_CLEAN)
          heap_xlog_clean(true, lsn, record);
      else
!         elog(STOP, "heap_redo: unknown op code %u", info);
  }

  void
--- 2389,2395 ----
      else if (info == XLOG_HEAP_CLEAN)
          heap_xlog_clean(true, lsn, record);
      else
!         elog(CRASH, "heap_redo: unknown op code %u", info);
  }

  void
***************
*** 2409,2415 ****
      else if (info == XLOG_HEAP_CLEAN)
          heap_xlog_clean(false, lsn, record);
      else
!         elog(STOP, "heap_undo: unknown op code %u", info);
  }

  static void
--- 2409,2415 ----
      else if (info == XLOG_HEAP_CLEAN)
          heap_xlog_clean(false, lsn, record);
      else
!         elog(CRASH, "heap_undo: unknown op code %u", info);
  }

  static void
Index: src/backend/access/heap/hio.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/access/heap/hio.c,v
retrieving revision 1.43
diff -c -r1.43 hio.c
*** src/backend/access/heap/hio.c    2001/10/25 05:49:21    1.43
--- src/backend/access/heap/hio.c    2002/02/19 04:54:55
***************
*** 50,56 ****
                           tuple->t_len, InvalidOffsetNumber, LP_USED);

      if (offnum == InvalidOffsetNumber)
!         elog(STOP, "RelationPutHeapTuple: failed to add tuple");

      /* Update tuple->t_self to the actual position where it was stored */
      ItemPointerSet(&(tuple->t_self), BufferGetBlockNumber(buffer), offnum);
--- 50,56 ----
                           tuple->t_len, InvalidOffsetNumber, LP_USED);

      if (offnum == InvalidOffsetNumber)
!         elog(CRASH, "RelationPutHeapTuple: failed to add tuple");

      /* Update tuple->t_self to the actual position where it was stored */
      ItemPointerSet(&(tuple->t_self), BufferGetBlockNumber(buffer), offnum);
***************
*** 270,276 ****
      if (len > PageGetFreeSpace(pageHeader))
      {
          /* We should not get here given the test at the top */
!         elog(STOP, "Tuple is too big: size %lu", (unsigned long) len);
      }

      /*
--- 270,276 ----
      if (len > PageGetFreeSpace(pageHeader))
      {
          /* We should not get here given the test at the top */
!         elog(CRASH, "Tuple is too big: size %lu", (unsigned long) len);
      }

      /*
Index: src/backend/access/nbtree/nbtinsert.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/access/nbtree/nbtinsert.c,v
retrieving revision 1.88
diff -c -r1.88 nbtinsert.c
*** src/backend/access/nbtree/nbtinsert.c    2002/01/01 20:32:37    1.88
--- src/backend/access/nbtree/nbtinsert.c    2002/02/19 04:54:57
***************
*** 735,741 ****
          item = (BTItem) PageGetItem(origpage, itemid);
          if (PageAddItem(rightpage, (Item) item, itemsz, rightoff,
                          LP_USED) == InvalidOffsetNumber)
!             elog(STOP, "btree: failed to add hikey to the right sibling");
          rightoff = OffsetNumberNext(rightoff);
      }

--- 735,741 ----
          item = (BTItem) PageGetItem(origpage, itemid);
          if (PageAddItem(rightpage, (Item) item, itemsz, rightoff,
                          LP_USED) == InvalidOffsetNumber)
!             elog(CRASH, "btree: failed to add hikey to the right sibling");
          rightoff = OffsetNumberNext(rightoff);
      }

***************
*** 761,767 ****
      lhikey = item;
      if (PageAddItem(leftpage, (Item) item, itemsz, leftoff,
                      LP_USED) == InvalidOffsetNumber)
!         elog(STOP, "btree: failed to add hikey to the left sibling");
      leftoff = OffsetNumberNext(leftoff);

      /*
--- 761,767 ----
      lhikey = item;
      if (PageAddItem(leftpage, (Item) item, itemsz, leftoff,
                      LP_USED) == InvalidOffsetNumber)
!         elog(CRASH, "btree: failed to add hikey to the left sibling");
      leftoff = OffsetNumberNext(leftoff);

      /*
***************
*** 1316,1322 ****
       * the two items will go into positions P_HIKEY and P_FIRSTKEY.
       */
      if (PageAddItem(rootpage, (Item) new_item, itemsz, P_HIKEY, LP_USED) == InvalidOffsetNumber)
!         elog(STOP, "btree: failed to add leftkey to new root page");
      pfree(new_item);

      /*
--- 1316,1322 ----
       * the two items will go into positions P_HIKEY and P_FIRSTKEY.
       */
      if (PageAddItem(rootpage, (Item) new_item, itemsz, P_HIKEY, LP_USED) == InvalidOffsetNumber)
!         elog(CRASH, "btree: failed to add leftkey to new root page");
      pfree(new_item);

      /*
***************
*** 1333,1339 ****
       * insert the right page pointer into the new root page.
       */
      if (PageAddItem(rootpage, (Item) new_item, itemsz, P_FIRSTKEY, LP_USED) == InvalidOffsetNumber)
!         elog(STOP, "btree: failed to add rightkey to new root page");
      pfree(new_item);

      metad->btm_root = rootblknum;
--- 1333,1339 ----
       * insert the right page pointer into the new root page.
       */
      if (PageAddItem(rootpage, (Item) new_item, itemsz, P_FIRSTKEY, LP_USED) == InvalidOffsetNumber)
!         elog(CRASH, "btree: failed to add rightkey to new root page");
      pfree(new_item);

      metad->btm_root = rootblknum;
***************
*** 2034,2040 ****

      if (PageAddItem(page, (Item) btitem, itemsize, itup_off,
                      LP_USED) == InvalidOffsetNumber)
!         elog(STOP, "btree: failed to add item to the %s for %s",
               where, RelationGetRelationName(rel));
  }

--- 2034,2040 ----

      if (PageAddItem(page, (Item) btitem, itemsize, itup_off,
                      LP_USED) == InvalidOffsetNumber)
!         elog(CRASH, "btree: failed to add item to the %s for %s",
               where, RelationGetRelationName(rel));
  }

Index: src/backend/access/nbtree/nbtree.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/access/nbtree/nbtree.c,v
retrieving revision 1.87
diff -c -r1.87 nbtree.c
*** src/backend/access/nbtree/nbtree.c    2002/01/06 00:37:43    1.87
--- src/backend/access/nbtree/nbtree.c    2002/02/19 04:54:58
***************
*** 776,782 ****
          itemsz = MAXALIGN(itemsz);
          if (PageAddItem(page, (Item) from, itemsz,
                        FirstOffsetNumber, LP_USED) == InvalidOffsetNumber)
!             elog(STOP, "_bt_restore_page: can't add item to page");
          from += itemsz;
      }
  }
--- 776,782 ----
          itemsz = MAXALIGN(itemsz);
          if (PageAddItem(page, (Item) from, itemsz,
                        FirstOffsetNumber, LP_USED) == InvalidOffsetNumber)
!             elog(CRASH, "_bt_restore_page: can't add item to page");
          from += itemsz;
      }
  }
***************
*** 799,808 ****
      buffer = XLogReadBuffer(false, reln,
                          ItemPointerGetBlockNumber(&(xlrec->target.tid)));
      if (!BufferIsValid(buffer))
!         elog(STOP, "btree_delete_redo: block unfound");
      page = (Page) BufferGetPage(buffer);
      if (PageIsNew((PageHeader) page))
!         elog(STOP, "btree_delete_redo: uninitialized page");

      if (XLByteLE(lsn, PageGetLSN(page)))
      {
--- 799,808 ----
      buffer = XLogReadBuffer(false, reln,
                          ItemPointerGetBlockNumber(&(xlrec->target.tid)));
      if (!BufferIsValid(buffer))
!         elog(CRASH, "btree_delete_redo: block unfound");
      page = (Page) BufferGetPage(buffer);
      if (PageIsNew((PageHeader) page))
!         elog(CRASH, "btree_delete_redo: uninitialized page");

      if (XLByteLE(lsn, PageGetLSN(page)))
      {
***************
*** 838,847 ****
      buffer = XLogReadBuffer(false, reln,
                          ItemPointerGetBlockNumber(&(xlrec->target.tid)));
      if (!BufferIsValid(buffer))
!         elog(STOP, "btree_insert_%sdo: block unfound", (redo) ? "re" : "un");
      page = (Page) BufferGetPage(buffer);
      if (PageIsNew((PageHeader) page))
!         elog(STOP, "btree_insert_%sdo: uninitialized page", (redo) ? "re" : "un");
      pageop = (BTPageOpaque) PageGetSpecialPointer(page);

      if (redo)
--- 838,847 ----
      buffer = XLogReadBuffer(false, reln,
                          ItemPointerGetBlockNumber(&(xlrec->target.tid)));
      if (!BufferIsValid(buffer))
!         elog(CRASH, "btree_insert_%sdo: block unfound", (redo) ? "re" : "un");
      page = (Page) BufferGetPage(buffer);
      if (PageIsNew((PageHeader) page))
!         elog(CRASH, "btree_insert_%sdo: uninitialized page", (redo) ? "re" : "un");
      pageop = (BTPageOpaque) PageGetSpecialPointer(page);

      if (redo)
***************
*** 855,861 ****
                          record->xl_len - SizeOfBtreeInsert,
                          ItemPointerGetOffsetNumber(&(xlrec->target.tid)),
                          LP_USED) == InvalidOffsetNumber)
!             elog(STOP, "btree_insert_redo: failed to add item");

          PageSetLSN(page, lsn);
          PageSetSUI(page, ThisStartUpID);
--- 855,861 ----
                          record->xl_len - SizeOfBtreeInsert,
                          ItemPointerGetOffsetNumber(&(xlrec->target.tid)),
                          LP_USED) == InvalidOffsetNumber)
!             elog(CRASH, "btree_insert_redo: failed to add item");

          PageSetLSN(page, lsn);
          PageSetSUI(page, ThisStartUpID);
***************
*** 864,870 ****
      else
      {
          if (XLByteLT(PageGetLSN(page), lsn))
!             elog(STOP, "btree_insert_undo: bad page LSN");

          if (!P_ISLEAF(pageop))
          {
--- 864,870 ----
      else
      {
          if (XLByteLT(PageGetLSN(page), lsn))
!             elog(CRASH, "btree_insert_undo: bad page LSN");

          if (!P_ISLEAF(pageop))
          {
***************
*** 872,878 ****
              return;
          }

!         elog(STOP, "btree_insert_undo: unimplemented");
      }

      return;
--- 872,878 ----
              return;
          }

!         elog(CRASH, "btree_insert_undo: unimplemented");
      }

      return;
***************
*** 899,911 ****
          BlockIdGetBlockNumber(&(xlrec->otherblk));
      buffer = XLogReadBuffer(false, reln, blkno);
      if (!BufferIsValid(buffer))
!         elog(STOP, "btree_split_%s: lost left sibling", op);

      page = (Page) BufferGetPage(buffer);
      if (redo)
          _bt_pageinit(page, BufferGetPageSize(buffer));
      else if (PageIsNew((PageHeader) page))
!         elog(STOP, "btree_split_undo: uninitialized left sibling");
      pageop = (BTPageOpaque) PageGetSpecialPointer(page);

      if (redo)
--- 899,911 ----
          BlockIdGetBlockNumber(&(xlrec->otherblk));
      buffer = XLogReadBuffer(false, reln, blkno);
      if (!BufferIsValid(buffer))
!         elog(CRASH, "btree_split_%s: lost left sibling", op);

      page = (Page) BufferGetPage(buffer);
      if (redo)
          _bt_pageinit(page, BufferGetPageSize(buffer));
      else if (PageIsNew((PageHeader) page))
!         elog(CRASH, "btree_split_undo: uninitialized left sibling");
      pageop = (BTPageOpaque) PageGetSpecialPointer(page);

      if (redo)
***************
*** 928,935 ****
  /* undo */
      {
          if (XLByteLT(PageGetLSN(page), lsn))
!             elog(STOP, "btree_split_undo: bad left sibling LSN");
!         elog(STOP, "btree_split_undo: unimplemented");
      }

      /* Right (new) sibling */
--- 928,935 ----
  /* undo */
      {
          if (XLByteLT(PageGetLSN(page), lsn))
!             elog(CRASH, "btree_split_undo: bad left sibling LSN");
!         elog(CRASH, "btree_split_undo: unimplemented");
      }

      /* Right (new) sibling */
***************
*** 937,949 ****
          ItemPointerGetBlockNumber(&(xlrec->target.tid));
      buffer = XLogReadBuffer((redo) ? true : false, reln, blkno);
      if (!BufferIsValid(buffer))
!         elog(STOP, "btree_split_%s: lost right sibling", op);

      page = (Page) BufferGetPage(buffer);
      if (redo)
          _bt_pageinit(page, BufferGetPageSize(buffer));
      else if (PageIsNew((PageHeader) page))
!         elog(STOP, "btree_split_undo: uninitialized right sibling");
      pageop = (BTPageOpaque) PageGetSpecialPointer(page);

      if (redo)
--- 937,949 ----
          ItemPointerGetBlockNumber(&(xlrec->target.tid));
      buffer = XLogReadBuffer((redo) ? true : false, reln, blkno);
      if (!BufferIsValid(buffer))
!         elog(CRASH, "btree_split_%s: lost right sibling", op);

      page = (Page) BufferGetPage(buffer);
      if (redo)
          _bt_pageinit(page, BufferGetPageSize(buffer));
      else if (PageIsNew((PageHeader) page))
!         elog(CRASH, "btree_split_undo: uninitialized right sibling");
      pageop = (BTPageOpaque) PageGetSpecialPointer(page);

      if (redo)
***************
*** 967,974 ****
  /* undo */
      {
          if (XLByteLT(PageGetLSN(page), lsn))
!             elog(STOP, "btree_split_undo: bad right sibling LSN");
!         elog(STOP, "btree_split_undo: unimplemented");
      }

      if (!redo || (record->xl_info & XLR_BKP_BLOCK_1))
--- 967,974 ----
  /* undo */
      {
          if (XLByteLT(PageGetLSN(page), lsn))
!             elog(CRASH, "btree_split_undo: bad right sibling LSN");
!         elog(CRASH, "btree_split_undo: unimplemented");
      }

      if (!redo || (record->xl_info & XLR_BKP_BLOCK_1))
***************
*** 981,991 ****

      buffer = XLogReadBuffer(false, reln, blkno);
      if (!BufferIsValid(buffer))
!         elog(STOP, "btree_split_redo: lost next right page");

      page = (Page) BufferGetPage(buffer);
      if (PageIsNew((PageHeader) page))
!         elog(STOP, "btree_split_redo: uninitialized next right page");

      if (XLByteLE(lsn, PageGetLSN(page)))
      {
--- 981,991 ----

      buffer = XLogReadBuffer(false, reln, blkno);
      if (!BufferIsValid(buffer))
!         elog(CRASH, "btree_split_redo: lost next right page");

      page = (Page) BufferGetPage(buffer);
      if (PageIsNew((PageHeader) page))
!         elog(CRASH, "btree_split_redo: uninitialized next right page");

      if (XLByteLE(lsn, PageGetLSN(page)))
      {
***************
*** 1022,1031 ****
          return;
      buffer = XLogReadBuffer(true, reln, BlockIdGetBlockNumber(&(xlrec->rootblk)));
      if (!BufferIsValid(buffer))
!         elog(STOP, "btree_newroot_redo: no root page");
      metabuf = XLogReadBuffer(false, reln, BTREE_METAPAGE);
      if (!BufferIsValid(buffer))
!         elog(STOP, "btree_newroot_redo: no metapage");
      page = (Page) BufferGetPage(buffer);
      _bt_pageinit(page, BufferGetPageSize(buffer));
      pageop = (BTPageOpaque) PageGetSpecialPointer(page);
--- 1022,1031 ----
          return;
      buffer = XLogReadBuffer(true, reln, BlockIdGetBlockNumber(&(xlrec->rootblk)));
      if (!BufferIsValid(buffer))
!         elog(CRASH, "btree_newroot_redo: no root page");
      metabuf = XLogReadBuffer(false, reln, BTREE_METAPAGE);
      if (!BufferIsValid(buffer))
!         elog(CRASH, "btree_newroot_redo: no metapage");
      page = (Page) BufferGetPage(buffer);
      _bt_pageinit(page, BufferGetPageSize(buffer));
      pageop = (BTPageOpaque) PageGetSpecialPointer(page);
***************
*** 1079,1085 ****
      else if (info == XLOG_BTREE_NEWROOT)
          btree_xlog_newroot(true, lsn, record);
      else
!         elog(STOP, "btree_redo: unknown op code %u", info);
  }

  void
--- 1079,1085 ----
      else if (info == XLOG_BTREE_NEWROOT)
          btree_xlog_newroot(true, lsn, record);
      else
!         elog(CRASH, "btree_redo: unknown op code %u", info);
  }

  void
***************
*** 1099,1105 ****
      else if (info == XLOG_BTREE_NEWROOT)
          btree_xlog_newroot(false, lsn, record);
      else
!         elog(STOP, "btree_undo: unknown op code %u", info);
  }

  static void
--- 1099,1105 ----
      else if (info == XLOG_BTREE_NEWROOT)
          btree_xlog_newroot(false, lsn, record);
      else
!         elog(CRASH, "btree_undo: unknown op code %u", info);
  }

  static void
Index: src/backend/access/rtree/rtree.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/access/rtree/rtree.c,v
retrieving revision 1.69
diff -c -r1.69 rtree.c
*** src/backend/access/rtree/rtree.c    2002/01/15 22:14:17    1.69
--- src/backend/access/rtree/rtree.c    2002/02/19 04:54:58
***************
*** 1345,1357 ****
  void
  rtree_redo(XLogRecPtr lsn, XLogRecord *record)
  {
!     elog(STOP, "rtree_redo: unimplemented");
  }

  void
  rtree_undo(XLogRecPtr lsn, XLogRecord *record)
  {
!     elog(STOP, "rtree_undo: unimplemented");
  }

  void
--- 1345,1357 ----
  void
  rtree_redo(XLogRecPtr lsn, XLogRecord *record)
  {
!     elog(CRASH, "rtree_redo: unimplemented");
  }

  void
  rtree_undo(XLogRecPtr lsn, XLogRecord *record)
  {
!     elog(CRASH, "rtree_undo: unimplemented");
  }

  void
Index: src/backend/access/transam/clog.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/access/transam/clog.c,v
retrieving revision 1.7
diff -c -r1.7 clog.c
*** src/backend/access/transam/clog.c    2001/10/28 06:25:42    1.7
--- src/backend/access/transam/clog.c    2002/02/19 04:54:59
***************
*** 544,562 ****
      if (fd < 0)
      {
          if (errno != ENOENT || !InRecovery)
!             elog(STOP, "open of %s failed: %m", path);
          elog(DEBUG, "clog file %s doesn't exist, reading as zeroes", path);
          MemSet(ClogCtl->page_buffer[slotno], 0, CLOG_BLCKSZ);
          return;
      }

      if (lseek(fd, (off_t) offset, SEEK_SET) < 0)
!         elog(STOP, "lseek of clog file %u, offset %u failed: %m",
               segno, offset);

      errno = 0;
      if (read(fd, ClogCtl->page_buffer[slotno], CLOG_BLCKSZ) != CLOG_BLCKSZ)
!         elog(STOP, "read of clog file %u, offset %u failed: %m",
               segno, offset);

      close(fd);
--- 544,562 ----
      if (fd < 0)
      {
          if (errno != ENOENT || !InRecovery)
!             elog(CRASH, "open of %s failed: %m", path);
          elog(DEBUG, "clog file %s doesn't exist, reading as zeroes", path);
          MemSet(ClogCtl->page_buffer[slotno], 0, CLOG_BLCKSZ);
          return;
      }

      if (lseek(fd, (off_t) offset, SEEK_SET) < 0)
!         elog(CRASH, "lseek of clog file %u, offset %u failed: %m",
               segno, offset);

      errno = 0;
      if (read(fd, ClogCtl->page_buffer[slotno], CLOG_BLCKSZ) != CLOG_BLCKSZ)
!         elog(CRASH, "read of clog file %u, offset %u failed: %m",
               segno, offset);

      close(fd);
***************
*** 596,610 ****
      if (fd < 0)
      {
          if (errno != ENOENT)
!             elog(STOP, "open of %s failed: %m", path);
          fd = BasicOpenFile(path, O_RDWR | O_CREAT | O_EXCL | PG_BINARY,
                             S_IRUSR | S_IWUSR);
          if (fd < 0)
!             elog(STOP, "creation of file %s failed: %m", path);
      }

      if (lseek(fd, (off_t) offset, SEEK_SET) < 0)
!         elog(STOP, "lseek of clog file %u, offset %u failed: %m",
               segno, offset);

      errno = 0;
--- 596,610 ----
      if (fd < 0)
      {
          if (errno != ENOENT)
!             elog(CRASH, "open of %s failed: %m", path);
          fd = BasicOpenFile(path, O_RDWR | O_CREAT | O_EXCL | PG_BINARY,
                             S_IRUSR | S_IWUSR);
          if (fd < 0)
!             elog(CRASH, "creation of file %s failed: %m", path);
      }

      if (lseek(fd, (off_t) offset, SEEK_SET) < 0)
!         elog(CRASH, "lseek of clog file %u, offset %u failed: %m",
               segno, offset);

      errno = 0;
***************
*** 613,619 ****
          /* if write didn't set errno, assume problem is no disk space */
          if (errno == 0)
              errno = ENOSPC;
!         elog(STOP, "write of clog file %u, offset %u failed: %m",
               segno, offset);
      }

--- 613,619 ----
          /* if write didn't set errno, assume problem is no disk space */
          if (errno == 0)
              errno = ENOSPC;
!         elog(CRASH, "write of clog file %u, offset %u failed: %m",
               segno, offset);
      }

***************
*** 887,893 ****

      cldir = opendir(ClogDir);
      if (cldir == NULL)
!         elog(STOP, "could not open transaction-commit log directory (%s): %m",
               ClogDir);

      errno = 0;
--- 887,893 ----

      cldir = opendir(ClogDir);
      if (cldir == NULL)
!         elog(CRASH, "could not open transaction-commit log directory (%s): %m",
               ClogDir);

      errno = 0;
***************
*** 912,918 ****
          errno = 0;
      }
      if (errno)
!         elog(STOP, "could not read transaction-commit log directory (%s): %m",
               ClogDir);
      closedir(cldir);

--- 912,918 ----
          errno = 0;
      }
      if (errno)
!         elog(CRASH, "could not read transaction-commit log directory (%s): %m",
               ClogDir);
      closedir(cldir);

Index: src/backend/access/transam/xact.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/access/transam/xact.c,v
retrieving revision 1.115
diff -c -r1.115 xact.c
*** src/backend/access/transam/xact.c    2001/11/01 06:17:01    1.115
--- src/backend/access/transam/xact.c    2002/02/19 04:55:00
***************
*** 1606,1612 ****
          /* SHOULD REMOVE FILES OF ALL FAILED-TO-BE-CREATED RELATIONS */
      }
      else
!         elog(STOP, "xact_redo: unknown op code %u", info);
  }

  void
--- 1606,1612 ----
          /* SHOULD REMOVE FILES OF ALL FAILED-TO-BE-CREATED RELATIONS */
      }
      else
!         elog(CRASH, "xact_redo: unknown op code %u", info);
  }

  void
***************
*** 1615,1623 ****
      uint8        info = record->xl_info & ~XLR_INFO_MASK;

      if (info == XLOG_XACT_COMMIT)        /* shouldn't be called by XLOG */
!         elog(STOP, "xact_undo: can't undo committed xaction");
      else if (info != XLOG_XACT_ABORT)
!         elog(STOP, "xact_redo: unknown op code %u", info);
  }

  void
--- 1615,1623 ----
      uint8        info = record->xl_info & ~XLR_INFO_MASK;

      if (info == XLOG_XACT_COMMIT)        /* shouldn't be called by XLOG */
!         elog(CRASH, "xact_undo: can't undo committed xaction");
      else if (info != XLOG_XACT_ABORT)
!         elog(CRASH, "xact_redo: unknown op code %u", info);
  }

  void
***************
*** 1652,1658 ****
  {
  #ifdef XLOG_II
      if (_RollbackFunc != NULL)
!         elog(STOP, "XactPushRollback: already installed");
  #endif

      _RollbackFunc = func;
--- 1652,1658 ----
  {
  #ifdef XLOG_II
      if (_RollbackFunc != NULL)
!         elog(CRASH, "XactPushRollback: already installed");
  #endif

      _RollbackFunc = func;
Index: src/backend/access/transam/xlog.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/access/transam/xlog.c,v
retrieving revision 1.87
diff -c -r1.87 xlog.c
*** src/backend/access/transam/xlog.c    2002/02/18 05:44:45    1.87
--- src/backend/access/transam/xlog.c    2002/02/19 04:55:02
***************
*** 489,495 ****
      if (info & XLR_INFO_MASK)
      {
          if ((info & XLR_INFO_MASK) != XLOG_NO_TRAN)
!             elog(STOP, "XLogInsert: invalid info mask %02X",
                   (info & XLR_INFO_MASK));
          no_tran = true;
          info &= ~XLR_INFO_MASK;
--- 489,495 ----
      if (info & XLR_INFO_MASK)
      {
          if ((info & XLR_INFO_MASK) != XLOG_NO_TRAN)
!             elog(CRASH, "XLogInsert: invalid info mask %02X",
                   (info & XLR_INFO_MASK));
          no_tran = true;
          info &= ~XLR_INFO_MASK;
***************
*** 594,600 ****
                  }
              }
              if (i >= XLR_MAX_BKP_BLOCKS)
!                 elog(STOP, "XLogInsert: can backup %d blocks at most",
                       XLR_MAX_BKP_BLOCKS);
          }
          /* Break out of loop when rdt points to last list item */
--- 594,600 ----
                  }
              }
              if (i >= XLR_MAX_BKP_BLOCKS)
!                 elog(CRASH, "XLogInsert: can backup %d blocks at most",
                       XLR_MAX_BKP_BLOCKS);
          }
          /* Break out of loop when rdt points to last list item */
***************
*** 612,618 ****
       * also remove the check for xl_len == 0 in ReadRecord, below.
       */
      if (len == 0 || len > MAXLOGRECSZ)
!         elog(STOP, "XLogInsert: invalid record length %u", len);

      START_CRIT_SECTION();

--- 612,618 ----
       * also remove the check for xl_len == 0 in ReadRecord, below.
       */
      if (len == 0 || len > MAXLOGRECSZ)
!         elog(CRASH, "XLogInsert: invalid record length %u", len);

      START_CRIT_SECTION();

***************
*** 1010,1016 ****
           * AdvanceXLInsertBuffer.
           */
          if (!XLByteLT(LogwrtResult.Write, XLogCtl->xlblocks[Write->curridx]))
!             elog(STOP, "XLogWrite: write request %X/%X is past end of log %X/%X",
                   LogwrtResult.Write.xlogid, LogwrtResult.Write.xrecoff,
                   XLogCtl->xlblocks[Write->curridx].xlogid,
                   XLogCtl->xlblocks[Write->curridx].xrecoff);
--- 1010,1016 ----
           * AdvanceXLInsertBuffer.
           */
          if (!XLByteLT(LogwrtResult.Write, XLogCtl->xlblocks[Write->curridx]))
!             elog(CRASH, "XLogWrite: write request %X/%X is past end of log %X/%X",
                   LogwrtResult.Write.xlogid, LogwrtResult.Write.xrecoff,
                   XLogCtl->xlblocks[Write->curridx].xlogid,
                   XLogCtl->xlblocks[Write->curridx].xrecoff);
***************
*** 1027,1033 ****
              if (openLogFile >= 0)
              {
                  if (close(openLogFile) != 0)
!                     elog(STOP, "close of log file %u, segment %u failed: %m",
                           openLogId, openLogSeg);
                  openLogFile = -1;
              }
--- 1027,1033 ----
              if (openLogFile >= 0)
              {
                  if (close(openLogFile) != 0)
!                     elog(CRASH, "close of log file %u, segment %u failed: %m",
                           openLogId, openLogSeg);
                  openLogFile = -1;
              }
***************
*** 1085,1091 ****
          {
              openLogOff = (LogwrtResult.Write.xrecoff - BLCKSZ) % XLogSegSize;
              if (lseek(openLogFile, (off_t) openLogOff, SEEK_SET) < 0)
!                 elog(STOP, "lseek of log file %u, segment %u, offset %u failed: %m",
                       openLogId, openLogSeg, openLogOff);
          }

--- 1085,1091 ----
          {
              openLogOff = (LogwrtResult.Write.xrecoff - BLCKSZ) % XLogSegSize;
              if (lseek(openLogFile, (off_t) openLogOff, SEEK_SET) < 0)
!                 elog(CRASH, "lseek of log file %u, segment %u, offset %u failed: %m",
                       openLogId, openLogSeg, openLogOff);
          }

***************
*** 1097,1103 ****
              /* if write didn't set errno, assume problem is no disk space */
              if (errno == 0)
                  errno = ENOSPC;
!             elog(STOP, "write of log file %u, segment %u, offset %u failed: %m",
                   openLogId, openLogSeg, openLogOff);
          }
          openLogOff += BLCKSZ;
--- 1097,1103 ----
              /* if write didn't set errno, assume problem is no disk space */
              if (errno == 0)
                  errno = ENOSPC;
!             elog(CRASH, "write of log file %u, segment %u, offset %u failed: %m",
                   openLogId, openLogSeg, openLogOff);
          }
          openLogOff += BLCKSZ;
***************
*** 1141,1147 ****
               !XLByteInPrevSeg(LogwrtResult.Write, openLogId, openLogSeg))
              {
                  if (close(openLogFile) != 0)
!                     elog(STOP, "close of log file %u, segment %u failed: %m",
                           openLogId, openLogSeg);
                  openLogFile = -1;
              }
--- 1141,1147 ----
               !XLByteInPrevSeg(LogwrtResult.Write, openLogId, openLogSeg))
              {
                  if (close(openLogFile) != 0)
!                     elog(CRASH, "close of log file %u, segment %u failed: %m",
                           openLogId, openLogSeg);
                  openLogFile = -1;
              }
***************
*** 1273,1279 ****
       * problem; most likely, the requested flush point is past end of XLOG.
       * This has been seen to occur when a disk page has a corrupted LSN.
       *
!      * Formerly we treated this as a STOP condition, but that hurts the
       * system's robustness rather than helping it: we do not want to take
       * down the whole system due to corruption on one data page.  In
       * particular, if the bad page is encountered again during recovery then
--- 1273,1279 ----
       * problem; most likely, the requested flush point is past end of XLOG.
       * This has been seen to occur when a disk page has a corrupted LSN.
       *
!      * Formerly we treated this as a CRASH condition, but that hurts the
       * system's robustness rather than helping it: we do not want to take
       * down the whole system due to corruption on one data page.  In
       * particular, if the bad page is encountered again during recovery then
***************
*** 1286,1292 ****
       * The current approach is to ERROR under normal conditions, but only
       * NOTICE during recovery, so that the system can be brought up even if
       * there's a corrupt LSN.  Note that for calls from xact.c, the ERROR
!      * will be promoted to STOP since xact.c calls this routine inside a
       * critical section.  However, calls from bufmgr.c are not within
       * critical sections and so we will not force a restart for a bad LSN
       * on a data page.
--- 1286,1292 ----
       * The current approach is to ERROR under normal conditions, but only
       * NOTICE during recovery, so that the system can be brought up even if
       * there's a corrupt LSN.  Note that for calls from xact.c, the ERROR
!      * will be promoted to CRASH since xact.c calls this routine inside a
       * critical section.  However, calls from bufmgr.c are not within
       * critical sections and so we will not force a restart for a bad LSN
       * on a data page.
***************
*** 1336,1342 ****
          if (fd < 0)
          {
              if (errno != ENOENT)
!                 elog(STOP, "open of %s (log file %u, segment %u) failed: %m",
                       path, log, seg);
          }
          else
--- 1336,1342 ----
          if (fd < 0)
          {
              if (errno != ENOENT)
!                 elog(CRASH, "open of %s (log file %u, segment %u) failed: %m",
                       path, log, seg);
          }
          else
***************
*** 1358,1364 ****
      fd = BasicOpenFile(tmppath, O_RDWR | O_CREAT | O_EXCL | PG_BINARY,
                         S_IRUSR | S_IWUSR);
      if (fd < 0)
!         elog(STOP, "creation of file %s failed: %m", tmppath);

      /*
       * Zero-fill the file.    We have to do this the hard way to ensure that
--- 1358,1364 ----
      fd = BasicOpenFile(tmppath, O_RDWR | O_CREAT | O_EXCL | PG_BINARY,
                         S_IRUSR | S_IWUSR);
      if (fd < 0)
!         elog(CRASH, "creation of file %s failed: %m", tmppath);

      /*
       * Zero-fill the file.    We have to do this the hard way to ensure that
***************
*** 1385,1396 ****
              /* if write didn't set errno, assume problem is no disk space */
              errno = save_errno ? save_errno : ENOSPC;

!             elog(STOP, "ZeroFill failed to write %s: %m", tmppath);
          }
      }

      if (pg_fsync(fd) != 0)
!         elog(STOP, "fsync of file %s failed: %m", tmppath);

      close(fd);

--- 1385,1396 ----
              /* if write didn't set errno, assume problem is no disk space */
              errno = save_errno ? save_errno : ENOSPC;

!             elog(CRASH, "ZeroFill failed to write %s: %m", tmppath);
          }
      }

      if (pg_fsync(fd) != 0)
!         elog(CRASH, "fsync of file %s failed: %m", tmppath);

      close(fd);

***************
*** 1417,1423 ****
      fd = BasicOpenFile(path, O_RDWR | PG_BINARY | XLOG_SYNC_BIT,
                         S_IRUSR | S_IWUSR);
      if (fd < 0)
!         elog(STOP, "open of %s (log file %u, segment %u) failed: %m",
               path, log, seg);

      return (fd);
--- 1417,1423 ----
      fd = BasicOpenFile(path, O_RDWR | PG_BINARY | XLOG_SYNC_BIT,
                         S_IRUSR | S_IWUSR);
      if (fd < 0)
!         elog(CRASH, "open of %s (log file %u, segment %u) failed: %m",
               path, log, seg);

      return (fd);
***************
*** 1495,1506 ****
       */
  #ifndef __BEOS__
      if (link(tmppath, path) < 0)
!         elog(STOP, "link from %s to %s (initialization of log file %u, segment %u) failed: %m",
               tmppath, path, log, seg);
      unlink(tmppath);
  #else
      if (rename(tmppath, path) < 0)
!         elog(STOP, "rename from %s to %s (initialization of log file %u, segment %u) failed: %m",
               tmppath, path, log, seg);
  #endif

--- 1495,1506 ----
       */
  #ifndef __BEOS__
      if (link(tmppath, path) < 0)
!         elog(CRASH, "link from %s to %s (initialization of log file %u, segment %u) failed: %m",
               tmppath, path, log, seg);
      unlink(tmppath);
  #else
      if (rename(tmppath, path) < 0)
!         elog(CRASH, "rename from %s to %s (initialization of log file %u, segment %u) failed: %m",
               tmppath, path, log, seg);
  #endif

***************
*** 1531,1537 ****
                   path, log, seg);
              return (fd);
          }
!         elog(STOP, "open of %s (log file %u, segment %u) failed: %m",
               path, log, seg);
      }

--- 1531,1537 ----
                   path, log, seg);
              return (fd);
          }
!         elog(CRASH, "open of %s (log file %u, segment %u) failed: %m",
               path, log, seg);
      }

***************
*** 1592,1598 ****

      xldir = opendir(XLogDir);
      if (xldir == NULL)
!         elog(STOP, "could not open transaction log directory (%s): %m",
               XLogDir);

      sprintf(lastoff, "%08X%08X", log, seg);
--- 1592,1598 ----

      xldir = opendir(XLogDir);
      if (xldir == NULL)
!         elog(CRASH, "could not open transaction log directory (%s): %m",
               XLogDir);

      sprintf(lastoff, "%08X%08X", log, seg);
***************
*** 1638,1644 ****
          errno = 0;
      }
      if (errno)
!         elog(STOP, "could not read transaction log directory (%s): %m",
               XLogDir);
      closedir(xldir);
  }
--- 1638,1644 ----
          errno = 0;
      }
      if (errno)
!         elog(CRASH, "could not read transaction log directory (%s): %m",
               XLogDir);
      closedir(xldir);
  }
***************
*** 1749,1756 ****
   * If RecPtr is not NULL, try to read a record at that position.  Otherwise
   * try to read a record just after the last one previously read.
   *
!  * If no valid record is available, returns NULL, or fails if emode is STOP.
!  * (emode must be either STOP or LOG.)
   *
   * buffer is a workspace at least _INTL_MAXLOGRECSZ bytes long.  It is needed
   * to reassemble a record that crosses block boundaries.  Note that on
--- 1749,1756 ----
   * If RecPtr is not NULL, try to read a record at that position.  Otherwise
   * try to read a record just after the last one previously read.
   *
!  * If no valid record is available, returns NULL, or fails if emode is CRASH.
!  * (emode must be either CRASH or LOG.)
   *
   * buffer is a workspace at least _INTL_MAXLOGRECSZ bytes long.  It is needed
   * to reassemble a record that crosses block boundaries.  Note that on
***************
*** 1802,1808 ****
          tmpRecPtr.xrecoff += SizeOfXLogPHD;
      }
      else if (!XRecOffIsValid(RecPtr->xrecoff))
!         elog(STOP, "ReadRecord: invalid record offset at %X/%X",
               RecPtr->xlogid, RecPtr->xrecoff);

      if (readFile >= 0 && !XLByteInSeg(*RecPtr, readId, readSeg))
--- 1802,1808 ----
          tmpRecPtr.xrecoff += SizeOfXLogPHD;
      }
      else if (!XRecOffIsValid(RecPtr->xrecoff))
!         elog(CRASH, "ReadRecord: invalid record offset at %X/%X",
               RecPtr->xlogid, RecPtr->xrecoff);

      if (readFile >= 0 && !XLByteInSeg(*RecPtr, readId, readSeg))
***************
*** 2083,2093 ****
  #ifdef USE_LOCALE
      localeptr = setlocale(LC_COLLATE, NULL);
      if (!localeptr)
!         elog(STOP, "invalid LC_COLLATE setting");
      StrNCpy(ControlFile->lc_collate, localeptr, LOCALE_NAME_BUFLEN);
      localeptr = setlocale(LC_CTYPE, NULL);
      if (!localeptr)
!         elog(STOP, "invalid LC_CTYPE setting");
      StrNCpy(ControlFile->lc_ctype, localeptr, LOCALE_NAME_BUFLEN);

      /*
--- 2083,2093 ----
  #ifdef USE_LOCALE
      localeptr = setlocale(LC_COLLATE, NULL);
      if (!localeptr)
!         elog(CRASH, "invalid LC_COLLATE setting");
      StrNCpy(ControlFile->lc_collate, localeptr, LOCALE_NAME_BUFLEN);
      localeptr = setlocale(LC_CTYPE, NULL);
      if (!localeptr)
!         elog(CRASH, "invalid LC_CTYPE setting");
      StrNCpy(ControlFile->lc_ctype, localeptr, LOCALE_NAME_BUFLEN);

      /*
***************
*** 2122,2128 ****
       * specific error than "couldn't read pg_control".
       */
      if (sizeof(ControlFileData) > BLCKSZ)
!         elog(STOP, "sizeof(ControlFileData) is larger than BLCKSZ; fix either one");

      memset(buffer, 0, BLCKSZ);
      memcpy(buffer, ControlFile, sizeof(ControlFileData));
--- 2122,2128 ----
       * specific error than "couldn't read pg_control".
       */
      if (sizeof(ControlFileData) > BLCKSZ)
!         elog(CRASH, "sizeof(ControlFileData) is larger than BLCKSZ; fix either one");

      memset(buffer, 0, BLCKSZ);
      memcpy(buffer, ControlFile, sizeof(ControlFileData));
***************
*** 2130,2136 ****
      fd = BasicOpenFile(ControlFilePath, O_RDWR | O_CREAT | O_EXCL | PG_BINARY,
                         S_IRUSR | S_IWUSR);
      if (fd < 0)
!         elog(STOP, "WriteControlFile: could not create control file (%s): %m",
               ControlFilePath);

      errno = 0;
--- 2130,2136 ----
      fd = BasicOpenFile(ControlFilePath, O_RDWR | O_CREAT | O_EXCL | PG_BINARY,
                         S_IRUSR | S_IWUSR);
      if (fd < 0)
!         elog(CRASH, "WriteControlFile: could not create control file (%s): %m",
               ControlFilePath);

      errno = 0;
***************
*** 2139,2149 ****
          /* if write didn't set errno, assume problem is no disk space */
          if (errno == 0)
              errno = ENOSPC;
!         elog(STOP, "WriteControlFile: write to control file failed: %m");
      }

      if (pg_fsync(fd) != 0)
!         elog(STOP, "WriteControlFile: fsync of control file failed: %m");

      close(fd);
  }
--- 2139,2149 ----
          /* if write didn't set errno, assume problem is no disk space */
          if (errno == 0)
              errno = ENOSPC;
!         elog(CRASH, "WriteControlFile: write to control file failed: %m");
      }

      if (pg_fsync(fd) != 0)
!         elog(CRASH, "WriteControlFile: fsync of control file failed: %m");

      close(fd);
  }
***************
*** 2159,2168 ****
       */
      fd = BasicOpenFile(ControlFilePath, O_RDWR | PG_BINARY, S_IRUSR | S_IWUSR);
      if (fd < 0)
!         elog(STOP, "could not open control file (%s): %m", ControlFilePath);

      if (read(fd, ControlFile, sizeof(ControlFileData)) != sizeof(ControlFileData))
!         elog(STOP, "read from control file failed: %m");

      close(fd);

--- 2159,2168 ----
       */
      fd = BasicOpenFile(ControlFilePath, O_RDWR | PG_BINARY, S_IRUSR | S_IWUSR);
      if (fd < 0)
!         elog(CRASH, "could not open control file (%s): %m", ControlFilePath);

      if (read(fd, ControlFile, sizeof(ControlFileData)) != sizeof(ControlFileData))
!         elog(CRASH, "read from control file failed: %m");

      close(fd);

***************
*** 2173,2179 ****
       * more enlightening than complaining about wrong CRC.
       */
      if (ControlFile->pg_control_version != PG_CONTROL_VERSION)
!         elog(STOP,
               "The database cluster was initialized with PG_CONTROL_VERSION %d,\n"
               "\tbut the server was compiled with PG_CONTROL_VERSION %d.\n"
               "\tIt looks like you need to initdb.",
--- 2173,2179 ----
       * more enlightening than complaining about wrong CRC.
       */
      if (ControlFile->pg_control_version != PG_CONTROL_VERSION)
!         elog(CRASH,
               "The database cluster was initialized with PG_CONTROL_VERSION %d,\n"
               "\tbut the server was compiled with PG_CONTROL_VERSION %d.\n"
               "\tIt looks like you need to initdb.",
***************
*** 2187,2193 ****
      FIN_CRC64(crc);

      if (!EQ_CRC64(crc, ControlFile->crc))
!         elog(STOP, "invalid checksum in control file");

      /*
       * Do compatibility checking immediately.  We do this here for 2
--- 2187,2193 ----
      FIN_CRC64(crc);

      if (!EQ_CRC64(crc, ControlFile->crc))
!         elog(CRASH, "invalid checksum in control file");

      /*
       * Do compatibility checking immediately.  We do this here for 2
***************
*** 2202,2233 ****
       * compatibility items because they can affect sort order of indexes.)
       */
      if (ControlFile->catalog_version_no != CATALOG_VERSION_NO)
!         elog(STOP,
               "The database cluster was initialized with CATALOG_VERSION_NO %d,\n"
             "\tbut the backend was compiled with CATALOG_VERSION_NO %d.\n"
               "\tIt looks like you need to initdb.",
               ControlFile->catalog_version_no, CATALOG_VERSION_NO);
      if (ControlFile->blcksz != BLCKSZ)
!         elog(STOP,
               "The database cluster was initialized with BLCKSZ %d,\n"
               "\tbut the backend was compiled with BLCKSZ %d.\n"
               "\tIt looks like you need to initdb.",
               ControlFile->blcksz, BLCKSZ);
      if (ControlFile->relseg_size != RELSEG_SIZE)
!         elog(STOP,
               "The database cluster was initialized with RELSEG_SIZE %d,\n"
               "\tbut the backend was compiled with RELSEG_SIZE %d.\n"
               "\tIt looks like you need to initdb.",
               ControlFile->relseg_size, RELSEG_SIZE);
  #ifdef USE_LOCALE
      if (setlocale(LC_COLLATE, ControlFile->lc_collate) == NULL)
!         elog(STOP,
             "The database cluster was initialized with LC_COLLATE '%s',\n"
               "\twhich is not recognized by setlocale().\n"
               "\tIt looks like you need to initdb.",
               ControlFile->lc_collate);
      if (setlocale(LC_CTYPE, ControlFile->lc_ctype) == NULL)
!         elog(STOP,
               "The database cluster was initialized with LC_CTYPE '%s',\n"
               "\twhich is not recognized by setlocale().\n"
               "\tIt looks like you need to initdb.",
--- 2202,2233 ----
       * compatibility items because they can affect sort order of indexes.)
       */
      if (ControlFile->catalog_version_no != CATALOG_VERSION_NO)
!         elog(CRASH,
               "The database cluster was initialized with CATALOG_VERSION_NO %d,\n"
             "\tbut the backend was compiled with CATALOG_VERSION_NO %d.\n"
               "\tIt looks like you need to initdb.",
               ControlFile->catalog_version_no, CATALOG_VERSION_NO);
      if (ControlFile->blcksz != BLCKSZ)
!         elog(CRASH,
               "The database cluster was initialized with BLCKSZ %d,\n"
               "\tbut the backend was compiled with BLCKSZ %d.\n"
               "\tIt looks like you need to initdb.",
               ControlFile->blcksz, BLCKSZ);
      if (ControlFile->relseg_size != RELSEG_SIZE)
!         elog(CRASH,
               "The database cluster was initialized with RELSEG_SIZE %d,\n"
               "\tbut the backend was compiled with RELSEG_SIZE %d.\n"
               "\tIt looks like you need to initdb.",
               ControlFile->relseg_size, RELSEG_SIZE);
  #ifdef USE_LOCALE
      if (setlocale(LC_COLLATE, ControlFile->lc_collate) == NULL)
!         elog(CRASH,
             "The database cluster was initialized with LC_COLLATE '%s',\n"
               "\twhich is not recognized by setlocale().\n"
               "\tIt looks like you need to initdb.",
               ControlFile->lc_collate);
      if (setlocale(LC_CTYPE, ControlFile->lc_ctype) == NULL)
!         elog(CRASH,
               "The database cluster was initialized with LC_CTYPE '%s',\n"
               "\twhich is not recognized by setlocale().\n"
               "\tIt looks like you need to initdb.",
***************
*** 2235,2241 ****
  #else                            /* not USE_LOCALE */
      if (strcmp(ControlFile->lc_collate, "C") != 0 ||
          strcmp(ControlFile->lc_ctype, "C") != 0)
!         elog(STOP,
          "The database cluster was initialized with LC_COLLATE '%s' and\n"
               "\tLC_CTYPE '%s', but the server was compiled without locale support.\n"
               "\tIt looks like you need to initdb or recompile.",
--- 2235,2241 ----
  #else                            /* not USE_LOCALE */
      if (strcmp(ControlFile->lc_collate, "C") != 0 ||
          strcmp(ControlFile->lc_ctype, "C") != 0)
!         elog(CRASH,
          "The database cluster was initialized with LC_COLLATE '%s' and\n"
               "\tLC_CTYPE '%s', but the server was compiled without locale support.\n"
               "\tIt looks like you need to initdb or recompile.",
***************
*** 2256,2262 ****

      fd = BasicOpenFile(ControlFilePath, O_RDWR | PG_BINARY, S_IRUSR | S_IWUSR);
      if (fd < 0)
!         elog(STOP, "could not open control file (%s): %m", ControlFilePath);

      errno = 0;
      if (write(fd, ControlFile, sizeof(ControlFileData)) != sizeof(ControlFileData))
--- 2256,2262 ----

      fd = BasicOpenFile(ControlFilePath, O_RDWR | PG_BINARY, S_IRUSR | S_IWUSR);
      if (fd < 0)
!         elog(CRASH, "could not open control file (%s): %m", ControlFilePath);

      errno = 0;
      if (write(fd, ControlFile, sizeof(ControlFileData)) != sizeof(ControlFileData))
***************
*** 2264,2274 ****
          /* if write didn't set errno, assume problem is no disk space */
          if (errno == 0)
              errno = ENOSPC;
!         elog(STOP, "write to control file failed: %m");
      }

      if (pg_fsync(fd) != 0)
!         elog(STOP, "fsync of control file failed: %m");

      close(fd);
  }
--- 2264,2274 ----
          /* if write didn't set errno, assume problem is no disk space */
          if (errno == 0)
              errno = ENOSPC;
!         elog(CRASH, "write to control file failed: %m");
      }

      if (pg_fsync(fd) != 0)
!         elog(CRASH, "fsync of control file failed: %m");

      close(fd);
  }
***************
*** 2408,2418 ****
          /* if write didn't set errno, assume problem is no disk space */
          if (errno == 0)
              errno = ENOSPC;
!         elog(STOP, "BootStrapXLOG failed to write log file: %m");
      }

      if (pg_fsync(openLogFile) != 0)
!         elog(STOP, "BootStrapXLOG failed to fsync log file: %m");

      close(openLogFile);
      openLogFile = -1;
--- 2408,2418 ----
          /* if write didn't set errno, assume problem is no disk space */
          if (errno == 0)
              errno = ENOSPC;
!         elog(CRASH, "BootStrapXLOG failed to write log file: %m");
      }

      if (pg_fsync(openLogFile) != 0)
!         elog(CRASH, "BootStrapXLOG failed to fsync log file: %m");

      close(openLogFile);
      openLogFile = -1;
***************
*** 2478,2484 ****
          ControlFile->state < DB_SHUTDOWNED ||
          ControlFile->state > DB_IN_PRODUCTION ||
          !XRecOffIsValid(ControlFile->checkPoint.xrecoff))
!         elog(STOP, "control file context is broken");

      if (ControlFile->state == DB_SHUTDOWNED)
          elog(LOG, "database system was shut down at %s",
--- 2478,2484 ----
          ControlFile->state < DB_SHUTDOWNED ||
          ControlFile->state > DB_IN_PRODUCTION ||
          !XRecOffIsValid(ControlFile->checkPoint.xrecoff))
!         elog(CRASH, "control file context is broken");

      if (ControlFile->state == DB_SHUTDOWNED)
          elog(LOG, "database system was shut down at %s",
***************
*** 2517,2523 ****
              InRecovery = true;    /* force recovery even if SHUTDOWNED */
          }
          else
!             elog(STOP, "unable to locate a valid checkpoint record");
      }
      LastRec = RecPtr = checkPointLoc;
      memcpy(&checkPoint, XLogRecGetData(record), sizeof(CheckPoint));
--- 2517,2523 ----
              InRecovery = true;    /* force recovery even if SHUTDOWNED */
          }
          else
!             elog(CRASH, "unable to locate a valid checkpoint record");
      }
      LastRec = RecPtr = checkPointLoc;
      memcpy(&checkPoint, XLogRecGetData(record), sizeof(CheckPoint));
***************
*** 2530,2536 ****
      elog(LOG, "next transaction id: %u; next oid: %u",
           checkPoint.nextXid, checkPoint.nextOid);
      if (!TransactionIdIsNormal(checkPoint.nextXid))
!         elog(STOP, "invalid next transaction id");

      ShmemVariableCache->nextXid = checkPoint.nextXid;
      ShmemVariableCache->nextOid = checkPoint.nextOid;
--- 2530,2536 ----
      elog(LOG, "next transaction id: %u; next oid: %u",
           checkPoint.nextXid, checkPoint.nextOid);
      if (!TransactionIdIsNormal(checkPoint.nextXid))
!         elog(CRASH, "invalid next transaction id");

      ShmemVariableCache->nextXid = checkPoint.nextXid;
      ShmemVariableCache->nextOid = checkPoint.nextOid;
***************
*** 2541,2547 ****
          XLogCtl->RedoRecPtr = checkPoint.redo;

      if (XLByteLT(RecPtr, checkPoint.redo))
!         elog(STOP, "invalid redo in checkpoint record");
      if (checkPoint.undo.xrecoff == 0)
          checkPoint.undo = RecPtr;

--- 2541,2547 ----
          XLogCtl->RedoRecPtr = checkPoint.redo;

      if (XLByteLT(RecPtr, checkPoint.redo))
!         elog(CRASH, "invalid redo in checkpoint record");
      if (checkPoint.undo.xrecoff == 0)
          checkPoint.undo = RecPtr;

***************
*** 2549,2555 ****
          XLByteLT(checkPoint.redo, RecPtr))
      {
          if (wasShutdown)
!             elog(STOP, "invalid redo/undo record in shutdown checkpoint");
          InRecovery = true;
      }
      else if (ControlFile->state != DB_SHUTDOWNED)
--- 2549,2555 ----
          XLByteLT(checkPoint.redo, RecPtr))
      {
          if (wasShutdown)
!             elog(CRASH, "invalid redo/undo record in shutdown checkpoint");
          InRecovery = true;
      }
      else if (ControlFile->state != DB_SHUTDOWNED)
***************
*** 2568,2574 ****

          /* Is REDO required ? */
          if (XLByteLT(checkPoint.redo, RecPtr))
!             record = ReadRecord(&(checkPoint.redo), STOP, buffer);
          else
          {
              /* read past CheckPoint record */
--- 2568,2574 ----

          /* Is REDO required ? */
          if (XLByteLT(checkPoint.redo, RecPtr))
!             record = ReadRecord(&(checkPoint.redo), CRASH, buffer);
          else
          {
              /* read past CheckPoint record */
***************
*** 2622,2628 ****
       * Init xlog buffer cache using the block containing the last valid
       * record from the previous incarnation.
       */
!     record = ReadRecord(&LastRec, STOP, buffer);
      EndOfLog = EndRecPtr;
      XLByteToPrevSeg(EndOfLog, openLogId, openLogSeg);
      openLogFile = XLogFileOpen(openLogId, openLogSeg, false);
--- 2622,2628 ----
       * Init xlog buffer cache using the block containing the last valid
       * record from the previous incarnation.
       */
!     record = ReadRecord(&LastRec, CRASH, buffer);
      EndOfLog = EndRecPtr;
      XLByteToPrevSeg(EndOfLog, openLogId, openLogSeg);
      openLogFile = XLogFileOpen(openLogId, openLogSeg, false);
***************
*** 2701,2707 ****
                   RecPtr.xlogid, RecPtr.xrecoff);
              do
              {
!                 record = ReadRecord(&RecPtr, STOP, buffer);
                  if (TransactionIdIsValid(record->xl_xid) &&
                      !TransactionIdDidCommit(record->xl_xid))
                      RmgrTable[record->xl_rmid].rm_undo(EndRecPtr, record);
--- 2701,2707 ----
                   RecPtr.xlogid, RecPtr.xrecoff);
              do
              {
!                 record = ReadRecord(&RecPtr, CRASH, buffer);
                  if (TransactionIdIsValid(record->xl_xid) &&
                      !TransactionIdDidCommit(record->xl_xid))
                      RmgrTable[record->xl_rmid].rm_undo(EndRecPtr, record);
***************
*** 2995,3001 ****
      checkPoint.undo = GetUndoRecPtr();

      if (shutdown && checkPoint.undo.xrecoff != 0)
!         elog(STOP, "active transaction while database system is shutting down");
  #endif

      /*
--- 2995,3001 ----
      checkPoint.undo = GetUndoRecPtr();

      if (shutdown && checkPoint.undo.xrecoff != 0)
!         elog(CRASH, "active transaction while database system is shutting down");
  #endif

      /*
***************
*** 3043,3049 ****
       * recptr = end of actual checkpoint record.
       */
      if (shutdown && !XLByteEQ(checkPoint.redo, ProcLastRecPtr))
!         elog(STOP, "concurrent transaction log activity while database system is shutting down");

      /*
       * Select point at which we can truncate the log, which we base on the
--- 3043,3049 ----
       * recptr = end of actual checkpoint record.
       */
      if (shutdown && !XLByteEQ(checkPoint.redo, ProcLastRecPtr))
!         elog(CRASH, "concurrent transaction log activity while database system is shutting down");

      /*
       * Select point at which we can truncate the log, which we base on the
***************
*** 3297,3308 ****
          if (openLogFile >= 0)
          {
              if (pg_fsync(openLogFile) != 0)
!                 elog(STOP, "fsync of log file %u, segment %u failed: %m",
                       openLogId, openLogSeg);
              if (open_sync_bit != new_sync_bit)
              {
                  if (close(openLogFile) != 0)
!                     elog(STOP, "close of log file %u, segment %u failed: %m",
                           openLogId, openLogSeg);
                  openLogFile = -1;
              }
--- 3297,3308 ----
          if (openLogFile >= 0)
          {
              if (pg_fsync(openLogFile) != 0)
!                 elog(CRASH, "fsync of log file %u, segment %u failed: %m",
                       openLogId, openLogSeg);
              if (open_sync_bit != new_sync_bit)
              {
                  if (close(openLogFile) != 0)
!                     elog(CRASH, "close of log file %u, segment %u failed: %m",
                           openLogId, openLogSeg);
                  openLogFile = -1;
              }
***************
*** 3323,3335 ****
      {
          case SYNC_METHOD_FSYNC:
              if (pg_fsync(openLogFile) != 0)
!                 elog(STOP, "fsync of log file %u, segment %u failed: %m",
                       openLogId, openLogSeg);
              break;
  #ifdef HAVE_FDATASYNC
          case SYNC_METHOD_FDATASYNC:
              if (pg_fdatasync(openLogFile) != 0)
!                 elog(STOP, "fdatasync of log file %u, segment %u failed: %m",
                       openLogId, openLogSeg);
              break;
  #endif
--- 3323,3335 ----
      {
          case SYNC_METHOD_FSYNC:
              if (pg_fsync(openLogFile) != 0)
!                 elog(CRASH, "fsync of log file %u, segment %u failed: %m",
                       openLogId, openLogSeg);
              break;
  #ifdef HAVE_FDATASYNC
          case SYNC_METHOD_FDATASYNC:
              if (pg_fdatasync(openLogFile) != 0)
!                 elog(CRASH, "fdatasync of log file %u, segment %u failed: %m",
                       openLogId, openLogSeg);
              break;
  #endif
***************
*** 3337,3343 ****
              /* write synced it already */
              break;
          default:
!             elog(STOP, "bogus wal_sync_method %d", sync_method);
              break;
      }
  }
--- 3337,3343 ----
              /* write synced it already */
              break;
          default:
!             elog(CRASH, "bogus wal_sync_method %d", sync_method);
              break;
      }
  }
Index: src/backend/access/transam/xlogutils.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/access/transam/xlogutils.c,v
retrieving revision 1.21
diff -c -r1.21 xlogutils.c
*** src/backend/access/transam/xlogutils.c    2001/10/25 05:49:22    1.21
--- src/backend/access/transam/xlogutils.c    2002/02/19 04:55:02
***************
*** 249,255 ****
      hentry = (XLogRelCacheEntry *) hash_search(_xlrelcache,
                    (void *) &(rdesc->reldata.rd_node), HASH_REMOVE, NULL);
      if (hentry == NULL)
!         elog(STOP, "_xl_remove_hash_entry: file was not found in cache");

      if (rdesc->reldata.rd_fd >= 0)
          smgrclose(DEFAULT_SMGR, &(rdesc->reldata));
--- 249,255 ----
      hentry = (XLogRelCacheEntry *) hash_search(_xlrelcache,
                    (void *) &(rdesc->reldata.rd_node), HASH_REMOVE, NULL);
      if (hentry == NULL)
!         elog(CRASH, "_xl_remove_hash_entry: file was not found in cache");

      if (rdesc->reldata.rd_fd >= 0)
          smgrclose(DEFAULT_SMGR, &(rdesc->reldata));
***************
*** 346,355 ****
              hash_search(_xlrelcache, (void *) &rnode, HASH_ENTER, &found);

          if (hentry == NULL)
!             elog(STOP, "XLogOpenRelation: out of memory for cache");

          if (found)
!             elog(STOP, "XLogOpenRelation: file found on insert into cache");

          hentry->rdesc = res;

--- 346,355 ----
              hash_search(_xlrelcache, (void *) &rnode, HASH_ENTER, &found);

          if (hentry == NULL)
!             elog(CRASH, "XLogOpenRelation: out of memory for cache");

          if (found)
!             elog(CRASH, "XLogOpenRelation: file found on insert into cache");

          hentry->rdesc = res;

Index: src/backend/bootstrap/bootstrap.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/bootstrap/bootstrap.c,v
retrieving revision 1.120
diff -c -r1.120 bootstrap.c
*** src/backend/bootstrap/bootstrap.c    2002/01/10 01:11:45    1.120
--- src/backend/bootstrap/bootstrap.c    2002/02/19 04:55:03
***************
*** 392,398 ****
              proc_exit(0);        /* done */

          default:
!             elog(STOP, "Unsupported XLOG op %d", xlogop);
              proc_exit(0);
      }

--- 392,398 ----
              proc_exit(0);        /* done */

          default:
!             elog(CRASH, "Unsupported XLOG op %d", xlogop);
              proc_exit(0);
      }

Index: src/backend/commands/analyze.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/commands/analyze.c,v
retrieving revision 1.25
diff -c -r1.25 analyze.c
*** src/backend/commands/analyze.c    2002/01/06 00:37:44    1.25
--- src/backend/commands/analyze.c    2002/02/19 04:55:04
***************
*** 106,113 ****
  #define swapDatum(a,b)    do {Datum _tmp; _tmp=a; a=b; b=_tmp;} while(0)


- static int    MESSAGE_LEVEL;
-
  /* context information for compare_scalars() */
  static FmgrInfo *datumCmpFn;
  static SortFunctionKind datumCmpFnKind;
--- 106,111 ----
***************
*** 150,160 ****
      HeapTuple  *rows;
      HeapTuple    tuple;

-     if (vacstmt->verbose)
-         MESSAGE_LEVEL = NOTICE;
-     else
-         MESSAGE_LEVEL = DEBUG;
-
      /*
       * Begin a transaction for analyzing this relation.
       *
--- 148,153 ----
***************
*** 214,220 ****
          return;
      }

!     elog(MESSAGE_LEVEL, "Analyzing %s", RelationGetRelationName(onerel));

      /*
       * Determine which columns to analyze
--- 207,213 ----
          return;
      }

!     elog(INFO, "Analyzing %s", RelationGetRelationName(onerel));

      /*
       * Determine which columns to analyze
Index: src/backend/commands/async.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/commands/async.c,v
retrieving revision 1.81
diff -c -r1.81 async.c
*** src/backend/commands/async.c    2001/10/25 05:49:23    1.81
--- src/backend/commands/async.c    2002/02/19 04:55:05
***************
*** 861,867 ****
           */
      }
      else
!         elog(NOTICE, "NOTIFY for %s", relname);
  }

  /* Does pendingNotifies include the given relname? */
--- 861,867 ----
           */
      }
      else
!         elog(INFO, "NOTIFY for %s", relname);
  }

  /* Does pendingNotifies include the given relname? */
Index: src/backend/commands/command.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/commands/command.c,v
retrieving revision 1.153
diff -c -r1.153 command.c
*** src/backend/commands/command.c    2002/02/14 15:24:06    1.153
--- src/backend/commands/command.c    2002/02/19 04:55:06
***************
*** 1582,1589 ****
               constrName);
      /* Otherwise if more than one constraint deleted, notify */
      else if (deleted > 1)
!         elog(NOTICE, "Multiple constraints dropped");
!
  }


--- 1582,1588 ----
               constrName);
      /* Otherwise if more than one constraint deleted, notify */
      else if (deleted > 1)
!         elog(INFO, "Multiple constraints dropped");
  }


Index: src/backend/commands/creatinh.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/commands/creatinh.c,v
retrieving revision 1.81
diff -c -r1.81 creatinh.c
*** src/backend/commands/creatinh.c    2001/10/25 05:49:24    1.81
--- src/backend/commands/creatinh.c    2002/02/19 04:55:07
***************
*** 425,431 ****
                   * Yes, try to merge the two column definitions. They must
                   * have the same type and typmod.
                   */
!                 elog(NOTICE, "CREATE TABLE: merging multiple inherited definitions of attribute \"%s\"",
                       attributeName);
                  def = (ColumnDef *) nth(exist_attno - 1, inhSchema);
                  if (strcmp(def->typename->name, attributeType) != 0 ||
--- 425,431 ----
                   * Yes, try to merge the two column definitions. They must
                   * have the same type and typmod.
                   */
!                 elog(INFO, "CREATE TABLE: merging multiple inherited definitions of attribute \"%s\"",
                       attributeName);
                  def = (ColumnDef *) nth(exist_attno - 1, inhSchema);
                  if (strcmp(def->typename->name, attributeType) != 0 ||
***************
*** 564,570 ****
                   * Yes, try to merge the two column definitions. They must
                   * have the same type and typmod.
                   */
!                 elog(NOTICE, "CREATE TABLE: merging attribute \"%s\" with inherited definition",
                       attributeName);
                  def = (ColumnDef *) nth(exist_attno - 1, inhSchema);
                  if (strcmp(def->typename->name, attributeType) != 0 ||
--- 564,570 ----
                   * Yes, try to merge the two column definitions. They must
                   * have the same type and typmod.
                   */
!                 elog(INFO, "CREATE TABLE: merging attribute \"%s\" with inherited definition",
                       attributeName);
                  def = (ColumnDef *) nth(exist_attno - 1, inhSchema);
                  if (strcmp(def->typename->name, attributeType) != 0 ||
Index: src/backend/commands/define.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/commands/define.c,v
retrieving revision 1.64
diff -c -r1.64 define.c
*** src/backend/commands/define.c    2001/10/28 06:25:42    1.64
--- src/backend/commands/define.c    2002/02/19 04:55:07
***************
*** 398,409 ****
          else if (strcasecmp(defel->defname, "precedence") == 0)
          {
              /* NOT IMPLEMENTED (never worked in v4.2) */
!             elog(NOTICE, "CREATE OPERATOR: precedence not implemented");
          }
          else if (strcasecmp(defel->defname, "associativity") == 0)
          {
              /* NOT IMPLEMENTED (never worked in v4.2) */
!             elog(NOTICE, "CREATE OPERATOR: associativity not implemented");
          }
          else if (strcasecmp(defel->defname, "commutator") == 0)
              commutatorName = defGetString(defel);
--- 398,409 ----
          else if (strcasecmp(defel->defname, "precedence") == 0)
          {
              /* NOT IMPLEMENTED (never worked in v4.2) */
!             elog(INFO, "CREATE OPERATOR: precedence not implemented");
          }
          else if (strcasecmp(defel->defname, "associativity") == 0)
          {
              /* NOT IMPLEMENTED (never worked in v4.2) */
!             elog(INFO, "CREATE OPERATOR: associativity not implemented");
          }
          else if (strcasecmp(defel->defname, "commutator") == 0)
              commutatorName = defGetString(defel);
Index: src/backend/commands/explain.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/commands/explain.c,v
retrieving revision 1.67
diff -c -r1.67 explain.c
*** src/backend/commands/explain.c    2001/10/25 05:49:25    1.67
--- src/backend/commands/explain.c    2002/02/19 04:55:07
***************
*** 59,65 ****
      /* rewriter will not cope with utility statements */
      if (query->commandType == CMD_UTILITY)
      {
!         elog(NOTICE, "Utility statements have no plan structure");
          return;
      }

--- 59,65 ----
      /* rewriter will not cope with utility statements */
      if (query->commandType == CMD_UTILITY)
      {
!         elog(INFO, "Utility statements have no plan structure");
          return;
      }

***************
*** 69,75 ****
      /* In the case of an INSTEAD NOTHING, tell at least that */
      if (rewritten == NIL)
      {
!         elog(NOTICE, "Query rewrites to nothing");
          return;
      }

--- 69,75 ----
      /* In the case of an INSTEAD NOTHING, tell at least that */
      if (rewritten == NIL)
      {
!         elog(INFO, "Query rewrites to nothing");
          return;
      }

***************
*** 94,102 ****
      if (query->commandType == CMD_UTILITY)
      {
          if (query->utilityStmt && IsA(query->utilityStmt, NotifyStmt))
!             elog(NOTICE, "QUERY PLAN:\n\nNOTIFY\n");
          else
!             elog(NOTICE, "QUERY PLAN:\n\nUTILITY\n");
          return;
      }

--- 94,102 ----
      if (query->commandType == CMD_UTILITY)
      {
          if (query->utilityStmt && IsA(query->utilityStmt, NotifyStmt))
!             elog(INFO, "QUERY PLAN:\n\nNOTIFY\n");
          else
!             elog(INFO, "QUERY PLAN:\n\nUTILITY\n");
          return;
      }

***************
*** 152,158 ****
          s = nodeToString(plan);
          if (s)
          {
!             elog(NOTICE, "QUERY DUMP:\n\n%s", s);
              pfree(s);
          }
      }
--- 152,158 ----
          s = nodeToString(plan);
          if (s)
          {
!             elog(INFO, "QUERY DUMP:\n\n%s", s);
              pfree(s);
          }
      }
***************
*** 165,171 ****
          if (analyze)
              appendStringInfo(str, "Total runtime: %.2f msec\n",
                               1000.0 * totaltime);
!         elog(NOTICE, "QUERY PLAN:\n\n%s", str->data);
          pfree(str->data);
          pfree(str);
      }
--- 165,171 ----
          if (analyze)
              appendStringInfo(str, "Total runtime: %.2f msec\n",
                               1000.0 * totaltime);
!         elog(INFO, "QUERY PLAN:\n\n%s", str->data);
          pfree(str->data);
          pfree(str);
      }
Index: src/backend/commands/sequence.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/commands/sequence.c,v
retrieving revision 1.68
diff -c -r1.68 sequence.c
*** src/backend/commands/sequence.c    2002/01/11 18:16:04    1.68
--- src/backend/commands/sequence.c    2002/02/19 04:55:08
***************
*** 879,885 ****
      sequence_magic *sm;

      if (info != XLOG_SEQ_LOG)
!         elog(STOP, "seq_redo: unknown op code %u", info);

      reln = XLogOpenRelation(true, RM_SEQ_ID, xlrec->node);
      if (!RelationIsValid(reln))
--- 879,885 ----
      sequence_magic *sm;

      if (info != XLOG_SEQ_LOG)
!         elog(CRASH, "seq_redo: unknown op code %u", info);

      reln = XLogOpenRelation(true, RM_SEQ_ID, xlrec->node);
      if (!RelationIsValid(reln))
***************
*** 887,893 ****

      buffer = XLogReadBuffer(true, reln, 0);
      if (!BufferIsValid(buffer))
!         elog(STOP, "seq_redo: can't read block of %u/%u",
               xlrec->node.tblNode, xlrec->node.relNode);

      page = (Page) BufferGetPage(buffer);
--- 887,893 ----

      buffer = XLogReadBuffer(true, reln, 0);
      if (!BufferIsValid(buffer))
!         elog(CRASH, "seq_redo: can't read block of %u/%u",
               xlrec->node.tblNode, xlrec->node.relNode);

      page = (Page) BufferGetPage(buffer);
***************
*** 903,909 ****
      itemsz = MAXALIGN(itemsz);
      if (PageAddItem(page, (Item) item, itemsz,
                      FirstOffsetNumber, LP_USED) == InvalidOffsetNumber)
!         elog(STOP, "seq_redo: failed to add item to page");

      PageSetLSN(page, lsn);
      PageSetSUI(page, ThisStartUpID);
--- 903,909 ----
      itemsz = MAXALIGN(itemsz);
      if (PageAddItem(page, (Item) item, itemsz,
                      FirstOffsetNumber, LP_USED) == InvalidOffsetNumber)
!         elog(CRASH, "seq_redo: failed to add item to page");

      PageSetLSN(page, lsn);
      PageSetSUI(page, ThisStartUpID);
Index: src/backend/commands/trigger.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/commands/trigger.c,v
retrieving revision 1.101
diff -c -r1.101 trigger.c
*** src/backend/commands/trigger.c    2002/01/15 16:52:47    1.101
--- src/backend/commands/trigger.c    2002/02/19 04:55:09
***************
*** 363,369 ****
          elog(ERROR, "DropTrigger: there is no trigger %s on relation %s",
               stmt->trigname, stmt->relname);
      if (tgfound > 1)
!         elog(NOTICE, "DropTrigger: found (and deleted) %d triggers %s on relation %s",
               tgfound, stmt->trigname, stmt->relname);
      heap_endscan(tgscan);
      heap_close(tgrel, RowExclusiveLock);
--- 363,369 ----
          elog(ERROR, "DropTrigger: there is no trigger %s on relation %s",
               stmt->trigname, stmt->relname);
      if (tgfound > 1)
!         elog(INFO, "DropTrigger: found (and deleted) %d triggers %s on relation %s",
               tgfound, stmt->trigname, stmt->relname);
      heap_endscan(tgscan);
      heap_close(tgrel, RowExclusiveLock);
***************
*** 485,491 ****
          stmt.relname = pstrdup(RelationGetRelationName(refrel));
          heap_close(refrel, NoLock);

!         elog(NOTICE, "DROP TABLE implicitly drops referential integrity trigger from table \"%s\"", stmt.relname);

          DropTrigger(&stmt);

--- 485,491 ----
          stmt.relname = pstrdup(RelationGetRelationName(refrel));
          heap_close(refrel, NoLock);

!         elog(INFO, "DROP TABLE implicitly drops referential integrity trigger from table \"%s\"", stmt.relname);

          DropTrigger(&stmt);

Index: src/backend/commands/user.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/commands/user.c,v
retrieving revision 1.90
diff -c -r1.90 user.c
*** src/backend/commands/user.c    2001/11/05 17:46:25    1.90
--- src/backend/commands/user.c    2002/02/19 04:55:10
***************
*** 544,550 ****

      /* changes to the flat password file cannot be rolled back */
      if (IsTransactionBlock() && password)
!         elog(NOTICE, "ALTER USER: password changes cannot be rolled back");

      /*
       * Scan the pg_shadow relation to be certain the user exists. Note we
--- 544,550 ----

      /* changes to the flat password file cannot be rolled back */
      if (IsTransactionBlock() && password)
!         elog(INFO, "ALTER USER: password changes cannot be rolled back");

      /*
       * Scan the pg_shadow relation to be certain the user exists. Note we
***************
*** 698,704 ****
          elog(ERROR, "DROP USER: permission denied");

      if (IsTransactionBlock())
!         elog(NOTICE, "DROP USER cannot be rolled back completely");

      /*
       * Scan the pg_shadow relation to find the usesysid of the user to be
--- 698,704 ----
          elog(ERROR, "DROP USER: permission denied");

      if (IsTransactionBlock())
!         elog(INFO, "DROP USER cannot be rolled back completely");

      /*
       * Scan the pg_shadow relation to find the usesysid of the user to be
Index: src/backend/commands/vacuum.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/commands/vacuum.c,v
retrieving revision 1.213
diff -c -r1.213 vacuum.c
*** src/backend/commands/vacuum.c    2002/01/06 00:37:44    1.213
--- src/backend/commands/vacuum.c    2002/02/19 04:55:12
***************
*** 108,115 ****

  static MemoryContext vac_context = NULL;

- static int    MESSAGE_LEVEL;        /* message level */
-
  static TransactionId OldestXmin;
  static TransactionId FreezeLimit;

--- 108,113 ----
***************
*** 191,201 ****
       */
      pgstat_vacuum_tabstat();

-     if (vacstmt->verbose)
-         MESSAGE_LEVEL = NOTICE;
-     else
-         MESSAGE_LEVEL = DEBUG;
-
      /*
       * Create special memory context for cross-transaction storage.
       *
--- 189,194 ----
***************
*** 971,977 ****
      vac_init_rusage(&ru0);

      relname = RelationGetRelationName(onerel);
!     elog(MESSAGE_LEVEL, "--Relation %s--", relname);

      empty_pages = new_pages = changed_pages = empty_end_pages = 0;
      num_tuples = tups_vacuumed = nkeep = nunused = 0;
--- 964,970 ----
      vac_init_rusage(&ru0);

      relname = RelationGetRelationName(onerel);
!     elog(INFO, "--Relation %s--", relname);

      empty_pages = new_pages = changed_pages = empty_end_pages = 0;
      num_tuples = tups_vacuumed = nkeep = nunused = 0;
***************
*** 1282,1288 ****
          pfree(vtlinks);
      }

!     elog(MESSAGE_LEVEL, "Pages %u: Changed %u, reaped %u, Empty %u, New %u; \
  Tup %.0f: Vac %.0f, Keep/VTL %.0f/%u, UnUsed %.0f, MinLen %lu, MaxLen %lu; \
  Re-using: Free/Avail. Space %.0f/%.0f; EndEmpty/Avail. Pages %u/%u.\n\t%s",
           nblocks, changed_pages, vacuum_pages->num_pages, empty_pages,
--- 1275,1281 ----
          pfree(vtlinks);
      }

!     elog(INFO, "Pages %u: Changed %u, reaped %u, Empty %u, New %u; \
  Tup %.0f: Vac %.0f, Keep/VTL %.0f/%u, UnUsed %.0f, MinLen %lu, MaxLen %lu; \
  Re-using: Free/Avail. Space %.0f/%.0f; EndEmpty/Avail. Pages %u/%u.\n\t%s",
           nblocks, changed_pages, vacuum_pages->num_pages, empty_pages,
***************
*** 1856,1862 ****
                                           InvalidOffsetNumber, LP_USED);
                      if (newoff == InvalidOffsetNumber)
                      {
!                         elog(STOP, "moving chain: failed to add item with len = %lu to page %u",
                            (unsigned long) tuple_len, destvacpage->blkno);
                      }
                      newitemid = PageGetItemId(ToPage, newoff);
--- 1849,1855 ----
                                           InvalidOffsetNumber, LP_USED);
                      if (newoff == InvalidOffsetNumber)
                      {
!                         elog(CRASH, "moving chain: failed to add item with len = %lu to page %u",
                            (unsigned long) tuple_len, destvacpage->blkno);
                      }
                      newitemid = PageGetItemId(ToPage, newoff);
***************
*** 1979,1985 ****
                                   InvalidOffsetNumber, LP_USED);
              if (newoff == InvalidOffsetNumber)
              {
!                 elog(STOP, "failed to add item with len = %lu to page %u (free space %lu, nusd %u, noff %u)",
                       (unsigned long) tuple_len,
                       cur_page->blkno, (unsigned long) cur_page->free,
                       cur_page->offsets_used, cur_page->offsets_free);
--- 1972,1978 ----
                                   InvalidOffsetNumber, LP_USED);
              if (newoff == InvalidOffsetNumber)
              {
!                 elog(CRASH, "failed to add item with len = %lu to page %u (free space %lu, nusd %u, noff %u)",
                       (unsigned long) tuple_len,
                       cur_page->blkno, (unsigned long) cur_page->free,
                       cur_page->offsets_used, cur_page->offsets_free);
***************
*** 2204,2210 ****
      }
      Assert(num_moved == checked_moved);

!     elog(MESSAGE_LEVEL, "Rel %s: Pages: %u --> %u; Tuple(s) moved: %u.\n\t%s",
           RelationGetRelationName(onerel),
           nblocks, blkno, num_moved,
           vac_show_rusage(&ru0));
--- 2197,2203 ----
      }
      Assert(num_moved == checked_moved);

!     elog(INFO, "Rel %s: Pages: %u --> %u; Tuple(s) moved: %u.\n\t%s",
           RelationGetRelationName(onerel),
           nblocks, blkno, num_moved,
           vac_show_rusage(&ru0));
***************
*** 2376,2382 ****
      /* truncate relation if there are some empty end-pages */
      if (vacuum_pages->empty_end_pages > 0)
      {
!         elog(MESSAGE_LEVEL, "Rel %s: Pages: %u --> %u.",
               RelationGetRelationName(onerel),
               vacrelstats->rel_pages, relblocks);
          relblocks = smgrtruncate(DEFAULT_SMGR, onerel, relblocks);
--- 2369,2375 ----
      /* truncate relation if there are some empty end-pages */
      if (vacuum_pages->empty_end_pages > 0)
      {
!         elog(INFO, "Rel %s: Pages: %u --> %u.",
               RelationGetRelationName(onerel),
               vacrelstats->rel_pages, relblocks);
          relblocks = smgrtruncate(DEFAULT_SMGR, onerel, relblocks);
***************
*** 2450,2456 ****
                          stats->num_pages, stats->num_index_tuples,
                          false);

!     elog(MESSAGE_LEVEL, "Index %s: Pages %u; Tuples %.0f.\n\t%s",
           RelationGetRelationName(indrel),
           stats->num_pages, stats->num_index_tuples,
           vac_show_rusage(&ru0));
--- 2443,2449 ----
                          stats->num_pages, stats->num_index_tuples,
                          false);

!     elog(INFO, "Index %s: Pages %u; Tuples %.0f.\n\t%s",
           RelationGetRelationName(indrel),
           stats->num_pages, stats->num_index_tuples,
           vac_show_rusage(&ru0));
***************
*** 2504,2510 ****
                          stats->num_pages, stats->num_index_tuples,
                          false);

!     elog(MESSAGE_LEVEL, "Index %s: Pages %u; Tuples %.0f: Deleted %.0f.\n\t%s",
           RelationGetRelationName(indrel), stats->num_pages,
           stats->num_index_tuples - keep_tuples, stats->tuples_removed,
           vac_show_rusage(&ru0));
--- 2497,2503 ----
                          stats->num_pages, stats->num_index_tuples,
                          false);

!     elog(INFO, "Index %s: Pages %u; Tuples %.0f: Deleted %.0f.\n\t%s",
           RelationGetRelationName(indrel), stats->num_pages,
           stats->num_index_tuples - keep_tuples, stats->tuples_removed,
           vac_show_rusage(&ru0));
Index: src/backend/commands/vacuumlazy.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/commands/vacuumlazy.c,v
retrieving revision 1.11
diff -c -r1.11 vacuumlazy.c
*** src/backend/commands/vacuumlazy.c    2002/01/06 00:37:44    1.11
--- src/backend/commands/vacuumlazy.c    2002/02/19 04:55:12
***************
*** 92,99 ****
  } LVRelStats;


- static int    MESSAGE_LEVEL;        /* message level */
-
  static TransactionId OldestXmin;
  static TransactionId FreezeLimit;

--- 92,97 ----
***************
*** 138,149 ****
      bool        hasindex;
      BlockNumber possibly_freeable;

-     /* initialize */
-     if (vacstmt->verbose)
-         MESSAGE_LEVEL = NOTICE;
-     else
-         MESSAGE_LEVEL = DEBUG;
-
      vacuum_set_xid_limits(vacstmt, onerel->rd_rel->relisshared,
                            &OldestXmin, &FreezeLimit);

--- 136,141 ----
***************
*** 208,214 ****
      vac_init_rusage(&ru0);

      relname = RelationGetRelationName(onerel);
!     elog(MESSAGE_LEVEL, "--Relation %s--", relname);

      empty_pages = changed_pages = 0;
      num_tuples = tups_vacuumed = nkeep = nunused = 0;
--- 200,206 ----
      vac_init_rusage(&ru0);

      relname = RelationGetRelationName(onerel);
!     elog(INFO, "--Relation %s--", relname);

      empty_pages = changed_pages = 0;
      num_tuples = tups_vacuumed = nkeep = nunused = 0;
***************
*** 430,436 ****
              lazy_scan_index(Irel[i], vacrelstats);
      }

!     elog(MESSAGE_LEVEL, "Pages %u: Changed %u, Empty %u; \
  Tup %.0f: Vac %.0f, Keep %.0f, UnUsed %.0f.\n\tTotal %s",
           nblocks, changed_pages, empty_pages,
           num_tuples, tups_vacuumed, nkeep, nunused,
--- 422,428 ----
              lazy_scan_index(Irel[i], vacrelstats);
      }

!     elog(INFO, "Pages %u: Changed %u, Empty %u; \
  Tup %.0f: Vac %.0f, Keep %.0f, UnUsed %.0f.\n\tTotal %s",
           nblocks, changed_pages, empty_pages,
           num_tuples, tups_vacuumed, nkeep, nunused,
***************
*** 481,487 ****
          npages++;
      }

!     elog(MESSAGE_LEVEL, "Removed %d tuples in %d pages.\n\t%s",
           tupindex, npages,
           vac_show_rusage(&ru0));
  }
--- 473,479 ----
          npages++;
      }

!     elog(INFO, "Removed %d tuples in %d pages.\n\t%s",
           tupindex, npages,
           vac_show_rusage(&ru0));
  }
***************
*** 589,595 ****
                          stats->num_pages, stats->num_index_tuples,
                          false);

!     elog(MESSAGE_LEVEL, "Index %s: Pages %u; Tuples %.0f.\n\t%s",
           RelationGetRelationName(indrel),
           stats->num_pages, stats->num_index_tuples,
           vac_show_rusage(&ru0));
--- 581,587 ----
                          stats->num_pages, stats->num_index_tuples,
                          false);

!     elog(INFO, "Index %s: Pages %u; Tuples %.0f.\n\t%s",
           RelationGetRelationName(indrel),
           stats->num_pages, stats->num_index_tuples,
           vac_show_rusage(&ru0));
***************
*** 636,642 ****
                              stats->num_pages, stats->num_index_tuples,
                              false);

!         elog(MESSAGE_LEVEL, "Index %s: Pages %u; Tuples %.0f: Deleted %.0f.\n\t%s",
               RelationGetRelationName(indrel), stats->num_pages,
               stats->num_index_tuples, stats->tuples_removed,
               vac_show_rusage(&ru0));
--- 628,634 ----
                              stats->num_pages, stats->num_index_tuples,
                              false);

!         elog(INFO, "Index %s: Pages %u; Tuples %.0f: Deleted %.0f.\n\t%s",
               RelationGetRelationName(indrel), stats->num_pages,
               stats->num_index_tuples, stats->tuples_removed,
               vac_show_rusage(&ru0));
***************
*** 746,752 ****
       * We keep the exclusive lock until commit (perhaps not necessary)?
       */

!     elog(MESSAGE_LEVEL, "Truncated %u --> %u pages.\n\t%s",
           old_rel_pages, new_rel_pages,
           vac_show_rusage(&ru0));
  }
--- 738,744 ----
       * We keep the exclusive lock until commit (perhaps not necessary)?
       */

!     elog(INFO, "Truncated %u --> %u pages.\n\t%s",
           old_rel_pages, new_rel_pages,
           vac_show_rusage(&ru0));
  }
Index: src/backend/commands/variable.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/commands/variable.c,v
retrieving revision 1.57
diff -c -r1.57 variable.c
*** src/backend/commands/variable.c    2001/12/09 04:37:50    1.57
--- src/backend/commands/variable.c    2002/02/19 04:55:13
***************
*** 295,301 ****
      strcat(buf, ((EuroDates) ? "European" : "US (NonEuropean)"));
      strcat(buf, " conventions");

!     elog(NOTICE, buf, NULL);

      return TRUE;
  }
--- 295,301 ----
      strcat(buf, ((EuroDates) ? "European" : "US (NonEuropean)"));
      strcat(buf, " conventions");

!     elog(INFO, buf, NULL);

      return TRUE;
  }
***************
*** 482,490 ****
          tzn = getenv("TZ");

      if (tzn != NULL)
!         elog(NOTICE, "Time zone is '%s'", tzn);
      else
!         elog(NOTICE, "Time zone is unset");

      return TRUE;
  }    /* show_timezone() */
--- 482,490 ----
          tzn = getenv("TZ");

      if (tzn != NULL)
!         elog(INFO, "Time zone is '%s'", tzn);
      else
!         elog(INFO, "Time zone is unset");

      return TRUE;
  }    /* show_timezone() */
***************
*** 576,584 ****
  {

      if (XactIsoLevel == XACT_SERIALIZABLE)
!         elog(NOTICE, "TRANSACTION ISOLATION LEVEL is SERIALIZABLE");
      else
!         elog(NOTICE, "TRANSACTION ISOLATION LEVEL is READ COMMITTED");
      return TRUE;
  }

--- 576,584 ----
  {

      if (XactIsoLevel == XACT_SERIALIZABLE)
!         elog(INFO, "TRANSACTION ISOLATION LEVEL is SERIALIZABLE");
      else
!         elog(INFO, "TRANSACTION ISOLATION LEVEL is READ COMMITTED");
      return TRUE;
  }

***************
*** 623,629 ****
  static bool
  show_random_seed(void)
  {
!     elog(NOTICE, "Seed for random number generator is unavailable");
      return (TRUE);
  }

--- 623,629 ----
  static bool
  show_random_seed(void)
  {
!     elog(INFO, "Seed for random number generator is unavailable");
      return (TRUE);
  }

***************
*** 690,696 ****
  static bool
  show_client_encoding(void)
  {
!     elog(NOTICE, "Current client encoding is '%s'",
           pg_get_client_encoding_name());
      return TRUE;
  }
--- 690,696 ----
  static bool
  show_client_encoding(void)
  {
!     elog(INFO, "Current client encoding is '%s'",
           pg_get_client_encoding_name());
      return TRUE;
  }
***************
*** 727,747 ****
  static bool
  parse_server_encoding(List *args)
  {
!     elog(NOTICE, "SET SERVER_ENCODING is not supported");
      return TRUE;
  }

  static bool
  show_server_encoding(void)
  {
!     elog(NOTICE, "Current server encoding is '%s'", GetDatabaseEncodingName());
      return TRUE;
  }

  static bool
  reset_server_encoding(void)
  {
!     elog(NOTICE, "RESET SERVER_ENCODING is not supported");
      return TRUE;
  }

--- 727,747 ----
  static bool
  parse_server_encoding(List *args)
  {
!     elog(INFO, "SET SERVER_ENCODING is not supported");
      return TRUE;
  }

  static bool
  show_server_encoding(void)
  {
!     elog(INFO, "Current server encoding is '%s'", GetDatabaseEncodingName());
      return TRUE;
  }

  static bool
  reset_server_encoding(void)
  {
!     elog(INFO, "RESET SERVER_ENCODING is not supported");
      return TRUE;
  }

***************
*** 814,820 ****
      {
          const char *val = GetConfigOption(name);

!         elog(NOTICE, "%s is %s", name, val);
      }
  }

--- 814,820 ----
      {
          const char *val = GetConfigOption(name);

!         elog(INFO, "%s is %s", name, val);
      }
  }

Index: src/backend/parser/analyze.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/parser/analyze.c,v
retrieving revision 1.213
diff -c -r1.213 analyze.c
*** src/backend/parser/analyze.c    2002/01/03 23:21:31    1.213
--- src/backend/parser/analyze.c    2002/02/19 04:55:15
***************
*** 823,829 ****
          sequence->istemp = cxt->istemp;
          sequence->options = NIL;

!         elog(NOTICE, "%s will create implicit sequence '%s' for SERIAL column '%s.%s'",
          cxt->stmtType, sequence->seqname, cxt->relname, column->colname);

          cxt->blist = lappend(cxt->blist, sequence);
--- 823,829 ----
          sequence->istemp = cxt->istemp;
          sequence->options = NIL;

!         elog(INFO, "%s will create implicit sequence '%s' for SERIAL column '%s.%s'",
          cxt->stmtType, sequence->seqname, cxt->relname, column->colname);

          cxt->blist = lappend(cxt->blist, sequence);
***************
*** 1238,1244 ****
              elog(ERROR, "%s: failed to make implicit index name",
                   cxt->stmtType);

!         elog(NOTICE, "%s / %s%s will create implicit index '%s' for table '%s'",
               cxt->stmtType,
               (strcmp(cxt->stmtType, "ALTER TABLE") == 0) ? "ADD " : "",
               (index->primary ? "PRIMARY KEY" : "UNIQUE"),
--- 1238,1244 ----
              elog(ERROR, "%s: failed to make implicit index name",
                   cxt->stmtType);

!         elog(INFO, "%s / %s%s will create implicit index '%s' for table '%s'",
               cxt->stmtType,
               (strcmp(cxt->stmtType, "ALTER TABLE") == 0) ? "ADD " : "",
               (index->primary ? "PRIMARY KEY" : "UNIQUE"),
***************
*** 1262,1268 ****
      if (cxt->fkconstraints == NIL)
          return;

!     elog(NOTICE, "%s will create implicit trigger(s) for FOREIGN KEY check(s)",
           cxt->stmtType);

      foreach(fkclist, cxt->fkconstraints)
--- 1262,1268 ----
      if (cxt->fkconstraints == NIL)
          return;

!     elog(INFO, "%s will create implicit trigger(s) for FOREIGN KEY check(s)",
           cxt->stmtType);

      foreach(fkclist, cxt->fkconstraints)
***************
*** 2681,2687 ****
          elog(ERROR, "unsupported expression in %%TYPE");
      v = (Var *) n;
      tyn = typeidTypeName(v->vartype);
!     elog(NOTICE, "%s.%s%%TYPE converted to %s", tn->name, tn->attrname, tyn);
      tn->name = tyn;
      tn->typmod = v->vartypmod;
      tn->attrname = NULL;
--- 2681,2687 ----
          elog(ERROR, "unsupported expression in %%TYPE");
      v = (Var *) n;
      tyn = typeidTypeName(v->vartype);
!     elog(INFO, "%s.%s%%TYPE converted to %s", tn->name, tn->attrname, tyn);
      tn->name = tyn;
      tn->typmod = v->vartypmod;
      tn->attrname = NULL;
Index: src/backend/parser/gram.y
===================================================================
RCS file: /cvsroot/pgsql/src/backend/parser/gram.y,v
retrieving revision 2.277
diff -c -r2.277 gram.y
*** src/backend/parser/gram.y    2002/02/18 06:49:20    2.277
--- src/backend/parser/gram.y    2002/02/19 04:55:18
***************
*** 1310,1316 ****
                      n->constraints = $3;

                      if ($4 != NULL)
!                         elog(NOTICE,"CREATE TABLE / COLLATE %s not yet implemented"
                               "; clause ignored", $4);

                      $$ = (Node *)n;
--- 1310,1316 ----
                      n->constraints = $3;

                      if ($4 != NULL)
!                         elog(INFO,"CREATE TABLE / COLLATE %s not yet implemented"
                               "; clause ignored", $4);

                      $$ = (Node *)n;
***************
*** 2308,2314 ****
          | RELATIVE                        { $$ = RELATIVE; }
          | ABSOLUTE
              {
!                 elog(NOTICE,"FETCH / ABSOLUTE not supported, using RELATIVE");
                  $$ = RELATIVE;
              }
          ;
--- 2308,2314 ----
          | RELATIVE                        { $$ = RELATIVE; }
          | ABSOLUTE
              {
!                 elog(INFO,"FETCH / ABSOLUTE not supported, using RELATIVE");
                  $$ = RELATIVE;
              }
          ;
Index: src/backend/parser/parse_relation.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/parser/parse_relation.c,v
retrieving revision 1.60
diff -c -r1.60 parse_relation.c
*** src/backend/parser/parse_relation.c    2001/11/05 17:46:26    1.60
--- src/backend/parser/parse_relation.c    2002/02/19 04:55:19
***************
*** 1041,1047 ****
          }
      }
      if (foundInFromCl)
!         elog(NOTICE, "Adding missing FROM-clause entry%s for table \"%s\"",
               pstate->parentParseState != NULL ? " in subquery" : "",
               refname);
  }
--- 1041,1047 ----
          }
      }
      if (foundInFromCl)
!         elog(INFO, "Adding missing FROM-clause entry%s for table \"%s\"",
               pstate->parentParseState != NULL ? " in subquery" : "",
               refname);
  }
Index: src/backend/postmaster/postmaster.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/postmaster/postmaster.c,v
retrieving revision 1.264
diff -c -r1.264 postmaster.c
*** src/backend/postmaster/postmaster.c    2002/01/10 01:11:45    1.264
--- src/backend/postmaster/postmaster.c    2002/02/19 04:55:20
***************
*** 1442,1448 ****
                  break;
              if (ShutdownPID > 0)
              {
!                 elog(REALLYFATAL, "shutdown process %d already running",
                       ShutdownPID);
                  abort();
              }
--- 1442,1448 ----
                  break;
              if (ShutdownPID > 0)
              {
!                 elog(CRASH, "shutdown process %d already running",
                       ShutdownPID);
                  abort();
              }
***************
*** 1486,1492 ****
                  break;
              if (ShutdownPID > 0)
              {
!                 elog(REALLYFATAL, "shutdown process %d already running",
                       ShutdownPID);
                  abort();
              }
--- 1486,1492 ----
                  break;
              if (ShutdownPID > 0)
              {
!                 elog(CRASH, "shutdown process %d already running",
                       ShutdownPID);
                  abort();
              }
***************
*** 1590,1596 ****
              {
                  if (ShutdownPID > 0)
                  {
!                     elog(STOP, "startup process %d died while shutdown process %d already running",
                           pid, ShutdownPID);
                      abort();
                  }
--- 1590,1596 ----
              {
                  if (ShutdownPID > 0)
                  {
!                     elog(CRASH, "startup process %d died while shutdown process %d already running",
                           pid, ShutdownPID);
                      abort();
                  }
Index: src/backend/storage/buffer/bufmgr.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/storage/buffer/bufmgr.c,v
retrieving revision 1.120
diff -c -r1.120 bufmgr.c
*** src/backend/storage/buffer/bufmgr.c    2001/11/10 23:51:14    1.120
--- src/backend/storage/buffer/bufmgr.c    2002/02/19 04:55:22
***************
*** 443,449 ****
                   */
                  if (buf->flags & BM_JUST_DIRTIED)
                  {
!                     elog(STOP, "BufferAlloc: content of block %u (%u/%u) changed while flushing",
                           buf->tag.blockNum,
                           buf->tag.rnode.tblNode, buf->tag.rnode.relNode);
                  }
--- 443,449 ----
                   */
                  if (buf->flags & BM_JUST_DIRTIED)
                  {
!                     elog(CRASH, "BufferAlloc: content of block %u (%u/%u) changed while flushing",
                           buf->tag.blockNum,
                           buf->tag.rnode.tblNode, buf->tag.rnode.relNode);
                  }
***************
*** 804,810 ****
          }

          if (status == SM_FAIL)    /* disk failure ?! */
!             elog(STOP, "BufferSync: cannot write %u for %u/%u",
                   bufHdr->tag.blockNum,
                   bufHdr->tag.rnode.tblNode, bufHdr->tag.rnode.relNode);

--- 804,810 ----
          }

          if (status == SM_FAIL)    /* disk failure ?! */
!             elog(CRASH, "BufferSync: cannot write %u for %u/%u",
                   bufHdr->tag.blockNum,
                   bufHdr->tag.rnode.tblNode, bufHdr->tag.rnode.relNode);

***************
*** 1566,1572 ****
                                         (char *) MAKE_PTR(bufHdr->data));

                      if (status == SM_FAIL)        /* disk failure ?! */
!                         elog(STOP, "FlushRelationBuffers: cannot write %u for %u/%u",
                               bufHdr->tag.blockNum,
                               bufHdr->tag.rnode.tblNode,
                               bufHdr->tag.rnode.relNode);
--- 1566,1572 ----
                                         (char *) MAKE_PTR(bufHdr->data));

                      if (status == SM_FAIL)        /* disk failure ?! */
!                         elog(CRASH, "FlushRelationBuffers: cannot write %u for %u/%u",
                               bufHdr->tag.blockNum,
                               bufHdr->tag.rnode.tblNode,
                               bufHdr->tag.rnode.relNode);
Index: src/backend/storage/lmgr/proc.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/storage/lmgr/proc.c,v
retrieving revision 1.117
diff -c -r1.117 proc.c
*** src/backend/storage/lmgr/proc.c    2001/12/28 18:16:43    1.117
--- src/backend/storage/lmgr/proc.c    2002/02/19 04:55:23
***************
*** 211,217 ****
       * we are a backend, we inherit this by fork() from the postmaster).
       */
      if (procglobal == NULL)
!         elog(STOP, "InitProcess: Proc Header uninitialized");

      if (MyProc != NULL)
          elog(ERROR, "InitProcess: you already exist");
--- 211,217 ----
       * we are a backend, we inherit this by fork() from the postmaster).
       */
      if (procglobal == NULL)
!         elog(CRASH, "InitProcess: Proc Header uninitialized");

      if (MyProc != NULL)
          elog(ERROR, "InitProcess: you already exist");
***************
*** 300,306 ****
       * inherit this by fork() from the postmaster).
       */
      if (ProcGlobal == NULL || DummyProc == NULL)
!         elog(STOP, "InitDummyProcess: Proc Header uninitialized");

      if (MyProc != NULL)
          elog(ERROR, "InitDummyProcess: you already exist");
--- 300,306 ----
       * inherit this by fork() from the postmaster).
       */
      if (ProcGlobal == NULL || DummyProc == NULL)
!         elog(CRASH, "InitDummyProcess: Proc Header uninitialized");

      if (MyProc != NULL)
          elog(ERROR, "InitDummyProcess: you already exist");
Index: src/backend/storage/smgr/smgr.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/storage/smgr/smgr.c,v
retrieving revision 1.54
diff -c -r1.54 smgr.c
*** src/backend/storage/smgr/smgr.c    2001/10/25 05:49:43    1.54
--- src/backend/storage/smgr/smgr.c    2002/02/19 04:55:23
***************
*** 582,588 ****
          if (smgrsw[i].smgr_sync)
          {
              if ((*(smgrsw[i].smgr_sync)) () == SM_FAIL)
!                 elog(STOP, "storage sync failed on %s: %m",
                       DatumGetCString(DirectFunctionCall1(smgrout,
                                                       Int16GetDatum(i))));
          }
--- 582,588 ----
          if (smgrsw[i].smgr_sync)
          {
              if ((*(smgrsw[i].smgr_sync)) () == SM_FAIL)
!                 elog(CRASH, "storage sync failed on %s: %m",
                       DatumGetCString(DirectFunctionCall1(smgrout,
                                                       Int16GetDatum(i))));
          }
Index: src/backend/tcop/postgres.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/tcop/postgres.c,v
retrieving revision 1.245
diff -c -r1.245 postgres.c
*** src/backend/tcop/postgres.c    2002/01/10 01:11:45    1.245
--- src/backend/tcop/postgres.c    2002/02/19 04:55:24
***************
*** 2027,2036 ****
      if (assert_enabled)
      {
          /* val != 0 should be trapped by previous Assert */
!         elog(NOTICE, "Assert test successfull (val = %d)", val);
      }
      else
!         elog(NOTICE, "Assert checking is disabled (val = %d)", val);

      return val;
  }
--- 2027,2036 ----
      if (assert_enabled)
      {
          /* val != 0 should be trapped by previous Assert */
!         elog(INFO, "Assert test successfull (val = %d)", val);
      }
      else
!         elog(INFO, "Assert checking is disabled (val = %d)", val);

      return val;
  }
Index: src/backend/utils/adt/selfuncs.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/utils/adt/selfuncs.c,v
retrieving revision 1.103
diff -c -r1.103 selfuncs.c
*** src/backend/utils/adt/selfuncs.c    2002/01/03 04:02:34    1.103
--- src/backend/utils/adt/selfuncs.c    2002/02/19 04:55:26
***************
*** 2923,2929 ****
          return (bool) result;
      localeptr = setlocale(LC_COLLATE, NULL);
      if (!localeptr)
!         elog(STOP, "Invalid LC_COLLATE setting");

      /*
       * Currently we accept only "C" and "POSIX" (do any systems still
--- 2923,2929 ----
          return (bool) result;
      localeptr = setlocale(LC_COLLATE, NULL);
      if (!localeptr)
!         elog(CRASH, "Invalid LC_COLLATE setting");

      /*
       * Currently we accept only "C" and "POSIX" (do any systems still
Index: src/backend/utils/error/elog.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/utils/error/elog.c,v
retrieving revision 1.91
diff -c -r1.91 elog.c
*** src/backend/utils/error/elog.c    2001/11/05 17:46:30    1.91
--- src/backend/utils/error/elog.c    2002/02/19 04:55:27
***************
*** 109,115 ****
       * Note that we use malloc() not palloc() because we want to retain
       * control if we run out of memory.  palloc() would recursively call
       * elog(ERROR), which would be all right except if we are working on a
!      * FATAL or REALLYFATAL error.    We'd lose track of the fatal condition
       * and report a mere ERROR to outer loop, which would be a Bad Thing.
       * So, we substitute an appropriate message in-place, without
       * downgrading the level if it's above ERROR.
--- 109,115 ----
       * Note that we use malloc() not palloc() because we want to retain
       * control if we run out of memory.  palloc() would recursively call
       * elog(ERROR), which would be all right except if we are working on a
!      * FATAL or CRASH error.    We'd lose track of the fatal condition
       * and report a mere ERROR to outer loop, which would be a Bad Thing.
       * So, we substitute an appropriate message in-place, without
       * downgrading the level if it's above ERROR.
***************
*** 142,154 ****
          lev = FATAL;

      /*
!      * If we are inside a critical section, all errors become REALLYFATAL
       * errors.    See miscadmin.h.
       */
      if (lev == ERROR || lev == FATAL)
      {
          if (CritSectionCount > 0)
!             lev = REALLYFATAL;
      }

      prefix = elog_message_prefix(lev);
--- 142,154 ----
          lev = FATAL;

      /*
!      * If we are inside a critical section, all errors become CRASH
       * errors.    See miscadmin.h.
       */
      if (lev == ERROR || lev == FATAL)
      {
          if (CritSectionCount > 0)
!             lev = CRASH;
      }

      prefix = elog_message_prefix(lev);
***************
*** 167,178 ****
       * vsnprintf won't know what to do with %m).  To keep space
       * calculation simple, we only allow one %m.
       */
!     space_needed = timestamp_size + strlen(prefix)
!         + strlen(fmt) + strlen(errorstr) + 1;

      if (copy_lineno)
      {
!         /* translator: This string will be truncated at 31 characters. */
          snprintf(copylineno_buf, 32, gettext("copy: line %d, "), copy_lineno);
          space_needed += strlen(copylineno_buf);
      }
--- 167,181 ----
       * vsnprintf won't know what to do with %m).  To keep space
       * calculation simple, we only allow one %m.
       */
!     space_needed = timestamp_size + strlen(prefix) +
!                    strlen(fmt) + strlen(errorstr) + 1;

      if (copy_lineno)
      {
!         /*
!          * Prints the failure line of the COPY.  Wow, what a hack!  bjm
!          * Translators:  Error message will be truncated at 31 characters.
!          */
          snprintf(copylineno_buf, 32, gettext("copy: line %d, "), copy_lineno);
          space_needed += strlen(copylineno_buf);
      }
***************
*** 184,190 ****
          {
              /* We're up against it, convert to out-of-memory error */
              fmt_buf = fmt_fixedbuf;
!             if (lev != FATAL && lev != REALLYFATAL)
              {
                  lev = ERROR;
                  prefix = elog_message_prefix(lev);
--- 187,193 ----
          {
              /* We're up against it, convert to out-of-memory error */
              fmt_buf = fmt_fixedbuf;
!             if (lev != FATAL && lev != CRASH)
              {
                  lev = ERROR;
                  prefix = elog_message_prefix(lev);
***************
*** 213,219 ****
      if (copy_lineno)
      {
          strcat(fmt_buf, copylineno_buf);
!         if (lev == ERROR || lev == FATAL || lev == REALLYFATAL)
              copy_lineno = 0;
      }

--- 216,222 ----
      if (copy_lineno)
      {
          strcat(fmt_buf, copylineno_buf);
!         if (lev == ERROR || lev == FATAL || lev == CRASH)
              copy_lineno = 0;
      }

***************
*** 281,287 ****
          {
              /* We're up against it, convert to out-of-memory error */
              msg_buf = msg_fixedbuf;
!             if (lev != FATAL && lev != REALLYFATAL)
              {
                  lev = ERROR;
                  prefix = elog_message_prefix(lev);
--- 284,290 ----
          {
              /* We're up against it, convert to out-of-memory error */
              msg_buf = msg_fixedbuf;
!             if (lev != FATAL && lev != CRASH)
              {
                  lev = ERROR;
                  prefix = elog_message_prefix(lev);
***************
*** 312,317 ****
--- 315,324 ----
              case DEBUG:
                  syslog_level = LOG_DEBUG;
                  break;
+             case LOG:
+             case INFO:
+                 syslog_level = LOG_INFO;
+                 break;
              case NOTICE:
                  syslog_level = LOG_NOTICE;
                  break;
***************
*** 321,327 ****
              case FATAL:
                  syslog_level = LOG_ERR;
                  break;
!             case REALLYFATAL:
              default:
                  syslog_level = LOG_CRIT;
                  break;
--- 328,334 ----
              case FATAL:
                  syslog_level = LOG_ERR;
                  break;
!             case CRASH:
              default:
                  syslog_level = LOG_CRIT;
                  break;
***************
*** 334,344 ****
      /* syslog doesn't want a trailing newline, but other destinations do */
      strcat(msg_buf, "\n");

!     /* write to terminal */
!     if (Use_syslog <= 1 || whereToSendOutput == Debug)
          write(2, msg_buf, strlen(msg_buf));

!     if (lev > DEBUG && whereToSendOutput == Remote)
      {
          /* Send IPC message to the front-end program */
          MemoryContext oldcxt;
--- 341,352 ----
      /* syslog doesn't want a trailing newline, but other destinations do */
      strcat(msg_buf, "\n");

!     /* Write to server logs or server terminal */
!     if (lev != INFO && (Use_syslog <= 1 || whereToSendOutput == Debug))
          write(2, msg_buf, strlen(msg_buf));

!     /* Should we output to the client too? */
!     if (lev >= INFO && whereToSendOutput == Remote)
      {
          /* Send IPC message to the front-end program */
          MemoryContext oldcxt;
***************
*** 351,357 ****
           */
          oldcxt = MemoryContextSwitchTo(ErrorContext);

!         if (lev == NOTICE)
              /* exclude the timestamp from msg sent to frontend */
              send_notice_to_frontend(msg_buf + timestamp_size);
          else
--- 359,365 ----
           */
          oldcxt = MemoryContextSwitchTo(ErrorContext);

!         if (lev <= NOTICE)
              /* exclude the timestamp from msg sent to frontend */
              send_notice_to_frontend(msg_buf + timestamp_size);
          else
***************
*** 414,420 ****
           * Guard against infinite loop from elog() during error recovery.
           */
          if (InError)
!             elog(REALLYFATAL, "elog: error during error recovery, giving up!");
          InError = true;

          /*
--- 422,428 ----
           * Guard against infinite loop from elog() during error recovery.
           */
          if (InError)
!             elog(CRASH, "elog: error during error recovery, giving up!");
          InError = true;

          /*
***************
*** 423,429 ****
          siglongjmp(Warn_restart, 1);
      }

!     if (lev == FATAL || lev == REALLYFATAL)
      {
          /*
           * Serious crash time. Postmaster will observe nonzero process
--- 431,437 ----
          siglongjmp(Warn_restart, 1);
      }

!     if (lev == FATAL || lev == CRASH)
      {
          /*
           * Serious crash time. Postmaster will observe nonzero process
***************
*** 673,682 ****
  {
      StringInfoData buf;

!     AssertArg(type == NOTICE || type == ERROR);

      pq_beginmessage(&buf);
!     pq_sendbyte(&buf, type == NOTICE ? 'N' : 'E');
      pq_sendstring(&buf, msg);
      pq_endmessage(&buf);

--- 681,690 ----
  {
      StringInfoData buf;

!     AssertArg(type <= ERROR);

      pq_beginmessage(&buf);
!     pq_sendbyte(&buf, type != ERROR ? 'N' : 'E'); /* No reason to add INFO */
      pq_sendstring(&buf, msg);
      pq_endmessage(&buf);

***************
*** 732,750 ****
      switch (lev)
      {
          case DEBUG:
!             prefix = gettext("DEBUG:  ");
              break;
          case NOTICE:
              prefix = gettext("NOTICE:  ");
              break;
          case ERROR:
!             prefix = gettext("ERROR:  ");
              break;
          case FATAL:
!             prefix = gettext("FATAL 1:  ");
              break;
!         case REALLYFATAL:
!             prefix = gettext("FATAL 2:  ");
              break;
      }

--- 740,764 ----
      switch (lev)
      {
          case DEBUG:
!             prefix = gettext("DEBUG:   ");
!             break;
!         case LOG:
!             prefix = gettext("LOG:     ");
!             break;
!         case INFO:
!             prefix = gettext("INFO:    ");
              break;
          case NOTICE:
              prefix = gettext("NOTICE:  ");
              break;
          case ERROR:
!             prefix = gettext("ERROR:   ");
              break;
          case FATAL:
!             prefix = gettext("FATAL:   ");
              break;
!         case CRASH:
!             prefix = gettext("CRASH:   ");
              break;
      }

Index: src/backend/utils/hash/dynahash.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/utils/hash/dynahash.c,v
retrieving revision 1.40
diff -c -r1.40 dynahash.c
*** src/backend/utils/hash/dynahash.c    2001/10/28 06:25:54    1.40
--- src/backend/utils/hash/dynahash.c    2002/02/19 04:55:32
***************
*** 933,939 ****
       * systemwide restart.    Otherwise, just shut down this one backend.
       */
      if (hashp->isshared)
!         elog(STOP, "Hash table '%s' corrupted", hashp->tabname);
      else
          elog(FATAL, "Hash table '%s' corrupted", hashp->tabname);
  }
--- 933,939 ----
       * systemwide restart.    Otherwise, just shut down this one backend.
       */
      if (hashp->isshared)
!         elog(CRASH, "Hash table '%s' corrupted", hashp->tabname);
      else
          elog(FATAL, "Hash table '%s' corrupted", hashp->tabname);
  }
Index: src/include/utils/elog.h
===================================================================
RCS file: /cvsroot/pgsql/src/include/utils/elog.h,v
retrieving revision 1.30
diff -c -r1.30 elog.h
*** src/include/utils/elog.h    2001/11/05 17:46:36    1.30
--- src/include/utils/elog.h    2002/02/19 04:55:33
***************
*** 15,29 ****
  #define ELOG_H

  /* Error level codes */
! #define NOTICE    0                /* random info, sent to frontend */
! #define ERROR    (-1)            /* user error - return to known state */
! #define FATAL    1                /* fatal error - abort process */
! #define REALLYFATAL 2            /* take down the other backends with me */
! #define DEBUG    (-2)            /* debug message */
!
! /* temporary nonsense... */
! #define STOP    REALLYFATAL
! #define LOG        DEBUG

  /* Configurable parameters */
  #ifdef ENABLE_SYSLOG
--- 15,27 ----
  #define ELOG_H

  /* Error level codes */
! #define DEBUG    0                /* sent only to server logs, label DEBUG */
! #define LOG        1                /* sent only to server logs, label LOG */
! #define INFO    2                /* sent only to client */
! #define NOTICE    3                /* important, sent to both */
! #define ERROR    4                /* user error - return to known state */
! #define FATAL    5                /* fatal error - abort process */
! #define CRASH    6                /* take down the other backends with me */

  /* Configurable parameters */
  #ifdef ENABLE_SYSLOG

pgsql-patches by date:

Previous
From: "Russell Black"
Date:
Subject: Re: JDBC
Next
From: Tom Lane
Date:
Subject: Re: elog cleanup