Attached is a patch to contrib/dbmirror that fixes a bug that was
authorBruce Momjian
Thu, 26 Sep 2002 05:24:30 +0000 (05:24 +0000)
committerBruce Momjian
Thu, 26 Sep 2002 05:24:30 +0000 (05:24 +0000)
causing  the postmaster to crash when the trigger was running on a table
without a  primary key.

I've also updated the docs to explicitly say that tables need primary
keys.

Steven Singer

contrib/dbmirror/README.dbmirror
contrib/dbmirror/pending.c

index 8788ffd4e5f63eafd7bb236a266e771bfdd259ba..b89ea49a94f2aed3c6a974b9a66eb4531cc5b408 100644 (file)
@@ -120,6 +120,9 @@ Execute the SQL code in AddTrigger.sql once for each table that should
 be mirrored.   Replace MyTableName with the name of the table that should
 be mirrored.
 
+NOTE: DBMirror requires that every table being mirrored have a primary key
+defined.
+
 5)  Create the slave database.
 
 The DBMirror system keeps the contents of mirrored tables identical on the
index d62da430d19a9697eca318bfa0be3f1f94c8c574..911cd7ab47fc42e5c7d451a97aa738d96e8c3a20 100644 (file)
@@ -1,6 +1,6 @@
 /****************************************************************************
  * pending.c
- * $Id: pending.c,v 1.4 2002/09/05 00:43:06 tgl Exp $
+ * $Id: pending.c,v 1.5 2002/09/26 05:24:30 momjian Exp $
  *
  * This file contains a trigger for Postgresql-7.x to record changes to tables
  * to a pending table for mirroring.
@@ -225,6 +225,11 @@ storeKeyInfo(char *cpTableName, HeapTuple tTupleData,
 
    /* pplan = SPI_saveplan(pplan); */
    cpKeyData = packageData(tTupleData, tTupleDesc, tpTrigData, PRIMARY);
+   if (cpKeyData == NULL)
+   {
+       elog(ERROR,"Could not determine primary key data");
+       return -1;
+   }
 #if defined DEBUG_OUTPUT
    elog(NOTICE, cpKeyData);
 #endif