From: Tom Lane Date: Wed, 8 Jan 2003 22:06:23 +0000 (+0000) Subject: Reconsider old decision to try to constant-fold default and constraint X-Git-Tag: REL7_4_BETA1~1262 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=2d140d35a4170a6ad20dae5c01a381b5b4a4b6a3;p=postgresql 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. --- diff --git a/src/backend/catalog/heap.c b/src/backend/catalog/heap.c index 3d671e92f3..8d176c12cd 100644 --- a/src/backend/catalog/heap.c +++ b/src/backend/catalog/heap.c @@ -8,7 +8,7 @@ * * * 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 @@ -1604,11 +1604,6 @@ AddRelationRawConstraints(Relation rel, if (contain_agg_clause(expr)) 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 * implicit-AND list, so convert expression to implicit-AND form. @@ -1733,7 +1728,7 @@ cookDefault(ParseState *pstate, * column's type. We store the expression without coercion, however, * 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 * actually do the coercion, to ensure we don't accept an unusable @@ -1755,11 +1750,6 @@ cookDefault(ParseState *pstate, format_type_be(type_id)); } - /* - * Might as well try to reduce any constant expressions. - */ - expr = eval_const_expressions(expr); - return (expr); } diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c index 3f9cad16ce..84ea31885d 100644 --- a/src/backend/commands/tablecmds.c +++ b/src/backend/commands/tablecmds.c @@ -8,7 +8,7 @@ * * * 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) 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); diff --git a/src/backend/commands/typecmds.c b/src/backend/commands/typecmds.c index 7d4ff1f0b6..379e4bb9b4 100644 --- a/src/backend/commands/typecmds.c +++ b/src/backend/commands/typecmds.c @@ -8,7 +8,7 @@ * * * 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 * The "DefineFoo" routines take the parse tree and pick out the @@ -1623,11 +1623,6 @@ domainAddConstraint(Oid domainOid, Oid domainNamespace, Oid baseTypeOid, if (contain_agg_clause(expr)) 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. */