From: | amul sul <sulamul(at)gmail(dot)com> |
---|---|
To: | Ashutosh Bapat <ashutosh(dot)bapat(dot)oss(at)gmail(dot)com> |
Cc: | Rajkumar Raghuwanshi <rajkumar(dot)raghuwanshi(at)enterprisedb(dot)com>, Etsuro Fujita <fujita(dot)etsuro(at)lab(dot)ntt(dot)co(dot)jp>, Dmitry Dolgov <9erthalion6(at)gmail(dot)com>, Thomas Munro <thomas(dot)munro(at)enterprisedb(dot)com>, Amit Langote <Langote_Amit_f8(at)lab(dot)ntt(dot)co(dot)jp>, Antonin Houska <ah(at)cybertec(dot)at>, Robert Haas <robertmhaas(at)gmail(dot)com>, PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: [HACKERS] advanced partition matching algorithm for partition-wise join |
Date: | 2019-04-24 11:26:06 |
Message-ID: | CAAJ_b94cHo4GE45ysV73A+gdoLnMnTivzkMeKX3U3=RoDyFoDQ@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Attached version is rebase atop of the latest master head(fdc7efcc30), also
incorporates the Ashutosh's suggestion, thanks.
Regards,
Amul
On Mon, Mar 11, 2019 at 10:14 PM Ashutosh Bapat <
ashutosh(dot)bapat(dot)oss(at)gmail(dot)com> wrote:
>
>
> On Mon, Mar 11, 2019 at 10:40 AM amul sul <sulamul(at)gmail(dot)com> wrote:
>
>>
>> All the places from where this handle_missing_partition() get called
>> have the following code to decide the value for missing_side_outer/_inner
>> which
>> I yet to understand. Do you think this has some flaw?
>>
>> /*
>> * For a FULL join, inner relation acts as both OUTER and INNER
>> * relation. For LEFT and ANTI join the inner relation acts as
>> * INNER relation. For INNER and SEMI join OUTER and INNER
>> * differentiation is immaterial.
>> */
>> missing_side_inner = (jointype == JOIN_FULL ||
>> jointype == JOIN_LEFT ||
>> jointype == JOIN_ANTI);
>> missing_side_outer = (jointype == JOIN_FULL);
>>
>
> I was wrong, sorry. The comment says it all.
>
>
>>
>>
>>
>>> argument value which fails to set merged_index.
>>>>
>>>> In the attached patch, I tried to fix this case by setting merged_index
>>>> explicitly which fixes the reported crash.
>>>>
>>>
>>> I expect handle_missing_partition() to set the merged_index always. In
>>> your patches, I don't see that function in your patches is setting it
>>> explicitly. If we are setting merged_index explicitly somewhere else, other
>>> places may miss that explicit assignment. So it's better to move it inside
>>> this function.
>>>
>>>
>>
>> Ok, that can be fixed.
>>
>> Similarly, I think merge_null_partitions should set null_index instead of
>> asserting when null partitions missing from both the side, make sense?
>>
>
> I think not. null_index, once set shouldn't change and hence does not
> change with each pair of partitions being matched. So, it makes sense to
> make sure that null_index remains invalid if none of the tables have null
> partition.
>
> --
> Best Wishes,
> Ashutosh Bapat
>
Attachment | Content-Type | Size |
---|---|---|
0002-Partition-wise-join-for-1-1-1-0-0-1-partition-matchi-v21.patch | application/octet-stream | 70.3 KB |
0001-Hash-partition-bound-equality-refactoring-v21.patch | application/octet-stream | 5.1 KB |
0003-Tests-for-0-1-1-1-and-1-0-partition-matching-v21.patch | application/octet-stream | 213.4 KB |
From | Date | Subject | |
---|---|---|---|
Next Message | Etsuro Fujita | 2019-04-24 11:54:26 | Re: pgsql: Allow insert and update tuple routing and COPY for foreign table |
Previous Message | Adrien NAYRAT | 2019-04-24 11:08:53 | Re: Optimizer items in the release notes |