Re: Adding support for Default partition in partitioning
Jeevan Ladhe <jeevan.ladhe@enterprisedb.com>
From: Jeevan Ladhe <jeevan.ladhe@enterprisedb.com>
To: Amit Langote <Langote_Amit_f8@lab.ntt.co.jp>
Cc: PostgreSQL Developers <pgsql-hackers@postgresql.org>,
Rahila Syed <rahilasyed90@gmail.com>, Beena Emerson <memissemerson@gmail.com>, Rajkumar Raghuwanshi <rajkumar.raghuwanshi@enterprisedb.com>, Ashutosh Bapat <ashutosh.bapat@enterprisedb.com>,
Robert Haas <robertmhaas@gmail.com>
Date: 2017-05-31T01:28:35Z
Lists: pgsql-hackers
Thanks Amit for your comments. On 31-May-2017 6:03 AM, "Amit Langote" <Langote_Amit_f8@lab.ntt.co.jp> wrote: Hi Jeevan, On 2017/05/30 16:38, Jeevan Ladhe wrote: > I have rebased the patch on the latest commit. > PFA. Was looking at the patch and felt that the parse node representation of default partition bound could be slightly different. Can you explain the motivation behind implementing it without adding a new member to the PartitionBoundSpec struct? I would suggest instead adding a bool named is_default and be done with it. It will help get rid of the public isDefaultPartitionBound() in the proposed patch whose interface isn't quite clear and instead simply check if (spec->is_default) in places where it's called by passing it (Node *) linitial(spec->listdatums). I thought of reusing the existing members of PartitionBoundSpec, but I agree that having a bool could simplify the code. Will do the receptive change. Further looking into the patch, I found a tiny problem in check_default_allows_bound(). If the default partition that will be scanned by it is a foreign table or a partitioned table with a foreign leaf partition, you will get a failure like: -- default partition is a foreign table alter table p attach partition fp default; -- adding a new partition will try to scan fp above alter table p attach partition p12 for values in (1, 2); ERROR: could not open file "base/13158/16456": No such file or directory I think the foreign tables should be ignored here to avoid the error. The fact that foreign default partition may contain data that satisfies the new partition's constraint is something we cannot do much about. Also, see the note in ATTACH PARTITION description regarding foreign tables [1] and the discussion at [2]. Will look into this. Regards, Jeevan Ladhe
Commits
-
Allow a partitioned table to have a default partition.
- 6f6b99d1335b 11.0 landed
-
Adjust min/max values when changing sequence type
- 60a0b2ec8943 10.0 cited
-
BRIN auto-summarization
- 7526e10224f0 10.0 cited