]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
Convert Assert checking for empty page into a regular test and elog.
authorTom Lane <tgl@sss.pgh.pa.us>
Fri, 6 Jan 2006 00:16:09 +0000 (00:16 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Fri, 6 Jan 2006 00:16:09 +0000 (00:16 +0000)
The consequences of overwriting a non-empty page are bad enough that
we should not omit this test in production builds.

src/backend/access/heap/hio.c

index 46c2fd31e04f44355ed524b8177e8d9cfe4d91c5..5189ce12d70367cccd3fc5013bf44922583cbcb8 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *       $PostgreSQL: pgsql/src/backend/access/heap/hio.c,v 1.54.4.1 2005/05/07 21:32:52 tgl Exp $
+ *       $PostgreSQL: pgsql/src/backend/access/heap/hio.c,v 1.54.4.2 2006/01/06 00:16:09 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -268,10 +268,17 @@ RelationGetBufferForTuple(Relation relation, Size len,
                UnlockPage(relation, 0, ExclusiveLock);
 
        /*
-        * We need to initialize the empty new page.
+        * We need to initialize the empty new page.  Double-check that it really
+        * is empty (this should never happen, but if it does we don't want to
+        * risk wiping out valid data).
         */
        pageHeader = (Page) BufferGetPage(buffer);
-       Assert(PageIsNew((PageHeader) pageHeader));
+
+       if (!PageIsNew((PageHeader) pageHeader))
+               elog(ERROR, "page %u of relation \"%s\" should be empty but is not",
+                        BufferGetBlockNumber(buffer),
+                        RelationGetRelationName(relation));
+
        PageInit(pageHeader, BufferGetPageSize(buffer), 0);
 
        if (len > PageGetFreeSpace(pageHeader))