Re: pgsql: Clarify use of temporary tables within partition trees - Mailing list pgsql-hackers

From Amit Langote
Subject Re: pgsql: Clarify use of temporary tables within partition trees
Date
Msg-id 5db5fe6e-4a73-6a24-09e4-060b9f132ea9@lab.ntt.co.jp
Whole thread Raw
In response to Re: pgsql: Clarify use of temporary tables within partition trees  (David Rowley <david.rowley@2ndquadrant.com>)
Responses Re: pgsql: Clarify use of temporary tables within partition trees  (Michael Paquier <michael@paquier.xyz>)
Re: pgsql: Clarify use of temporary tables within partition trees  (Amit Langote <Langote_Amit_f8@lab.ntt.co.jp>)
List pgsql-hackers
On 2018/07/03 15:16, David Rowley wrote:
> On 3 July 2018 at 18:11, Michael Paquier <michael@paquier.xyz> wrote:
>> On Tue, Jul 03, 2018 at 06:00:46PM +1200, David Rowley wrote:
>>> I think it should be backpatched to v11 and v10. Your original commit
>>> went there too. I don't see any reason to do any different here than
>>> what you did with the original commit.
>>
>> expand_partitioned_rtentry is new as of v11.  Or you mean to tweak
>> expand_inherited_rtentry() perhaps?  I am not sure that it is worth it
>> as the code has already diverged between 10 and 11.
> 
> Oh right. I'd forgotten that changed in v11. I think the v10 code is
> fine as is then.

Sorry for jumping in late here.  I have a comment on the patch.

+    /* if there are no partitions then treat this as non-inheritance case. */
+    if (partdesc->nparts == 0)
+    {
+        parentrte->inh = false;
+        return;
+    }
+

Why is this not near the beginning of expand_partitioned_rtentry()?

Also, ISTM, this code would be unreachable because
expand_inherited_rtentry would not call here if the above if statement is
true, no?

I see the following two blocks in expand_inherited_rtentry before one gets
to the call to expand_partitioned_rtentry:

    if (!has_subclass(parentOID))
    {
        /* Clear flag before returning */
        rte->inh = false;
        return;
    }

and

    if (list_length(inhOIDs) < 2)
    {
        /* Clear flag before returning */
        rte->inh = false;
        return;
    }

Thanks,
Amit



pgsql-hackers by date:

Previous
From: Arseny Sher
Date:
Subject: Re: Possible bug in logical replication.
Next
From: Michael Paquier
Date:
Subject: Re: pgsql: Clarify use of temporary tables within partition trees