Ignore RECHECK in CREATE OPERATOR CLASS, just throwing a NOTICE, instead of
authorTom Lane
Wed, 27 May 2009 20:42:29 +0000 (20:42 +0000)
committerTom Lane
Wed, 27 May 2009 20:42:29 +0000 (20:42 +0000)
throwing an error as 8.4 had been doing.  The error interfered with porting
old database definitions (particularly for pg_migrator) without really buying
any safety.  Per bug #4817 and subsequent discussion.

src/backend/parser/gram.y
src/bin/pg_dump/pg_dump.c

index 7e2609eecc12b2401bab5ee8b2cc880582d739f2..544b69246ed67c85b7a2a461492a18d7debf6e34 100644 (file)
@@ -11,7 +11,7 @@
  *
  *
  * IDENTIFICATION
- *   $PostgreSQL: pgsql/src/backend/parser/gram.y,v 2.663 2009/04/28 09:09:41 heikki Exp $
+ *   $PostgreSQL: pgsql/src/backend/parser/gram.y,v 2.664 2009/05/27 20:42:29 tgl Exp $
  *
  * HISTORY
  *   AUTHOR            DATE            MAJOR EVENT
@@ -3639,9 +3639,14 @@ opt_opfamily:    FAMILY any_name             { $$ = $2; }
 
 opt_recheck:   RECHECK
                {
-                   ereport(ERROR,
+                   /*
+                    * RECHECK no longer does anything in opclass definitions,
+                    * but we still accept it to ease porting of old database
+                    * dumps.
+                    */
+                   ereport(NOTICE,
                            (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-                            errmsg("RECHECK is no longer supported"),
+                            errmsg("RECHECK is no longer required"),
                             errhint("Update your data type."),
                             scanner_errposition(@1)));
                    $$ = TRUE;
index ccb54e5929daedf5581a0f8286633de5aa8bd478..218c6f214a9abbfc48846b6d7552df0226f34b3f 100644 (file)
@@ -12,7 +12,7 @@
  * by PostgreSQL
  *
  * IDENTIFICATION
- *   $PostgreSQL: pgsql/src/bin/pg_dump/pg_dump.c,v 1.537 2009/05/26 17:36:05 tgl Exp $
+ *   $PostgreSQL: pgsql/src/bin/pg_dump/pg_dump.c,v 1.538 2009/05/27 20:42:29 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -8159,8 +8159,10 @@ dumpOpclass(Archive *fout, OpclassInfo *opcinfo)
         * pg_depend entries.
         *
         * XXX RECHECK is gone as of 8.4, but we'll still print it if dumping
-        * an older server's table in which it is used.  Would it be better
-        * to silently ignore it?
+        * an older server's opclass in which it is used.  This is to avoid
+        * hard-to-detect breakage if a newer pg_dump is used to dump from
+        * an older server and then reload into that old version.  This can
+        * go away once 8.3 is so old as to not be of interest to anyone.
         */
        appendPQExpBuffer(query, "SELECT amopstrategy, false AS amopreqcheck, "
                          "amopopr::pg_catalog.regoperator "
@@ -8370,8 +8372,10 @@ dumpOpfamily(Archive *fout, OpfamilyInfo *opfinfo)
    {
        /*
         * XXX RECHECK is gone as of 8.4, but we'll still print it if dumping
-        * an older server's table in which it is used.  Would it be better
-        * to silently ignore it?
+        * an older server's opclass in which it is used.  This is to avoid
+        * hard-to-detect breakage if a newer pg_dump is used to dump from
+        * an older server and then reload into that old version.  This can
+        * go away once 8.3 is so old as to not be of interest to anyone.
         */
        appendPQExpBuffer(query, "SELECT amopstrategy, false AS amopreqcheck, "
                      "amopopr::pg_catalog.regoperator "