Add some printing capability for a few more node types (CreateStmt,
IndexStmt, IndexElem, ColumnDef).
This commit is contained in:
parent
0295864514
commit
6ad698c928
|
@ -7,7 +7,7 @@
|
|||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $Header: /cvsroot/pgsql/src/backend/nodes/outfuncs.c,v 1.10 1997/09/08 21:44:07 momjian Exp $
|
||||
* $Header: /cvsroot/pgsql/src/backend/nodes/outfuncs.c,v 1.11 1997/12/04 23:20:32 thomas Exp $
|
||||
*
|
||||
* NOTES
|
||||
* Every (plan) node in POSTGRES has an associated "out" routine which
|
||||
|
@ -67,6 +67,70 @@ _outIntList(StringInfo str, List *list)
|
|||
appendStringInfo(str, ")");
|
||||
}
|
||||
|
||||
static void
|
||||
_outCreateStmt(StringInfo str, CreateStmt *node)
|
||||
{
|
||||
char buf[500];
|
||||
|
||||
sprintf(buf, "CREATE");
|
||||
appendStringInfo(str, buf);
|
||||
|
||||
sprintf(buf, " :relname %s", node->relname);
|
||||
appendStringInfo(str, buf);
|
||||
appendStringInfo(str, " :columns");
|
||||
_outNode(str, node->tableElts);
|
||||
} /* _outCreateStmt() */
|
||||
|
||||
static void
|
||||
_outIndexStmt(StringInfo str, IndexStmt *node)
|
||||
{
|
||||
char buf[500];
|
||||
|
||||
sprintf(buf, "INDEX");
|
||||
appendStringInfo(str, buf);
|
||||
|
||||
sprintf(buf, " :idxname %s", node->idxname);
|
||||
appendStringInfo(str, buf);
|
||||
sprintf(buf, " :relname %s", node->relname);
|
||||
appendStringInfo(str, buf);
|
||||
sprintf(buf, " :method %s", node->accessMethod);
|
||||
appendStringInfo(str, buf);
|
||||
sprintf(buf, " :unique %s", (node->unique? "y": "n"));
|
||||
appendStringInfo(str, buf);
|
||||
appendStringInfo(str, " :columns");
|
||||
_outNode(str, node->indexParams);
|
||||
} /* _outIndexStmt() */
|
||||
|
||||
static void
|
||||
_outColumnDef(StringInfo str, ColumnDef *node)
|
||||
{
|
||||
char buf[500];
|
||||
|
||||
sprintf(buf, "COLUMNDEF");
|
||||
appendStringInfo(str, buf);
|
||||
|
||||
sprintf(buf, " :colname %s", node->colname);
|
||||
appendStringInfo(str, buf);
|
||||
appendStringInfo(str, " :typename");
|
||||
_outNode(str, node->typename);
|
||||
} /* _outColumnDef() */
|
||||
|
||||
static void
|
||||
_outIndexElem(StringInfo str, IndexElem *node)
|
||||
{
|
||||
char buf[500];
|
||||
|
||||
sprintf(buf, "INDEXELEM");
|
||||
appendStringInfo(str, buf);
|
||||
|
||||
sprintf(buf, " :name %s", node->name);
|
||||
appendStringInfo(str, buf);
|
||||
sprintf(buf, " :class %s", node->class);
|
||||
appendStringInfo(str, buf);
|
||||
appendStringInfo(str, " :tname");
|
||||
_outNode(str, node->tname);
|
||||
} /* _outIndexElem() */
|
||||
|
||||
static void
|
||||
_outQuery(StringInfo str, Query *node)
|
||||
{
|
||||
|
@ -77,14 +141,41 @@ _outQuery(StringInfo str, Query *node)
|
|||
|
||||
sprintf(buf, " :command %d", node->commandType);
|
||||
appendStringInfo(str, buf);
|
||||
if (node->utilityStmt &&
|
||||
nodeTag(node->utilityStmt) == T_NotifyStmt)
|
||||
sprintf(buf, " :utility %s",
|
||||
((NotifyStmt *) (node->utilityStmt))->relname);
|
||||
if (node->utilityStmt)
|
||||
{
|
||||
switch (nodeTag(node->utilityStmt))
|
||||
{
|
||||
case T_CreateStmt:
|
||||
sprintf(buf, " :create %s",
|
||||
((CreateStmt *) (node->utilityStmt))->relname);
|
||||
appendStringInfo(str, buf);
|
||||
_outNode(str, node->utilityStmt);
|
||||
break;
|
||||
|
||||
case T_IndexStmt:
|
||||
sprintf(buf, " :index %s on %s",
|
||||
((IndexStmt *) (node->utilityStmt))->idxname,
|
||||
((IndexStmt *) (node->utilityStmt))->relname);
|
||||
appendStringInfo(str, buf);
|
||||
_outNode(str, node->utilityStmt);
|
||||
break;
|
||||
|
||||
case T_NotifyStmt:
|
||||
sprintf(buf, " :utility %s",
|
||||
((NotifyStmt *) (node->utilityStmt))->relname);
|
||||
appendStringInfo(str, buf);
|
||||
break;
|
||||
|
||||
default:
|
||||
sprintf(buf, " :utility ?");
|
||||
appendStringInfo(str, buf);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/* use "" to designate */
|
||||
sprintf(buf, " :utility \"\"");
|
||||
appendStringInfo(str, buf);
|
||||
appendStringInfo(str, " :utility \"\"");
|
||||
}
|
||||
|
||||
sprintf(buf, " :resrel %d", node->resultRelation);
|
||||
appendStringInfo(str, buf);
|
||||
|
@ -1527,6 +1618,20 @@ _outNode(StringInfo str, void *obj)
|
|||
appendStringInfo(str, "{");
|
||||
switch (nodeTag(obj))
|
||||
{
|
||||
case T_CreateStmt:
|
||||
_outCreateStmt(str, obj);
|
||||
break;
|
||||
case T_IndexStmt:
|
||||
_outIndexStmt(str, obj);
|
||||
break;
|
||||
|
||||
case T_ColumnDef:
|
||||
_outColumnDef(str, obj);
|
||||
break;
|
||||
case T_IndexElem:
|
||||
_outIndexElem(str, obj);
|
||||
break;
|
||||
|
||||
case T_Query:
|
||||
_outQuery(str, obj);
|
||||
break;
|
||||
|
|
Loading…
Reference in New Issue