summaryrefslogtreecommitdiff
path: root/src/backend/parser
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/parser
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/parser')
-rw-r--r--src/backend/parser/analyze.c2
-rw-r--r--src/backend/parser/gram.y2
-rw-r--r--src/backend/parser/parse_clause.c2
-rw-r--r--src/backend/parser/parse_expr.c2
-rw-r--r--src/backend/parser/parse_relation.c2
-rw-r--r--src/backend/parser/parse_utilcmd.c6
6 files changed, 8 insertions, 8 deletions
diff --git a/src/backend/parser/analyze.c b/src/backend/parser/analyze.c
index 25699fbc4aa..f6025225be4 100644
--- a/src/backend/parser/analyze.c
+++ b/src/backend/parser/analyze.c
@@ -2548,7 +2548,7 @@ transformCreateTableAsStmt(ParseState *pstate, CreateTableAsStmt *stmt)
* in the IntoClause because that's where intorel_startup() can
* conveniently get it from.
*/
- stmt->into->viewQuery = copyObject(query);
+ stmt->into->viewQuery = (Node *) copyObject(query);
}
/* represent the command as a utility Query */
diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y
index 20865c0ee00..9d53a29ad27 100644
--- a/src/backend/parser/gram.y
+++ b/src/backend/parser/gram.y
@@ -15599,7 +15599,7 @@ TableFuncTypeName(List *columns)
{
FunctionParameter *p = (FunctionParameter *) linitial(columns);
- result = (TypeName *) copyObject(p->argType);
+ result = copyObject(p->argType);
}
else
result = SystemTypeName("record");
diff --git a/src/backend/parser/parse_clause.c b/src/backend/parser/parse_clause.c
index 47ca685b568..4f391d2d411 100644
--- a/src/backend/parser/parse_clause.c
+++ b/src/backend/parser/parse_clause.c
@@ -348,7 +348,7 @@ transformJoinUsingClause(ParseState *pstate,
/* Now create the lvar = rvar join condition */
e = makeSimpleA_Expr(AEXPR_OP, "=",
- copyObject(lvar), copyObject(rvar),
+ (Node *) copyObject(lvar), (Node *) copyObject(rvar),
-1);
/* Prepare to combine into an AND clause, if multiple join columns */
diff --git a/src/backend/parser/parse_expr.c b/src/backend/parser/parse_expr.c
index d3ed073cee2..323be23bca6 100644
--- a/src/backend/parser/parse_expr.c
+++ b/src/backend/parser/parse_expr.c
@@ -1255,7 +1255,7 @@ transformAExprIn(ParseState *pstate, A_Expr *a)
/* ROW() op ROW() is handled specially */
cmp = make_row_comparison_op(pstate,
a->name,
- (List *) copyObject(((RowExpr *) lexpr)->args),
+ copyObject(((RowExpr *) lexpr)->args),
((RowExpr *) rexpr)->args,
a->location);
}
diff --git a/src/backend/parser/parse_relation.c b/src/backend/parser/parse_relation.c
index 2eea258d28d..2c19e0cbf58 100644
--- a/src/backend/parser/parse_relation.c
+++ b/src/backend/parser/parse_relation.c
@@ -1804,7 +1804,7 @@ addRangeTableEntryForJoin(ParseState *pstate,
rte->joinaliasvars = aliasvars;
rte->alias = alias;
- eref = alias ? (Alias *) copyObject(alias) : makeAlias("unnamed_join", NIL);
+ eref = alias ? copyObject(alias) : makeAlias("unnamed_join", NIL);
numaliases = list_length(eref->colnames);
/* fill in any unspecified alias columns */
diff --git a/src/backend/parser/parse_utilcmd.c b/src/backend/parser/parse_utilcmd.c
index 673276a9d3d..1ae43dc25dc 100644
--- a/src/backend/parser/parse_utilcmd.c
+++ b/src/backend/parser/parse_utilcmd.c
@@ -167,7 +167,7 @@ transformCreateStmt(CreateStmt *stmt, const char *queryString)
* We must not scribble on the passed-in CreateStmt, so copy it. (This is
* overkill, but easy.)
*/
- stmt = (CreateStmt *) copyObject(stmt);
+ stmt = copyObject(stmt);
/* Set up pstate */
pstate = make_parsestate(NULL);
@@ -2107,7 +2107,7 @@ transformIndexStmt(Oid relid, IndexStmt *stmt, const char *queryString)
* We must not scribble on the passed-in IndexStmt, so copy it. (This is
* overkill, but easy.)
*/
- stmt = (IndexStmt *) copyObject(stmt);
+ stmt = copyObject(stmt);
/* Set up pstate */
pstate = make_parsestate(NULL);
@@ -2521,7 +2521,7 @@ transformAlterTableStmt(Oid relid, AlterTableStmt *stmt,
* We must not scribble on the passed-in AlterTableStmt, so copy it. (This
* is overkill, but easy.)
*/
- stmt = (AlterTableStmt *) copyObject(stmt);
+ stmt = copyObject(stmt);
/* Caller is responsible for locking the relation */
rel = relation_open(relid, NoLock);