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 -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers