Hello Nitin, On Thu, May 6, 2021 at 11:03 PM Nitin Jadhav <nitinjadhavpostg...@gmail.com> wrote: > > Hi, > > While reviewing one of the 'Table partitioning' related patches, I found that > Postgres does not support multiple column based LIST partitioning. Based on > this understanding, I have started working on this feature. I also feel that > 'Multi-Column List Partitioning' can be benefited to the Postgres users in > future.
Yes, it would be nice to have this. Thanks for picking this up. > I am attaching the WIP patch for this feature here. It supports 'Multi-Column > List Partitioning', however some tasks are still pending. I would like to > know your thoughts about this, So that I can continue the work with > improvising the current patch. > > Following things are handled in the patch. > 1. Syntax > > CREATE TABLE table_name (attrs) PARTITION BY LIST(list_of_columns); > > Earlier there was no provision to mention multiple columns as part of the > 'list_of_columns' clause. Now we can mention the list of columns separated by > comma. > > CREATE TABLE table_name_p1 PARTITION OF table_name FOR VALUES IN > list_of_values. > > Whereas list_of_columns can be > a. (value [,...]) > b. (value [,...]) [,...] > > I would like to list a few examples here for better understanding. > Ex-1: > CREATE TABLE t1(a int) PARTITION BY LIST(a); > CREATE TABLE t1_1 PARTITION OF t1 FOR VALUES IN (1, 2, 10, 5, 7); > > Ex-2: > CREATE TABLE t2(a int, b int) PARTITION BY LIST(a,b); > CREATE TABLE t2_1 PARTITION OF t2 FOR VALUES IN (1, 2), (1, 5), (2, 2),(2, > 10); Hmm, why not have parentheses around these lists, that is: ( (list_of_values) [, ...] ) So your example would look like this: CREATE TABLE t2_1 PARTITION OF t2 FOR VALUES IN ((1, 2), (1, 5), (2, 2), (2, 10)); IMO, it is not such a bad syntax from a user's PoV. It's not hard to understand from this syntax that the partition constraint is something like (a, b) = (1, 2) OR (a, b) = (1, 5) OR ..., where the = performs row-wise comparison. I will now take a look at the patch itself. -- Amit Langote EDB: http://www.enterprisedb.com