On Mon, Nov 6, 2017 at 7:05 PM, Robert Haas <robertmh...@gmail.com> wrote: > On Mon, Nov 6, 2017 at 11:20 AM, Amit Kapila <amit.kapil...@gmail.com> wrote: >> On Mon, Nov 6, 2017 at 3:51 AM, Robert Haas <robertmh...@gmail.com> wrote: >>> This looks like it's on the right track to me. I hope Tom will look >>> into it, but if he doesn't I may try to get it committed myself. >>> >>> - if (rel->reloptkind == RELOPT_BASEREL) >>> - generate_gather_paths(root, rel); >>> + if (rel->reloptkind == RELOPT_BASEREL && >>> + root->simple_rel_array_size > 2 && >>> + !root->append_rel_list) >>> >>> This test doesn't look correct to me. Actually, it doesn't look >>> anywhere close to correct to me. So, one of us is very confused... >>> not sure whether it's you or me. >>> >> It is quite possible that I haven't got it right, but it shouldn't be >> completely bogus as it stands the regression tests and some manual >> verification. Can you explain what is your concern about this test? > > Well, I suppose that test will fire for a baserel when the total > number of baserels is at least 3 and there's no inheritance involved. > But if there are 2 baserels, we're still not the topmost scan/join > target. >
No, if there are 2 baserels, then simple_rel_array_size will be 3. The simple_rel_array_size is always the "number of relations" plus "one". See setup_simple_rel_arrays. > Also, even if inheritance is used, we might still be the > topmost scan/join target. > Sure, but in that case, it won't generate the gather path here (due to this part of check "!root->append_rel_list"). I am not sure whether I have understood the second part of your question, so if my answer appears inadequate, then can you provide more details on what you are concerned about? -- With Regards, Amit Kapila. EnterpriseDB: http://www.enterprisedb.com -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers