postgres.git / summary / log / commit / refs

commit    92b7902deb3155f6975f33e8b6c8be4d9d066172
Author:   Tom Lane <tgl@sss.pgh.pa.us>
Date:     Mon Mar 21 15:59:49 2016 +0000

    Clean up some Coverity complaints about commit 0bf3ae88af330496.
    
    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.


contrib/postgres_fdw/deparse.c | 4 ++++ contrib/postgres_fdw/postgres_fdw.c | 9 +++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/contrib/postgres_fdw/deparse.c b/contrib/postgres_fdw/deparse.c index d1c82597ec3..bdc410d1a35 100644 --- a/contrib/postgres_fdw/deparse.c +++ b/contrib/postgres_fdw/deparse.c @@ -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; diff --git a/contrib/postgres_fdw/postgres_fdw.c b/contrib/postgres_fdw/postgres_fdw.c index d6db8340129..9600e3b3c45 100644 --- a/contrib/postgres_fdw/postgres_fdw.c +++ b/contrib/postgres_fdw/postgres_fdw.c @@ -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); [parent: ae507d922298]