From 5dfca15a5db7cabd9145c76715cb9aea396ec83f Mon Sep 17 00:00:00 2001 From: Tomas Vondra Date: Sun, 23 Oct 2016 17:35:05 +0200 Subject: [PATCH 1/9] teach pull_(varno|varattno)_walker about RestrictInfo otherwise pull_varnos fails when processing OR clauses --- src/backend/optimizer/util/var.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/backend/optimizer/util/var.c b/src/backend/optimizer/util/var.c index cf326ae..7056bcd 100644 --- a/src/backend/optimizer/util/var.c +++ b/src/backend/optimizer/util/var.c @@ -196,6 +196,13 @@ pull_varnos_walker(Node *node, pull_varnos_context *context) context->sublevels_up--; return result; } + if (IsA(node, RestrictInfo)) + { + RestrictInfo *rinfo = (RestrictInfo*)node; + context->varnos = bms_add_members(context->varnos, + rinfo->clause_relids); + return false; + } return expression_tree_walker(node, pull_varnos_walker, (void *) context); } @@ -244,6 +251,15 @@ pull_varattnos_walker(Node *node, pull_varattnos_context *context) return false; } + if (IsA(node, RestrictInfo)) + { + RestrictInfo *rinfo = (RestrictInfo *)node; + + return expression_tree_walker((Node*)rinfo->clause, + pull_varattnos_walker, + (void*) context); + } + /* Should not find an unplanned subquery */ Assert(!IsA(node, Query)); -- 2.5.5