summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Haas2016-06-14 12:55:50 +0000
committerRobert Haas2016-06-14 13:00:12 +0000
commit332fdbef20b5b5f2588447793dbcc3bb9b88eb51 (patch)
treed8a4b1e1ae233b367965e77d3f6edb4952cf187c
parent783cb6e48b29a34b2cefc401a72d4cc86fa6b2a6 (diff)
postgres_fdw: Promote an Assert() to elog().
Andreas Seltenreich reports that it is possible for a PlaceHolderVar to creep into this tlist, and I fear that even after that's fixed we might have other, similar bugs in this area either now or in the future. There's a lot of action-at-a-distance here, because the validity of this assertion depends on core planner behavior; so, let's use elog() to make sure we catch this even in non-assert builds, rather than just crashing.
-rw-r--r--contrib/postgres_fdw/deparse.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/contrib/postgres_fdw/deparse.c b/contrib/postgres_fdw/deparse.c
index 7d2512cf04..f38da5d0dc 100644
--- a/contrib/postgres_fdw/deparse.c
+++ b/contrib/postgres_fdw/deparse.c
@@ -1112,8 +1112,10 @@ deparseExplicitTargetList(List *tlist, List **retrieved_attrs,
/* Extract expression if TargetEntry node */
Assert(IsA(tle, TargetEntry));
var = (Var *) tle->expr;
+
/* We expect only Var nodes here */
- Assert(IsA(var, Var));
+ if (!IsA(var, Var))
+ elog(ERROR, "non-Var not expected in target list");
if (i > 0)
appendStringInfoString(buf, ", ");