Thread: RES: [GENERAL] ERROR: DefineIndex: index function must be marked iscachable

RES: [GENERAL] ERROR: DefineIndex: index function must be marked iscachable

From
Elielson Fontanezi
Date:
Oh sorry!

        Linux netlab142.prodam 2.4.8-26mdk #1 Sun Sep 23 17:06:39 CEST 2001
i686 unknown
        pg_ctl (PostgreSQL) 7.2.1

-----Mensagem original-----
De: Stephan Szabo [mailto:sszabo@megazone.bigpanda.com]
Enviada em: sexta-feira, 25 de julho de 2003 16:25
Para: Elielson Fontanezi
Cc: pgsql-general; pgsql-sql
Assunto: Re: [GENERAL] [SQL] ERROR: DefineIndex: index function must be
marked iscachable


On Fri, 25 Jul 2003, Stephan Szabo wrote:

> On Fri, 25 Jul 2003, Elielson Fontanezi wrote:
>
> >     What can I do in this case?
> >     I could not found anything about iscachable.
>
>
> >
> > postgres$ cat in.sql
> > create index bt_proposta_f01 on proposta
> > using btree (func_cod_secretaria(nr_proponente));
> >
> > postgres$ psql -d escola -f in.sql
> > psql:in.sql:2: ERROR:  DefineIndex: index function must be marked
iscachable
>
> Check the create function reference page, I believe you'd need to add WITH
> (iscachable) to the end of the function creation.
>
> iscachable means that the function always returnes the same result when
> given the same arguments.  It's a prereq to using the function in an
> index. If your function doesn't meet those requirements (for example if it
> does a query on a table) making an index on that function is a bad idea.

Almost forgot.  In recent versions you'd specify that the function was
IMMUTABLE and I believe the error message would use such as well.  What
version are you using (it might be worth considering an upgrade to 7.4
when it comes out)