Re: Declarative partitioning - another take
От | Amit Langote |
---|---|
Тема | Re: Declarative partitioning - another take |
Дата | |
Msg-id | 306c85e9-c702-3742-eeff-9b7a40498afc@lab.ntt.co.jp обсуждение исходный текст |
Ответ на | Re: Declarative partitioning - another take (Ashutosh Bapat <ashutosh.bapat@enterprisedb.com>) |
Ответы |
Re: Declarative partitioning - another take
|
Список | pgsql-hackers |
Hi Ashutosh, On 2016/11/24 14:35, Ashutosh Bapat wrote: > I am trying to create a partitioned table with primary keys on the > partitions. Here's the corresponding syntax as per documentation > CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] TABLE [ > IF NOT EXISTS ] table_name > PARTITION OF parent_table [ ( > { column_name WITH OPTIONS [ column_constraint [ ... ] ] > | table_constraint } > [, ... ] > ) ] partition_bound_spec > > IIUC, it should allow "create table t1_p1 partition of t1 (a primary > key) ...", (a primary key) is nothing but "column_name > column_constraint", but here's what happens > create table t1_p1 partition of t1 (a primary key) for values from (0) to (100); > ERROR: syntax error at or near "primary" > LINE 1: create table t1_p1 partition of t1 (a primary key) for value... You have to specify column constraints using the keywords WITH OPTIONS, like below: create table p1 partition of p ( a with options primary key ) for values in (1); > The same syntax also suggests using table_constraints but that too doesn't work > create table t1_p1 partition of t1 (primary key (a) ) for values > from (0) to (100); > ERROR: inherited relation "t1" is not a table or foreign table > > of course t1 is a table, what it isn't? It's a bug. Forgot to consider RELKIND_PARTITIONED_TABLE to an if block in the code that checks inheritance parent relation's relkind when creating an index constraint (primary key) on a child table. Will fix, thanks for catching it. Thanks, Amit
В списке pgsql-hackers по дате отправления: