From a2e26a6f888a91da7efd7f59ca5d9b9383f2edd1 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Tue, 28 Sep 2010 16:13:09 -0400 Subject: [PATCH] Fix incorrect usage of non-strict OR joinclauses in appendrel indexscans. By chance I happened to notice that bug #5076 was still broken in the 8.3 branch, though it worked everywhere else. The reason is that 8.3's version of adjust_appendrel_attrs_mutator neglected to adjust RestrictInfo.nullable_relids. This was an oversight in my patch of 2009-04-16, which I apparently corrected in the later branches on 2009-08-13 without realizing that it affected the 8.3 branch as well. By the time the bug report was filed, it was not reproducible in 8.4. I don't recall if I wrote it off as already fixed, or it just fell through the cracks; but anyway it's been a live bug in 8.3 for a year. --- src/backend/optimizer/prep/prepunion.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/backend/optimizer/prep/prepunion.c b/src/backend/optimizer/prep/prepunion.c index 2779da74d0..687677e960 100644 --- a/src/backend/optimizer/prep/prepunion.c +++ b/src/backend/optimizer/prep/prepunion.c @@ -1207,6 +1207,9 @@ adjust_appendrel_attrs_mutator(Node *node, AppendRelInfo *context) newinfo->required_relids = adjust_relid_set(oldinfo->required_relids, context->parent_relid, context->child_relid); + newinfo->nullable_relids = adjust_relid_set(oldinfo->nullable_relids, + context->parent_relid, + context->child_relid); newinfo->left_relids = adjust_relid_set(oldinfo->left_relids, context->parent_relid, context->child_relid); -- 2.50.1