On Thu, Nov 24, 2016 at 11:34 AM, Amit Langote <langote_amit...@lab.ntt.co.jp> wrote: > > 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);
Oh, sorry for not noticing it. You are right. Why do we need "with option" there? Shouldn't user be able to specify just "a primary key"; it's not really an "option", it's a constraint. > >> 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 > > -- Best Wishes, Ashutosh Bapat EnterpriseDB Corporation The Postgres Database Company -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers