Re: Error trying to create a functional index.

From: CoL <col(at)mportal(dot)hu>
To: pgsql-sql(at)postgresql(dot)org
Subject: Re: Error trying to create a functional index.
Date: 2002-01-07 11:01:05
Message-ID: 3C397FF1.20706@mportal.hu
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

Steve: of course you can make functional indices:

So why this not workin???? (not workin for me 2 too, pg 7.1.3)
"CREATE INDEX eventdateindex ON event (date_trunc('day', eventstamp));"

----------------
7.5. Functional Indices
For a functional index, an index is defined on the result of a function
applied to one or more columns of a single table. Functional indices can
be used to obtain fast access to data based on the result of function calls.
For example, a common way to do case-insensitive comparisons is to use
the lower:
SELECT * FROM test1 WHERE lower(col1) = 'value';
In order for that query to be able to use an index, it has to be defined
on the result of the lower(column) operation:
CREATE INDEX test1_lower_col1_idx ON test1 (lower(col1));
The function in the index definition can take more than one argument,
but they must be table columns, not constants. Functional indices are
always single-column (namely, the function result) even if the function
uses more than one input field; there cannot be multi-column indices
that contain function calls.
Tip: The restrictions mentioned in the previous paragraph can easily be
worked around by defining custom functions to use in the index
definition that call the desired function(s) internally.
----------------

Steve Brett wrote:

> i think you need to do this
>
> CREATE INDEX eventdateindex ON event (eventstamp);
>
> as i'm 99% certain that you can only create an index on a 'whole' attribute
> and not the result of a function.
>
> Steve
>
> "Neal Lindsay" <chox65(at)yahoo(dot)com> wrote in message
> news:b01eaea0(dot)0201030725(dot)51661db3(at)posting(dot)google(dot)com(dot)(dot)(dot)
>
>>I have a table called "event":
>> Attribute | Type |
>>Modifier
>>-------------+--------------------------+---------------------------------
>>
> ----------------------
>
>> eventid | integer | not null default
>>nextval('"event_eventid_seq"'::text)
>> femployeeid | integer | not null
>> ftaskid | integer | not null
>> flocaleid | integer | not null
>> eventstamp | timestamp with time zone | not null
>> duration | smallint | not null
>>Index: event_pkey
>>
>>When I try to create an index:
>>CREATE INDEX eventdateindex ON event (date_trunc('day', eventstamp));
>>
>>It gives me this error:
>>ERROR: parser: parse error at or near "'"
>>
>>I can "SELECT date_trunc('day', eventstamp) FROM event;", but not
>>create an index on that function. What am I doing wrong?
>>
>>Thanks
>>-Neal Lindsay
>>
>
>

Responses

Browse pgsql-sql by date

  From Date Subject
Next Message steve boyle 2002-01-07 12:58:10 Re: create table with multiple unique fields
Previous Message Darryl M. Wolski 2002-01-07 05:37:56 nested inner join help