Commit 2d140d35 authored by Tom Lane's avatar Tom Lane

Reconsider old decision to try to constant-fold default and constraint

expressions before they are stored.  This seems like not such a hot idea,
particularly now that the constant-folder will try to inline SQL functions.
parent 51d2e3bd
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/catalog/heap.c,v 1.238 2002/12/16 18:39:22 tgl Exp $ * $Header: /cvsroot/pgsql/src/backend/catalog/heap.c,v 1.239 2003/01/08 22:06:20 tgl Exp $
* *
* *
* INTERFACE ROUTINES * INTERFACE ROUTINES
...@@ -1604,11 +1604,6 @@ AddRelationRawConstraints(Relation rel, ...@@ -1604,11 +1604,6 @@ AddRelationRawConstraints(Relation rel,
if (contain_agg_clause(expr)) if (contain_agg_clause(expr))
elog(ERROR, "cannot use aggregate function in CHECK constraint expression"); elog(ERROR, "cannot use aggregate function in CHECK constraint expression");
/*
* Might as well try to reduce any constant expressions.
*/
expr = eval_const_expressions(expr);
/* /*
* Constraints are evaluated with execQual, which expects an * Constraints are evaluated with execQual, which expects an
* implicit-AND list, so convert expression to implicit-AND form. * implicit-AND list, so convert expression to implicit-AND form.
...@@ -1733,7 +1728,7 @@ cookDefault(ParseState *pstate, ...@@ -1733,7 +1728,7 @@ cookDefault(ParseState *pstate,
* column's type. We store the expression without coercion, however, * column's type. We store the expression without coercion, however,
* to avoid premature coercion in cases like * to avoid premature coercion in cases like
* *
* CREATE TABLE tbl (fld timestamp DEFAULT 'now'::text); * CREATE TABLE tbl (fld timestamp DEFAULT 'now');
* *
* NB: this should match the code in rewrite/rewriteHandler.c that will * NB: this should match the code in rewrite/rewriteHandler.c that will
* actually do the coercion, to ensure we don't accept an unusable * actually do the coercion, to ensure we don't accept an unusable
...@@ -1755,11 +1750,6 @@ cookDefault(ParseState *pstate, ...@@ -1755,11 +1750,6 @@ cookDefault(ParseState *pstate,
format_type_be(type_id)); format_type_be(type_id));
} }
/*
* Might as well try to reduce any constant expressions.
*/
expr = eval_const_expressions(expr);
return (expr); return (expr);
} }
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/commands/tablecmds.c,v 1.64 2002/12/30 19:45:17 tgl Exp $ * $Header: /cvsroot/pgsql/src/backend/commands/tablecmds.c,v 1.65 2003/01/08 22:06:23 tgl Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
...@@ -2756,7 +2756,10 @@ AlterTableAddCheckConstraint(Relation rel, Constraint *constr) ...@@ -2756,7 +2756,10 @@ AlterTableAddCheckConstraint(Relation rel, Constraint *constr)
elog(ERROR, "cannot use aggregate function in CHECK constraint expression"); elog(ERROR, "cannot use aggregate function in CHECK constraint expression");
/* /*
* Might as well try to reduce any constant expressions. * Might as well try to reduce any constant expressions, so as to
* minimize overhead while testing the constraint at each row.
*
* Note that the stored form of the constraint will NOT be const-folded.
*/ */
expr = eval_const_expressions(expr); expr = eval_const_expressions(expr);
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/commands/typecmds.c,v 1.28 2003/01/08 21:40:39 tgl Exp $ * $Header: /cvsroot/pgsql/src/backend/commands/typecmds.c,v 1.29 2003/01/08 22:06:23 tgl Exp $
* *
* DESCRIPTION * DESCRIPTION
* The "DefineFoo" routines take the parse tree and pick out the * The "DefineFoo" routines take the parse tree and pick out the
...@@ -1623,11 +1623,6 @@ domainAddConstraint(Oid domainOid, Oid domainNamespace, Oid baseTypeOid, ...@@ -1623,11 +1623,6 @@ domainAddConstraint(Oid domainOid, Oid domainNamespace, Oid baseTypeOid,
if (contain_agg_clause(expr)) if (contain_agg_clause(expr))
elog(ERROR, "cannot use aggregate function in CHECK constraint expression"); elog(ERROR, "cannot use aggregate function in CHECK constraint expression");
/*
* Might as well try to reduce any constant expressions.
*/
expr = eval_const_expressions(expr);
/* /*
* Convert to string form for storage. * Convert to string form for storage.
*/ */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment