diff options
author | Bruce Momjian <bruce@momjian.us> | 2000-04-12 17:17:23 +0000 |
---|---|---|
committer | Bruce Momjian <bruce@momjian.us> | 2000-04-12 17:17:23 +0000 |
commit | 52f77df613cea1803ce86321c37229626d9f213c (patch) | |
tree | bd9ac9f667f295cb65f4c448a5bb5a062d656b27 /src/backend/executor/nodeSubplan.c | |
parent | db4518729d85da83eafdacbcebaeb12618517595 (diff) | |
download | postgresql-52f77df613cea1803ce86321c37229626d9f213c.tar.gz postgresql-52f77df613cea1803ce86321c37229626d9f213c.zip |
Ye-old pgindent run. Same 4-space tabs.
Diffstat (limited to 'src/backend/executor/nodeSubplan.c')
-rw-r--r-- | src/backend/executor/nodeSubplan.c | 58 |
1 files changed, 32 insertions, 26 deletions
diff --git a/src/backend/executor/nodeSubplan.c b/src/backend/executor/nodeSubplan.c index ed09a0bc9f2..99b09f685a0 100644 --- a/src/backend/executor/nodeSubplan.c +++ b/src/backend/executor/nodeSubplan.c @@ -7,7 +7,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/executor/nodeSubplan.c,v 1.24 2000/03/23 07:32:58 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/executor/nodeSubplan.c,v 1.25 2000/04/12 17:15:10 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -67,20 +67,20 @@ ExecSubPlan(SubPlan *node, List *pvar, ExprContext *econtext, bool *isNull) ExecReScan(plan, (ExprContext *) NULL, plan); /* - * For all sublink types except EXPR_SUBLINK, the result is boolean - * as are the results of the combining operators. We combine results + * For all sublink types except EXPR_SUBLINK, the result is boolean as + * are the results of the combining operators. We combine results * within a tuple (if there are multiple columns) using OR semantics * if "useor" is true, AND semantics if not. We then combine results * across tuples (if the subplan produces more than one) using OR * semantics for ANY_SUBLINK or AND semantics for ALL_SUBLINK. * (MULTIEXPR_SUBLINK doesn't allow multiple tuples from the subplan.) * NULL results from the combining operators are handled according to - * the usual SQL semantics for OR and AND. The result for no input + * the usual SQL semantics for OR and AND. The result for no input * tuples is FALSE for ANY_SUBLINK, TRUE for ALL_SUBLINK, NULL for * MULTIEXPR_SUBLINK. * * For EXPR_SUBLINK we require the subplan to produce no more than one - * tuple, else an error is raised. If zero tuples are produced, we + * tuple, else an error is raised. If zero tuples are produced, we * return NULL. Assuming we get a tuple, we just return its first * column (there can be only one non-junk column in this case). */ @@ -106,13 +106,14 @@ ExecSubPlan(SubPlan *node, List *pvar, ExprContext *econtext, bool *isNull) if (found) elog(ERROR, "More than one tuple returned by a subselect used as an expression."); found = true; + /* - * We need to copy the subplan's tuple in case the result is of - * pass-by-ref type --- our return value will point into this - * copied tuple! Can't use the subplan's instance of the tuple - * since it won't still be valid after next ExecProcNode() call. - * node->curTuple keeps track of the copied tuple for eventual - * freeing. + * We need to copy the subplan's tuple in case the result is + * of pass-by-ref type --- our return value will point into + * this copied tuple! Can't use the subplan's instance of the + * tuple since it won't still be valid after next + * ExecProcNode() call. node->curTuple keeps track of the + * copied tuple for eventual freeing. */ tup = heap_copytuple(tup); if (node->curTuple) @@ -129,7 +130,8 @@ ExecSubPlan(SubPlan *node, List *pvar, ExprContext *econtext, bool *isNull) found = true; - /* For ALL, ANY, and MULTIEXPR sublinks, iterate over combining + /* + * For ALL, ANY, and MULTIEXPR sublinks, iterate over combining * operators for columns of tuple. */ foreach(lst, sublink->oper) @@ -140,14 +142,14 @@ ExecSubPlan(SubPlan *node, List *pvar, ExprContext *econtext, bool *isNull) bool expnull; /* - * The righthand side of the expression should be either a Const - * or a function call or RelabelType node taking a Const as arg - * (these nodes represent run-time type coercions inserted by - * the parser to get to the input type needed by the operator). - * Find the Const node and insert the actual righthand-side value - * into it. + * The righthand side of the expression should be either a + * Const or a function call or RelabelType node taking a Const + * as arg (these nodes represent run-time type coercions + * inserted by the parser to get to the input type needed by + * the operator). Find the Const node and insert the actual + * righthand-side value into it. */ - if (! IsA(con, Const)) + if (!IsA(con, Const)) { switch (con->type) { @@ -161,16 +163,18 @@ ExecSubPlan(SubPlan *node, List *pvar, ExprContext *econtext, bool *isNull) /* will fail below */ break; } - if (! IsA(con, Const)) + if (!IsA(con, Const)) elog(ERROR, "ExecSubPlan: failed to find placeholder for subplan result"); } con->constvalue = heap_getattr(tup, col, tdesc, &(con->constisnull)); + /* * Now we can eval the combining operator for this column. */ expresult = ExecEvalExpr((Node *) expr, econtext, &expnull, (bool *) NULL); + /* * Combine the result into the row result as appropriate. */ @@ -240,14 +244,16 @@ ExecSubPlan(SubPlan *node, List *pvar, ExprContext *econtext, bool *isNull) if (!found) { - /* deal with empty subplan result. result/isNull were previously + + /* + * deal with empty subplan result. result/isNull were previously * initialized correctly for all sublink types except EXPR and * MULTIEXPR; for those, return NULL. */ if (subLinkType == EXPR_SUBLINK || subLinkType == MULTIEXPR_SUBLINK) { - result = (Datum) false; - *isNull = true; + result = (Datum) false; + *isNull = true; } } @@ -354,9 +360,9 @@ ExecSetParamPlan(SubPlan *node) /* * We need to copy the subplan's tuple in case any of the params - * are pass-by-ref type --- the pointers stored in the param structs - * will point at this copied tuple! node->curTuple keeps track - * of the copied tuple for eventual freeing. + * are pass-by-ref type --- the pointers stored in the param + * structs will point at this copied tuple! node->curTuple keeps + * track of the copied tuple for eventual freeing. */ tup = heap_copytuple(tup); if (node->curTuple) |