Add a few other parser-only nodes for debugging help.
authorThomas G. Lockhart
Tue, 23 Feb 1999 08:01:47 +0000 (08:01 +0000)
committerThomas G. Lockhart
Tue, 23 Feb 1999 08:01:47 +0000 (08:01 +0000)
Define the JoinExpr node.

src/backend/nodes/outfuncs.c

index 8f1560dac2ba84a17995a8192f288850bf6351b0..78c90ff420720746ecaaa6a5108702abfd4406b6 100644 (file)
@@ -5,7 +5,7 @@
  *
  * Copyright (c) 1994, Regents of the University of California
  *
- *  $Id: outfuncs.c,v 1.75 1999/02/18 00:49:14 momjian Exp $
+ *  $Id: outfuncs.c,v 1.76 1999/02/23 08:01:47 thomas Exp $
  *
  * NOTES
  *   Every (plan) node in POSTGRES has an associated "out" routine which
@@ -42,9 +42,7 @@
 #include "catalog/pg_type.h"
 #include "lib/stringinfo.h"
 
-#ifdef PARSEDEBUG
 #include "../parse.h"
-#endif
 
 static void _outDatum(StringInfo str, Datum value, Oid type);
 static void _outNode(StringInfo str, void *obj);
@@ -109,7 +107,6 @@ _outIndexStmt(StringInfo str, IndexStmt *node)
            node->unique ? "true" : "false");
 }
 
-#ifdef PARSEDEBUG
 static void
 _outSelectStmt(StringInfo str, SelectStmt *node)
 {
@@ -124,8 +121,6 @@ _outFuncCall(StringInfo str, FuncCall *node)
    _outNode(str, node->args);
 }
 
-#endif
-
 static void
 _outColumnDef(StringInfo str, ColumnDef *node)
 {
@@ -1293,7 +1288,6 @@ static void
 _outAExpr(StringInfo str, A_Expr *node)
 {
    appendStringInfo(str, "EXPR ");
-#ifdef PARSEDEBUG
    switch (node->oper)
    {
        case AND:
@@ -1312,12 +1306,9 @@ _outAExpr(StringInfo str, A_Expr *node)
            appendStringInfo(str, "NOTNULL");
            break;
        default:
-#endif
            appendStringInfo(str, stringStringInfo(node->opname));
-#ifdef PARSEDEBUG
            break;
    }
-#endif
    _outNode(str, node->lexpr);
    _outNode(str, node->rexpr);
    return;
@@ -1350,6 +1341,24 @@ _outIdent(StringInfo str, Ident *node)
    return;
 }
 
+static void
+_outAttr(StringInfo str, Attr *node)
+{
+   List       *l;
+
+   appendStringInfo(str, " ATTR \"%s\" ", stringStringInfo(node->relname));
+
+   appendStringInfo(str, "(");
+   foreach(l, node->attrs)
+   {
+       _outNode(str, lfirst(l));
+       if (lnext(l))
+           appendStringInfo(str, ",");
+   }
+   appendStringInfo(str, ")");
+   return;
+}
+
 static void
 _outAConst(StringInfo str, A_Const *node)
 {
@@ -1465,18 +1474,6 @@ _outNode(StringInfo str, void *obj)
            case T_IndexElem:
                _outIndexElem(str, obj);
                break;
-
-#ifdef PARSEDEBUG
-           case T_VariableSetStmt:
-               break;
-           case T_SelectStmt:
-               _outSelectStmt(str, obj);
-               break;
-           case T_FuncCall:
-               _outFuncCall(str, obj);
-               break;
-#endif
-
            case T_Query:
                _outQuery(str, obj);
                break;
@@ -1659,6 +1656,19 @@ _outNode(StringInfo str, void *obj)
            case T_CaseWhen:
                _outCaseWhen(str, obj);
                break;
+
+           case T_VariableSetStmt:
+               break;
+           case T_SelectStmt:
+               _outSelectStmt(str, obj);
+               break;
+           case T_FuncCall:
+               _outFuncCall(str, obj);
+               break;
+           case T_Attr:
+               _outAttr(str, obj);
+               break;
+
            default:
                elog(NOTICE, "_outNode: don't know how to print type %d ",
                     nodeTag(obj));