Thread: Problem with create index

Problem with create index

From
Rajesh Kumar Mallah
Date:

Hmmm... am i doing anything really silly?

tradein_clients=# CREATE INDEX profile_master2 on profile_master (lower( btrim(email) ) );
ERROR:  parser: parse error at or near "(" at character 61
tradein_clients=#


Regds
mallah.

Re: Problem with create index

From
Stephan Szabo
Date:
On Tue, 11 Nov 2003, Rajesh Kumar Mallah wrote:

> Hmmm... am i doing anything really silly?

Functional indexes on 7.3 and earlier only allow a function over one or
more columns (which would disallow the below as a function over a function
over a column).  The usual workaround would be to make an immutable
function that does both functions on its argument something like:

create function lower_btrim(text) returns text as 'select
lower(btrim($1));' language 'sql' immutable;
create index profile_master2 on profile_master(lower_btrim(email));

In 7.4 I believe the below should work.

> tradein_clients=# CREATE INDEX profile_master2 on profile_master (lower( btrim(email) ) );
> ERROR:  parser: parse error at or near "(" at character 61

Re: Problem with create index

From
Rajesh Kumar Mallah
Date:
On Tuesday 11 Nov 2003 2:00 pm, Stephan Szabo wrote:
> On Tue, 11 Nov 2003, Rajesh Kumar Mallah wrote:
> > Hmmm... am i doing anything really silly?
>
> Functional indexes on 7.3 and earlier only allow a function over one or
> more columns (which would disallow the below as a function over a function
> over a column).  The usual workaround would be to make an immutable
> function that does both functions on its argument something like:
>
> create function lower_btrim(text) returns text as 'select
> lower(btrim($1));' language 'sql' immutable;
> create index profile_master2 on profile_master(lower_btrim(email));


Thanks for the work around


>
> In 7.4 I believe the below should work.
>
> > tradein_clients=# CREATE INDEX profile_master2 on profile_master (lower(
> > btrim(email) ) ); ERROR:  parser: parse error at or near "(" at character
> > 61

Yes it does work

template1=# CREATE INDEX  profile_master2  on t_a(lower(btrim(email)));
CREATE INDEX
template1=#
template1=# CREATE  unique  INDEX  profile_master3  on t_a(lower(btrim(email)));
CREATE INDEX
template1=#


Regds
Mallah.