Thread: Create index on array element?

Create index on array element?

From
Dave Bodenstab
Date:
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?


Re: Create index on array element?

From
Jeff Davis
Date:
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


Re: Create index on array element?

From
Dave Bodenstab
Date:
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.