Clean up some Coverity complaints about commit 0bf3ae88af.

The two get_tle_by_resno() calls introduced by this commit lacked any
check for a NULL return, unlike any other calls of that function anywhere
in our tree.  Coverity quite properly complained about it.  Also fix a
misindented line in process_query_params(), which Coverity also complained
about on the grounds that the bad indentation suggested possible programmer
misinterpretation.
This commit is contained in:
Tom Lane 2016-03-21 11:59:49 -04:00
parent ae507d9222
commit 92b7902deb
2 changed files with 11 additions and 2 deletions

View File

@ -1356,6 +1356,10 @@ deparseDirectUpdateSql(StringInfo buf, PlannerInfo *root,
int attnum = lfirst_int(lc);
TargetEntry *tle = get_tle_by_resno(targetlist, attnum);
if (!tle)
elog(ERROR, "attribute number %d not found in UPDATE targetlist",
attnum);
if (!first)
appendStringInfoString(buf, ", ");
first = false;

View File

@ -2042,7 +2042,7 @@ postgresRecheckForeignScan(ForeignScanState *node, TupleTableSlot *slot)
* postgresPlanDirectModify
* Consider a direct foreign table modification
*
* Decide whether it is safe to modify a foreign table directly, and if so,
* Decide whether it is safe to modify a foreign table directly, and if so,
* rewrite subplan accordingly.
*/
static bool
@ -2119,6 +2119,10 @@ postgresPlanDirectModify(PlannerInfo *root,
tle = get_tle_by_resno(subplan->targetlist, attno);
if (!tle)
elog(ERROR, "attribute number %d not found in subplan targetlist",
attno);
if (!is_foreign_expr(root, baserel, (Expr *) tle->expr))
return false;
@ -3305,7 +3309,8 @@ process_query_params(ExprContext *econtext,
param_values[i] = NULL;
else
param_values[i] = OutputFunctionCall(&param_flinfo[i], expr_value);
i++;
i++;
}
reset_transmission_modes(nestlevel);