diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2002-05-12 23:43:04 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2002-05-12 23:43:04 +0000 |
commit | 3389a110d40a505951e7c7babdfb8681173bb2ca (patch) | |
tree | 438acebac5cfd161cf920bcda6ad168affcb96a7 /src/backend/optimizer/path/indxpath.c | |
parent | f9e4f611a18f64fd9106a72ec9af9e2220075780 (diff) |
Get rid of long-since-vestigial Iter node type, in favor of adding a
returns-set boolean field in Func and Oper nodes. This allows cleaner,
more reliable tests for expressions returning sets in the planner and
parser. For example, a WHERE clause returning a set is now detected
and complained of in the parser, not only at runtime.
Diffstat (limited to 'src/backend/optimizer/path/indxpath.c')
-rw-r--r-- | src/backend/optimizer/path/indxpath.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/src/backend/optimizer/path/indxpath.c b/src/backend/optimizer/path/indxpath.c index 21599b08bd7..6ec1d5af8fa 100644 --- a/src/backend/optimizer/path/indxpath.c +++ b/src/backend/optimizer/path/indxpath.c @@ -9,7 +9,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/optimizer/path/indxpath.c,v 1.116 2002/04/16 23:08:10 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/optimizer/path/indxpath.c,v 1.117 2002/05/12 23:43:02 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -1316,7 +1316,8 @@ pred_test_simple_clause(Expr *predicate, Node *clause) */ test_oper = makeOper(test_op, /* opno */ InvalidOid, /* opid */ - BOOLOID); /* opresulttype */ + BOOLOID, /* opresulttype */ + false); /* opretset */ replace_opid(test_oper); test_expr = make_opclause(test_oper, (Var *) clause_const, @@ -2020,7 +2021,7 @@ prefix_quals(Var *leftop, Oid expr_op, if (oproid == InvalidOid) elog(ERROR, "prefix_quals: no = operator for type %u", datatype); con = string_to_const(prefix, datatype); - op = makeOper(oproid, InvalidOid, BOOLOID); + op = makeOper(oproid, InvalidOid, BOOLOID, false); expr = make_opclause(op, leftop, (Var *) con); result = makeList1(expr); return result; @@ -2035,7 +2036,7 @@ prefix_quals(Var *leftop, Oid expr_op, if (oproid == InvalidOid) elog(ERROR, "prefix_quals: no >= operator for type %u", datatype); con = string_to_const(prefix, datatype); - op = makeOper(oproid, InvalidOid, BOOLOID); + op = makeOper(oproid, InvalidOid, BOOLOID, false); expr = make_opclause(op, leftop, (Var *) con); result = makeList1(expr); @@ -2051,7 +2052,7 @@ prefix_quals(Var *leftop, Oid expr_op, if (oproid == InvalidOid) elog(ERROR, "prefix_quals: no < operator for type %u", datatype); con = string_to_const(greaterstr, datatype); - op = makeOper(oproid, InvalidOid, BOOLOID); + op = makeOper(oproid, InvalidOid, BOOLOID, false); expr = make_opclause(op, leftop, (Var *) con); result = lappend(result, expr); pfree(greaterstr); @@ -2116,7 +2117,7 @@ network_prefix_quals(Var *leftop, Oid expr_op, Datum rightop) opr1right = network_scan_first(rightop); - op = makeOper(opr1oid, InvalidOid, BOOLOID); + op = makeOper(opr1oid, InvalidOid, BOOLOID, false); expr = make_opclause(op, leftop, (Var *) makeConst(datatype, -1, opr1right, false, false, false, false)); @@ -2131,7 +2132,7 @@ network_prefix_quals(Var *leftop, Oid expr_op, Datum rightop) opr2right = network_scan_last(rightop); - op = makeOper(opr2oid, InvalidOid, BOOLOID); + op = makeOper(opr2oid, InvalidOid, BOOLOID, false); expr = make_opclause(op, leftop, (Var *) makeConst(datatype, -1, opr2right, false, false, false, false)); |