On Thu, Mar 9, 2017 at 11:25 AM, Rushabh Lathia <rushabh.lathia@gmail.com> wrote: > I don't see this failure with the patch. Even I forced the gather merge > in the above query and that just working fine. > > Attaching patch, with the discussed changes.
Committed.
I'm still getting (as of 9c2635e26f6f4e34b3b606c0fc79d0e111953a74):
ERROR: GatherMerge child's targetlist doesn't match GatherMerge
from this query:
EXPLAIN ANALYSE SELECT
em.entity_id
FROM origo_email_delivery del JOIN origo_email_message em ON (del.message_id = em.entity_id)
WHERE 1 = 1
AND del.owner_id = 3
AND ( del.from_entity_id = 279519
OR
del.from_entity_id = 3 AND em.entity_id IN ( SELECT
ea_owner.message_id FROM origo_email_address_owner ea_owner WHERE ea_owner.recipient_id = 279519
) )
ORDER BY del.received_timestamp DESC
LIMIT 101 OFFSET 0;
Is this known or shall I provide more info/schema etc?
Please provide the reproducible test if possible.
The execution-plan seems (unsurprisingly) to depend on data-distribution, so is there a way I can force a GatherMerge?
Not directly. GatherMerge cost is mainly depend on parallel_setup_cost,
parallel_tuple_cost and cpu_operator_cost. May be you can force this
by setting this cost low enough. Or another way to force is by disable the
other plans.
What plan you are getting now? You not seeing the below error ?
ERROR: GatherMerge child's targetlist doesn't match GatherMerge