aboutsummaryrefslogtreecommitdiff
path: root/src/backend/executor
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/executor')
-rw-r--r--src/backend/executor/execQual.c91
-rw-r--r--src/backend/executor/nodeFunctionscan.c3
2 files changed, 47 insertions, 47 deletions
diff --git a/src/backend/executor/execQual.c b/src/backend/executor/execQual.c
index 31000ef1f2a..d9411761a53 100644
--- a/src/backend/executor/execQual.c
+++ b/src/backend/executor/execQual.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/executor/execQual.c,v 1.103 2002/08/30 23:59:46 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/executor/execQual.c,v 1.104 2002/08/31 19:09:27 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -69,8 +69,9 @@ static Datum ExecEvalNullTest(NullTest *ntest, ExprContext *econtext,
bool *isNull, ExprDoneCond *isDone);
static Datum ExecEvalBooleanTest(BooleanTest *btest, ExprContext *econtext,
bool *isNull, ExprDoneCond *isDone);
-static Datum ExecEvalConstraint(Constraint *constraint, ExprContext *econtext,
- bool *isNull, ExprDoneCond *isDone);
+static Datum ExecEvalConstraintTest(ConstraintTest *constraint,
+ ExprContext *econtext,
+ bool *isNull, ExprDoneCond *isDone);
/*----------
@@ -1465,43 +1466,6 @@ ExecEvalNullTest(NullTest *ntest,
}
}
-/*
- * ExecEvalConstraint
- *
- * Test the constraint against the data provided. If the data fits
- * within the constraint specifications, pass it through (return the
- * datum) otherwise throw an error.
- */
-static Datum
-ExecEvalConstraint(Constraint *constraint, ExprContext *econtext,
- bool *isNull, ExprDoneCond *isDone)
-{
- Datum result;
-
- result = ExecEvalExpr(constraint->raw_expr, econtext, isNull, isDone);
-
- /* Test for the constraint type */
- switch(constraint->contype)
- {
- case CONSTR_NOTNULL:
- if (*isNull)
- {
- elog(ERROR, "Domain %s does not allow NULL values", constraint->name);
- }
- break;
- case CONSTR_CHECK:
-
- elog(ERROR, "ExecEvalConstraint: Domain CHECK Constraints not yet implemented");
- break;
- default:
- elog(ERROR, "ExecEvalConstraint: Constraint type unknown");
- break;
- }
-
- /* If all has gone well (constraint did not fail) return the datum */
- return result;
-}
-
/* ----------------------------------------------------------------
* ExecEvalBooleanTest
*
@@ -1582,6 +1546,41 @@ ExecEvalBooleanTest(BooleanTest *btest,
}
}
+/*
+ * ExecEvalConstraintTest
+ *
+ * Test the constraint against the data provided. If the data fits
+ * within the constraint specifications, pass it through (return the
+ * datum) otherwise throw an error.
+ */
+static Datum
+ExecEvalConstraintTest(ConstraintTest *constraint, ExprContext *econtext,
+ bool *isNull, ExprDoneCond *isDone)
+{
+ Datum result;
+
+ result = ExecEvalExpr(constraint->arg, econtext, isNull, isDone);
+
+ switch (constraint->testtype)
+ {
+ case CONSTR_TEST_NOTNULL:
+ if (*isNull)
+ elog(ERROR, "Domain %s does not allow NULL values",
+ constraint->name);
+ break;
+ case CONSTR_TEST_CHECK:
+ /* TODO: Add CHECK Constraints to domains */
+ elog(ERROR, "Domain CHECK Constraints not yet implemented");
+ break;
+ default:
+ elog(ERROR, "ExecEvalConstraintTest: Constraint type unknown");
+ break;
+ }
+
+ /* If all has gone well (constraint did not fail) return the datum */
+ return result;
+}
+
/* ----------------------------------------------------------------
* ExecEvalFieldSelect
*
@@ -1749,12 +1748,6 @@ ExecEvalExpr(Node *expression,
isNull,
isDone);
break;
- case T_Constraint:
- retDatum = ExecEvalConstraint((Constraint *) expression,
- econtext,
- isNull,
- isDone);
- break;
case T_CaseExpr:
retDatum = ExecEvalCase((CaseExpr *) expression,
econtext,
@@ -1773,6 +1766,12 @@ ExecEvalExpr(Node *expression,
isNull,
isDone);
break;
+ case T_ConstraintTest:
+ retDatum = ExecEvalConstraintTest((ConstraintTest *) expression,
+ econtext,
+ isNull,
+ isDone);
+ break;
default:
elog(ERROR, "ExecEvalExpr: unknown expression type %d",
diff --git a/src/backend/executor/nodeFunctionscan.c b/src/backend/executor/nodeFunctionscan.c
index e00778f3aa1..89b5a544e5a 100644
--- a/src/backend/executor/nodeFunctionscan.c
+++ b/src/backend/executor/nodeFunctionscan.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/executor/nodeFunctionscan.c,v 1.9 2002/08/30 23:59:46 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/executor/nodeFunctionscan.c,v 1.10 2002/08/31 19:09:27 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -226,6 +226,7 @@ ExecInitFunctionScan(FunctionScan *node, EState *estate, Plan *parent)
List *coldeflist = rte->coldeflist;
tupdesc = BuildDescForRelation(coldeflist);
+ tupdesc->tdhasoid = WITHOUTOID;
}
else
elog(ERROR, "Unknown kind of return type specified for function");