mirror of
https://github.com/postgres/postgres.git
synced 2025-06-16 06:01:02 +03:00
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.
This commit is contained in:
@ -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,
|
|||||||
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,
|
|||||||
* 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,
|
|||||||
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 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* 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)
|
|||||||
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 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* 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,
|
|||||||
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.
|
||||||
*/
|
*/
|
||||||
|
Reference in New Issue
Block a user