]> granicus.if.org Git - postgresql/commitdiff
Add missing output routine for FkConstraint nodes.
authorTom Lane <tgl@sss.pgh.pa.us>
Thu, 25 Oct 2001 14:08:11 +0000 (14:08 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Thu, 25 Oct 2001 14:08:11 +0000 (14:08 +0000)
src/backend/nodes/outfuncs.c

index 417082b39b1c7f167f6efa0d074e1d615026bea6..fab75d50d76e2094b1a96535b3bbda358480628f 100644 (file)
@@ -5,7 +5,7 @@
  * Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- *     $Header: /cvsroot/pgsql/src/backend/nodes/outfuncs.c,v 1.146 2001/10/25 05:49:31 momjian Exp $
+ *     $Header: /cvsroot/pgsql/src/backend/nodes/outfuncs.c,v 1.147 2001/10/25 14:08:11 tgl Exp $
  *
  * NOTES
  *       Every (plan) node in POSTGRES has an associated "out" routine which
@@ -1325,14 +1325,14 @@ _outAConst(StringInfo str, A_Const *node)
 static void
 _outConstraint(StringInfo str, Constraint *node)
 {
-       appendStringInfo(str, " ");
+       appendStringInfo(str, " CONSTRAINT :name ");
        _outToken(str, node->name);
        appendStringInfo(str, " :type ");
 
        switch (node->contype)
        {
                case CONSTR_PRIMARY:
-                       appendStringInfo(str, "PRIMARY KEY ");
+                       appendStringInfo(str, "PRIMARY_KEY :keys ");
                        _outNode(str, node->keys);
                        break;
 
@@ -1351,11 +1351,11 @@ _outConstraint(StringInfo str, Constraint *node)
                        break;
 
                case CONSTR_NOTNULL:
-                       appendStringInfo(str, "NOT NULL");
+                       appendStringInfo(str, "NOT_NULL");
                        break;
 
                case CONSTR_UNIQUE:
-                       appendStringInfo(str, "UNIQUE ");
+                       appendStringInfo(str, "UNIQUE :keys ");
                        _outNode(str, node->keys);
                        break;
 
@@ -1365,6 +1365,25 @@ _outConstraint(StringInfo str, Constraint *node)
        }
 }
 
+static void
+_outFkConstraint(StringInfo str, FkConstraint *node)
+{
+       appendStringInfo(str, " FKCONSTRAINT :constr_name ");
+       _outToken(str, node->constr_name);
+       appendStringInfo(str, " :pktable_name ");
+       _outToken(str, node->pktable_name);
+       appendStringInfo(str, " :fk_attrs ");
+       _outNode(str, node->fk_attrs);
+       appendStringInfo(str, " :pk_attrs ");
+       _outNode(str, node->pk_attrs);
+       appendStringInfo(str, " :match_type ");
+       _outToken(str, node->match_type);
+       appendStringInfo(str, " :actions %d :deferrable %s :initdeferred %s",
+                                        node->actions,
+                                        booltostr(node->deferrable),
+                                        booltostr(node->initdeferred));
+}
+
 static void
 _outCaseExpr(StringInfo str, CaseExpr *node)
 {
@@ -1646,6 +1665,9 @@ _outNode(StringInfo str, void *obj)
                        case T_Constraint:
                                _outConstraint(str, obj);
                                break;
+                       case T_FkConstraint:
+                               _outFkConstraint(str, obj);
+                               break;
                        case T_CaseExpr:
                                _outCaseExpr(str, obj);
                                break;