aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2012-10-12 13:35:00 -0400
committerTom Lane <tgl@sss.pgh.pa.us>2012-10-12 13:35:00 -0400
commita29f7ed5544ef583747c0dcc3fc2afac1fb191ef (patch)
tree5693033a5757722c757bcc22c8afb0e42c996a98 /src
parent427fd88552c5ee6e239b776dfa763489251809bc (diff)
downloadpostgresql-a29f7ed5544ef583747c0dcc3fc2afac1fb191ef.tar.gz
postgresql-a29f7ed5544ef583747c0dcc3fc2afac1fb191ef.zip
Get rid of COERCE_DONTCARE.
We don't need this hack any more.
Diffstat (limited to 'src')
-rw-r--r--src/backend/executor/functions.c6
-rw-r--r--src/backend/nodes/nodeFuncs.c5
-rw-r--r--src/backend/optimizer/path/equivclass.c4
-rw-r--r--src/backend/optimizer/prep/prepunion.c2
-rw-r--r--src/backend/optimizer/util/clauses.c8
-rw-r--r--src/backend/parser/parse_agg.c4
-rw-r--r--src/include/nodes/primnodes.h5
7 files changed, 16 insertions, 18 deletions
diff --git a/src/backend/executor/functions.c b/src/backend/executor/functions.c
index c90521246a5..e28fd89538d 100644
--- a/src/backend/executor/functions.c
+++ b/src/backend/executor/functions.c
@@ -1572,7 +1572,7 @@ check_sql_fn_retval(Oid func_id, Oid rettype, List *queryTreeList,
rettype,
-1,
get_typcollation(rettype),
- COERCE_DONTCARE);
+ COERCE_IMPLICIT_CAST);
/* Relabel is dangerous if TLE is a sort/group or setop column */
if (tle->ressortgroupref != 0 || parse->setOperations)
*modifyTargetList = true;
@@ -1618,7 +1618,7 @@ check_sql_fn_retval(Oid func_id, Oid rettype, List *queryTreeList,
rettype,
-1,
get_typcollation(rettype),
- COERCE_DONTCARE);
+ COERCE_IMPLICIT_CAST);
/* Relabel is dangerous if sort/group or setop column */
if (tle->ressortgroupref != 0 || parse->setOperations)
*modifyTargetList = true;
@@ -1722,7 +1722,7 @@ check_sql_fn_retval(Oid func_id, Oid rettype, List *queryTreeList,
atttype,
-1,
get_typcollation(atttype),
- COERCE_DONTCARE);
+ COERCE_IMPLICIT_CAST);
/* Relabel is dangerous if sort/group or setop column */
if (tle->ressortgroupref != 0 || parse->setOperations)
*modifyTargetList = true;
diff --git a/src/backend/nodes/nodeFuncs.c b/src/backend/nodes/nodeFuncs.c
index b130902dcf2..c52f4ed6ca8 100644
--- a/src/backend/nodes/nodeFuncs.c
+++ b/src/backend/nodes/nodeFuncs.c
@@ -554,8 +554,7 @@ exprIsLengthCoercion(const Node *expr, int32 *coercedTypmod)
*
* This is primarily intended to be used during planning. Therefore, it
* strips any existing RelabelType nodes to maintain the planner's invariant
- * that there are not adjacent RelabelTypes, and it uses COERCE_DONTCARE
- * which would typically be inappropriate earlier.
+ * that there are not adjacent RelabelTypes.
*/
Node *
relabel_to_typmod(Node *expr, int32 typmod)
@@ -569,7 +568,7 @@ relabel_to_typmod(Node *expr, int32 typmod)
/* Apply new typmod, preserving the previous exposed type and collation */
return (Node *) makeRelabelType((Expr *) expr, type, typmod, coll,
- COERCE_DONTCARE);
+ COERCE_EXPLICIT_CAST);
}
/*
diff --git a/src/backend/optimizer/path/equivclass.c b/src/backend/optimizer/path/equivclass.c
index 562177296ca..42286a17e81 100644
--- a/src/backend/optimizer/path/equivclass.c
+++ b/src/backend/optimizer/path/equivclass.c
@@ -431,13 +431,13 @@ canonicalize_ec_expression(Expr *expr, Oid req_type, Oid req_collation)
req_type,
-1,
req_collation,
- COERCE_DONTCARE);
+ COERCE_IMPLICIT_CAST);
else if (exprCollation((Node *) expr) != req_collation)
expr = (Expr *) makeRelabelType(expr,
req_type,
exprTypmod((Node *) expr),
req_collation,
- COERCE_DONTCARE);
+ COERCE_IMPLICIT_CAST);
}
return expr;
diff --git a/src/backend/optimizer/prep/prepunion.c b/src/backend/optimizer/prep/prepunion.c
index 9e154e1120b..b91e9f417fc 100644
--- a/src/backend/optimizer/prep/prepunion.c
+++ b/src/backend/optimizer/prep/prepunion.c
@@ -982,7 +982,7 @@ generate_setop_tlist(List *colTypes, List *colCollations,
exprType(expr),
exprTypmod(expr),
colColl,
- COERCE_DONTCARE);
+ COERCE_IMPLICIT_CAST);
}
tle = makeTargetEntry((Expr *) expr,
diff --git a/src/backend/optimizer/util/clauses.c b/src/backend/optimizer/util/clauses.c
index 5894dd39c17..d5d3afe6000 100644
--- a/src/backend/optimizer/util/clauses.c
+++ b/src/backend/optimizer/util/clauses.c
@@ -2789,7 +2789,7 @@ eval_const_expressions_mutator(Node *node,
relabel->resulttype = exprType(arg);
relabel->resulttypmod = exprTypmod(arg);
relabel->resultcollid = collate->collOid;
- relabel->relabelformat = COERCE_DONTCARE;
+ relabel->relabelformat = COERCE_IMPLICIT_CAST;
relabel->location = collate->location;
/* Don't create stacked RelabelTypes */
@@ -3625,7 +3625,7 @@ simplify_function(Oid funcid, Oid result_type, int32 result_typmod,
fexpr.funcid = funcid;
fexpr.funcresulttype = result_type;
fexpr.funcretset = func_form->proretset;
- fexpr.funcformat = COERCE_DONTCARE;
+ fexpr.funcformat = COERCE_EXPLICIT_CALL;
fexpr.funccollid = result_collid;
fexpr.inputcollid = input_collid;
fexpr.args = args;
@@ -3959,7 +3959,7 @@ evaluate_function(Oid funcid, Oid result_type, int32 result_typmod,
newexpr->funcid = funcid;
newexpr->funcresulttype = result_type;
newexpr->funcretset = false;
- newexpr->funcformat = COERCE_DONTCARE; /* doesn't matter */
+ newexpr->funcformat = COERCE_EXPLICIT_CALL; /* doesn't matter */
newexpr->funccollid = result_collid; /* doesn't matter */
newexpr->inputcollid = input_collid;
newexpr->args = args;
@@ -4089,7 +4089,7 @@ inline_function(Oid funcid, Oid result_type, Oid result_collid,
fexpr->funcid = funcid;
fexpr->funcresulttype = result_type;
fexpr->funcretset = false;
- fexpr->funcformat = COERCE_DONTCARE; /* doesn't matter */
+ fexpr->funcformat = COERCE_EXPLICIT_CALL; /* doesn't matter */
fexpr->funccollid = result_collid; /* doesn't matter */
fexpr->inputcollid = input_collid;
fexpr->args = args;
diff --git a/src/backend/parser/parse_agg.c b/src/backend/parser/parse_agg.c
index d1d835b8007..b75b2d930d0 100644
--- a/src/backend/parser/parse_agg.c
+++ b/src/backend/parser/parse_agg.c
@@ -1001,7 +1001,7 @@ build_aggregate_fnexprs(Oid *agg_input_types,
args,
InvalidOid,
agg_input_collation,
- COERCE_DONTCARE);
+ COERCE_EXPLICIT_CALL);
/* see if we have a final function */
if (!OidIsValid(finalfn_oid))
@@ -1027,5 +1027,5 @@ build_aggregate_fnexprs(Oid *agg_input_types,
args,
InvalidOid,
agg_input_collation,
- COERCE_DONTCARE);
+ COERCE_EXPLICIT_CALL);
}
diff --git a/src/include/nodes/primnodes.h b/src/include/nodes/primnodes.h
index daabcb6cf9a..a233fce003e 100644
--- a/src/include/nodes/primnodes.h
+++ b/src/include/nodes/primnodes.h
@@ -316,7 +316,7 @@ typedef enum CoercionContext
} CoercionContext;
/*
- * CoercionForm - information showing how to display a function-call node
+ * CoercionForm - how to display a node that could have come from a cast
*
* NB: equal() ignores CoercionForm fields, therefore this *must* not carry
* any semantically significant information. We need that behavior so that
@@ -328,8 +328,7 @@ typedef enum CoercionForm
{
COERCE_EXPLICIT_CALL, /* display as a function call */
COERCE_EXPLICIT_CAST, /* display as an explicit cast */
- COERCE_IMPLICIT_CAST, /* implicit cast, so hide it */
- COERCE_DONTCARE /* special case for planner */
+ COERCE_IMPLICIT_CAST /* implicit cast, so hide it */
} CoercionForm;
/*