summaryrefslogtreecommitdiff
path: root/src/backend/optimizer/prep
diff options
context:
space:
mode:
authorPeter Eisentraut <peter_e@gmx.net>2017-03-09 15:18:59 -0500
committerPeter Eisentraut <peter_e@gmx.net>2017-03-28 21:59:23 -0400
commit4cb824699e12c39fad97fb3d9085ced0d14c067c (patch)
tree9a835d8efb7739e6436d3fc24b4b5a290b95df7d /src/backend/optimizer/prep
parent66b764341ba12206f01e2600713bdc3abdb070b3 (diff)
downloadpostgresql-4cb824699e12c39fad97fb3d9085ced0d14c067c.tar.gz
Cast result of copyObject() to correct type
copyObject() is declared to return void *, which allows easily assigning the result independent of the input, but it loses all type checking. If the compiler supports typeof or something similar, cast the result to the input type. This creates a greater amount of type safety. In some cases, where the result is assigned to a generic type such as Node * or Expr *, new casts are now necessary, but in general casts are now unnecessary in the normal case and indicate that something unusual is happening. Reviewed-by: Mark Dilger <hornschnorter@gmail.com>
Diffstat (limited to 'src/backend/optimizer/prep')
-rw-r--r--src/backend/optimizer/prep/prepjointree.c4
-rw-r--r--src/backend/optimizer/prep/preptlist.c2
-rw-r--r--src/backend/optimizer/prep/prepunion.c4
3 files changed, 5 insertions, 5 deletions
diff --git a/src/backend/optimizer/prep/prepjointree.c b/src/backend/optimizer/prep/prepjointree.c
index 048815d7b0..348c6b791f 100644
--- a/src/backend/optimizer/prep/prepjointree.c
+++ b/src/backend/optimizer/prep/prepjointree.c
@@ -1592,7 +1592,7 @@ pull_up_simple_values(PlannerInfo *root, Node *jtnode, RangeTblEntry *rte)
* Need a modifiable copy of the VALUES list to hack on, just in case it's
* multiply referenced.
*/
- values_list = (List *) copyObject(linitial(rte->values_lists));
+ values_list = copyObject(linitial(rte->values_lists));
/*
* The VALUES RTE can't contain any Vars of level zero, let alone any that
@@ -2128,7 +2128,7 @@ pullup_replace_vars_callback(Var *var,
varattno);
/* Make a copy of the tlist item to return */
- newnode = copyObject(tle->expr);
+ newnode = (Node *) copyObject(tle->expr);
/* Insert PlaceHolderVar if needed */
if (rcon->need_phvs)
diff --git a/src/backend/optimizer/prep/preptlist.c b/src/backend/optimizer/prep/preptlist.c
index 824af3f54c..de47153bac 100644
--- a/src/backend/optimizer/prep/preptlist.c
+++ b/src/backend/optimizer/prep/preptlist.c
@@ -180,7 +180,7 @@ preprocess_targetlist(PlannerInfo *root, List *tlist)
var->varno == result_relation)
continue; /* don't need it */
- if (tlist_member((Node *) var, tlist))
+ if (tlist_member((Expr *) var, tlist))
continue; /* already got it */
tle = makeTargetEntry((Expr *) var,
diff --git a/src/backend/optimizer/prep/prepunion.c b/src/backend/optimizer/prep/prepunion.c
index d88738ec7c..e327e66f6b 100644
--- a/src/backend/optimizer/prep/prepunion.c
+++ b/src/backend/optimizer/prep/prepunion.c
@@ -1274,7 +1274,7 @@ generate_append_tlist(List *colTypes, List *colCollations,
static List *
generate_setop_grouplist(SetOperationStmt *op, List *targetlist)
{
- List *grouplist = (List *) copyObject(op->groupClauses);
+ List *grouplist = copyObject(op->groupClauses);
ListCell *lg;
ListCell *lt;
@@ -1879,7 +1879,7 @@ adjust_appendrel_attrs_mutator(Node *node,
rte = rt_fetch(appinfo->parent_relid,
context->root->parse->rtable);
- fields = (List *) copyObject(appinfo->translated_vars);
+ fields = copyObject(appinfo->translated_vars);
rowexpr = makeNode(RowExpr);
rowexpr->args = fields;
rowexpr->row_typeid = var->vartype;