Thread: Create index on array element?
I guess one cannot create an index on an element of an array? test=> create table test ( ordinal int[] ); CREATE TABLE test=> create unique index x1 on test ( ordinal[1] ); ERROR: syntax error at or near ")" at character 45 LINE 1: create unique index x1 on test ( ordinal[1] ); ^ Correct, or is my syntax wrong?
On Wed, 2006-11-29 at 14:39 -0600, Dave Bodenstab wrote: > I guess one cannot create an index on an element of an array? > > test=> create table test ( ordinal int[] ); > CREATE TABLE > test=> create unique index x1 on test ( ordinal[1] ); > ERROR: syntax error at or near ")" at character 45 > LINE 1: create unique index x1 on test ( ordinal[1] ); > ^ You need more parenthesis. test=> create unique index x1 on test ( ( ordinal[1] ) ); The reason is because "ordinal[1]" is an expression, similar to "ordinal [1] + 5" which would also need parenthesis. Hope this helps, Jeff Davis
Jeff Davis wrote: > On Wed, 2006-11-29 at 14:39 -0600, Dave Bodenstab wrote: > >>I guess one cannot create an index on an element of an array? >> >>test=> create table test ( ordinal int[] ); >>CREATE TABLE >>test=> create unique index x1 on test ( ordinal[1] ); >>ERROR: syntax error at or near ")" at character 45 >>LINE 1: create unique index x1 on test ( ordinal[1] ); >> ^ > > > You need more parenthesis. > > test=> create unique index x1 on test ( ( ordinal[1] ) ); > > The reason is because "ordinal[1]" is an expression, similar to "ordinal > [1] + 5" which would also need parenthesis. > > Hope this helps, > Jeff Davis Excellent! I never considered that "ordinal[1]" was an expression. Thanks.