1
0
mirror of https://github.com/postgres/postgres.git synced 2025-10-31 10:30:33 +03:00

Support for subselects.

(Have to re-visit readfuncs.c)
This commit is contained in:
Vadim B. Mikheev
1998-02-13 03:27:47 +00:00
parent 1a105cefbd
commit dc892fd390
4 changed files with 88 additions and 5 deletions

View File

@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/nodes/outfuncs.c,v 1.29 1998/02/10 16:03:21 momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/nodes/outfuncs.c,v 1.30 1998/02/13 03:27:45 vadim Exp $
*
* NOTES
* Every (plan) node in POSTGRES has an associated "out" routine which
@@ -288,7 +288,14 @@ _outPlanInfo(StringInfo str, Plan *node)
_outNode(str, node->lefttree);
appendStringInfo(str, " :righttree ");
_outNode(str, node->righttree);
appendStringInfo(str, " :extprm ");
_outIntList(str, node->extParam);
appendStringInfo(str, " :locprm ");
_outIntList(str, node->locParam);
appendStringInfo(str, " :initplan ");
_outNode(str, node->initPlan);
sprintf(buf, " :nprm %d ", node->nParamExec);
appendStringInfo(str, buf);
}
/*
@@ -408,6 +415,26 @@ _outHashJoin(StringInfo str, HashJoin *node)
appendStringInfo(str, buf);
}
static void
_outSubPlan(StringInfo str, SubPlan *node)
{
char buf[500];
appendStringInfo(str, "SUBPLAN");
appendStringInfo(str, " :plan ");
_outNode(str, node->plan);
sprintf(buf, " :planid %u ", node->plan_id);
appendStringInfo(str, buf);
appendStringInfo(str, " :rtable ");
_outNode(str, node->rtable);
appendStringInfo(str, " :setprm ");
_outIntList (str, node->setParam);
appendStringInfo(str, " :parprm ");
_outIntList (str, node->parParam);
appendStringInfo(str, " :slink ");
_outNode(str, node->sublink);
}
/*
* Scan is a subclass of Node
*/
@@ -674,6 +701,9 @@ _outExpr(StringInfo str, Expr *node)
case NOT_EXPR:
opstr = "not";
break;
case SUBPLAN_EXPR:
opstr = "subp";
break;
}
appendStringInfo(str, " :opType ");
appendStringInfo(str, opstr);
@@ -1654,6 +1684,9 @@ _outNode(StringInfo str, void *obj)
case T_Hash:
_outHash(str, obj);
break;
case T_SubPlan:
_outSubPlan(str, obj);
break;
case T_Tee:
_outTee(str, obj);
break;