aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2003-04-10 02:47:46 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2003-04-10 02:47:46 +0000
commitda2060e5fde1352e10a96d38a8c82f72e37ada77 (patch)
tree500b80514ce87c9b3203aafcdc662ed02f773869 /src
parenta6554df4f77b36249d8192c18e2af70cbfe2b0bf (diff)
downloadpostgresql-da2060e5fde1352e10a96d38a8c82f72e37ada77.tar.gz
postgresql-da2060e5fde1352e10a96d38a8c82f72e37ada77.zip
Remove premature attempt to constant-fold type coercion expressions.
While usually safe, this fails if the coercion function needs the query snapshot to be set already. Per example from Nigel Andrews.
Diffstat (limited to 'src')
-rw-r--r--src/backend/parser/parse_coerce.c30
1 files changed, 2 insertions, 28 deletions
diff --git a/src/backend/parser/parse_coerce.c b/src/backend/parser/parse_coerce.c
index 0ad67b884c8..a4b739b0f7e 100644
--- a/src/backend/parser/parse_coerce.c
+++ b/src/backend/parser/parse_coerce.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/parser/parse_coerce.c,v 2.94 2003/04/08 23:20:02 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/parser/parse_coerce.c,v 2.95 2003/04/10 02:47:46 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -219,20 +219,6 @@ coerce_type(Node *node, Oid inputTypeId, Oid targetTypeId,
if (targetTypeId != baseTypeId)
result = coerce_to_domain(result, baseTypeId, targetTypeId,
cformat);
-
- /*
- * If the input is a constant, apply the type conversion
- * function now instead of delaying to runtime. (We could, of
- * course, just leave this to be done during
- * planning/optimization; but it's a very frequent special
- * case, and we save cycles in the rewriter if we fold the
- * expression now.)
- *
- * Note that no folding will occur if the conversion function is
- * not marked 'immutable'.
- */
- if (IsA(node, Const))
- result = eval_const_expressions(result);
}
else
{
@@ -464,7 +450,6 @@ coerce_type_typmod(Node *node, Oid targetTypeId, int32 targetTypMod,
{
List *args;
Const *cons;
- Node *fcall;
/* Pass given value, plus target typmod as an int4 constant */
cons = makeConst(INT4OID,
@@ -487,18 +472,7 @@ coerce_type_typmod(Node *node, Oid targetTypeId, int32 targetTypMod,
args = lappend(args, cons);
}
- fcall = build_func_call(funcId, targetTypeId, args, cformat);
-
- /*
- * If the input is a constant, apply the length coercion
- * function now instead of delaying to runtime.
- *
- * See the comments for the similar case in coerce_type.
- */
- if (node && IsA(node, Const))
- node = eval_const_expressions(fcall);
- else
- node = fcall;
+ node = build_func_call(funcId, targetTypeId, args, cformat);
}
return node;