summaryrefslogtreecommitdiff
path: root/src/backend/rewrite
diff options
context:
space:
mode:
authorPeter Eisentraut2017-03-09 20:18:59 +0000
committerPeter Eisentraut2017-03-29 01:59:23 +0000
commit4cb824699e12c39fad97fb3d9085ced0d14c067c (patch)
tree9a835d8efb7739e6436d3fc24b4b5a290b95df7d /src/backend/rewrite
parent66b764341ba12206f01e2600713bdc3abdb070b3 (diff)
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/rewrite')
-rw-r--r--src/backend/rewrite/rewriteHandler.c8
-rw-r--r--src/backend/rewrite/rewriteManip.c8
2 files changed, 8 insertions, 8 deletions
diff --git a/src/backend/rewrite/rewriteHandler.c b/src/backend/rewrite/rewriteHandler.c
index 354e5d04620..424be0c7684 100644
--- a/src/backend/rewrite/rewriteHandler.c
+++ b/src/backend/rewrite/rewriteHandler.c
@@ -349,8 +349,8 @@ rewriteRuleAction(Query *parsetree,
* Make modifiable copies of rule action and qual (what we're passed are
* the stored versions in the relcache; don't touch 'em!).
*/
- rule_action = (Query *) copyObject(rule_action);
- rule_qual = (Node *) copyObject(rule_qual);
+ rule_action = copyObject(rule_action);
+ rule_qual = copyObject(rule_qual);
/*
* Acquire necessary locks and fix any deleted JOIN RTE entries.
@@ -408,7 +408,7 @@ rewriteRuleAction(Query *parsetree,
* that rule action's rtable is separate and shares no substructure with
* the main rtable. Hence do a deep copy here.
*/
- sub_action->rtable = list_concat((List *) copyObject(parsetree->rtable),
+ sub_action->rtable = list_concat(copyObject(parsetree->rtable),
sub_action->rtable);
/*
@@ -1897,7 +1897,7 @@ CopyAndAddInvertedQual(Query *parsetree,
CmdType event)
{
/* Don't scribble on the passed qual (it's in the relcache!) */
- Node *new_qual = (Node *) copyObject(rule_qual);
+ Node *new_qual = copyObject(rule_qual);
acquireLocksOnSubLinks_context context;
context.for_execute = true;
diff --git a/src/backend/rewrite/rewriteManip.c b/src/backend/rewrite/rewriteManip.c
index b23a3b7046e..da02cfd25ca 100644
--- a/src/backend/rewrite/rewriteManip.c
+++ b/src/backend/rewrite/rewriteManip.c
@@ -1412,11 +1412,11 @@ ReplaceVarsFromTargetList_callback(Var *var,
else
{
/* Make a copy of the tlist item to return */
- Node *newnode = copyObject(tle->expr);
+ Expr *newnode = copyObject(tle->expr);
/* Must adjust varlevelsup if tlist item is from higher query */
if (var->varlevelsup > 0)
- IncrementVarSublevelsUp(newnode, var->varlevelsup, 0);
+ IncrementVarSublevelsUp((Node *) newnode, var->varlevelsup, 0);
/*
* Check to see if the tlist item contains a PARAM_MULTIEXPR Param,
@@ -1428,12 +1428,12 @@ ReplaceVarsFromTargetList_callback(Var *var,
* create semantic oddities that users of rules would probably prefer
* not to cope with. So treat it as an unimplemented feature.
*/
- if (contains_multiexpr_param(newnode, NULL))
+ if (contains_multiexpr_param((Node *) newnode, NULL))
ereport(ERROR,
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
errmsg("NEW variables in ON UPDATE rules cannot reference columns that are part of a multiple assignment in the subject UPDATE command")));
- return newnode;
+ return (Node *) newnode;
}
}