Thread: Functional index definition

Functional index definition

From
Josué Maldonado
Date:
Hello list,

Is there a way to create indexes using functions like these:
substring(prod_no,8,4)
to_char(fkardex,'YYYYMM')
substr(facnum,1,2)

Help says is not possible but I would like to know if someone know an
undocumented/tricky way to get that done.

Thanks in advance

--
Josué Maldonado.



Re: Functional index definition

From
Stephan Szabo
Date:
On Tue, 11 Nov 2003, [ISO-8859-1] Josué Maldonado wrote:

> Hello list,
>
> Is there a way to create indexes using functions like these:
> substring(prod_no,8,4)
> to_char(fkardex,'YYYYMM')
> substr(facnum,1,2)
>
> Help says is not possible but I would like to know if someone know an
> undocumented/tricky way to get that done.

Not directly in 7.3 and earlier.  You have to make a function that wraps
the function you want to call with static arguments like:

create function substring_8_4(text) returns text as
 'select substring($1, 8, 4);' language 'sql' immutable;

In 7.4, the indexes have been approved to allow indexes on expressions
which allow the above (with an extra set of parens in the definition).

Re: Functional index definition

From
Josué Maldonado
Date:
Stephan Szabo wrote:
Thanks Stephan.

I forgot to say I'm using 7.3.4, your solutions worked fine.


> On Tue, 11 Nov 2003, [ISO-8859-1] Josué Maldonado wrote:
>
>
>>Hello list,
>>
>>Is there a way to create indexes using functions like these:
>>substring(prod_no,8,4)
>>to_char(fkardex,'YYYYMM')
>>substr(facnum,1,2)
>>
>>Help says is not possible but I would like to know if someone know an
>>undocumented/tricky way to get that done.
>
>
> Not directly in 7.3 and earlier.  You have to make a function that wraps
> the function you want to call with static arguments like:
>
> create function substring_8_4(text) returns text as
>  'select substring($1, 8, 4);' language 'sql' immutable;
>
> In 7.4, the indexes have been approved to allow indexes on expressions
> which allow the above (with an extra set of parens in the definition).
>
> ---------------------------(end of broadcast)---------------------------
> TIP 7: don't forget to increase your free space map settings
>


--
Josué Maldonado.