From: Marc Howard Zuckman <marc@fallon.classyad.com>
To: Sascha Schumann <sas@schell.de>
Cc: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Bryan White <bryan@arcamax.com>
Cc: pgsql-sql@hub.org
Cc: pgsql-hackers@postgreSQL.org
Subject: Re: [SQL] Functional Indexes
Date: Sun, 7 Feb 1999 21:42:23 -0500 (EST)
Message-ID: <Pine.LNX.4.02A.9902072132100.20192-100000@fallon.classyad.com> (raw)
In-Reply-To: <19990208012826.A10851@schell.de>
On Mon, 8 Feb 1999, Sascha Schumann wrote:
> On Sat, Feb 06, 1999 at 12:27:47PM -0500, Tom Lane wrote:
> > "Bryan White" <bryan@arcamax.com> writes:
> > > The documentation for CREATE INDEX implies that functions are allowed in
> > > index definitions but when I execute:
> > > create unique index idxtest on customer (lower(email));
> > > the result is:
> > > ERROR: DefineIndex: (null) class not found
> > > Should this work? Do I have the syntax wrong?
> >
> > I tried this wih 6.4.2 and found that it was only accepted if I
> > explicitly identified which index operator class to use:
> >
> > play=> create table customer (email text);
> > CREATE
> > play=> create unique index idxtest on customer (lower(email));
> > ERROR: DefineIndex: class not found
> > play=> create unique index idxtest on customer (lower(email) text_ops);
> > CREATE
> > play=>
> >
> > That'll do as a workaround for Bryan, but isn't this a bug? Surely
> > the system ought to know what type the result of lower() is...
> >
> > regards, tom lane
>
> I still have a problem with that ... edited typescript follows
>
> funweb=> \d userdat
> Table = userdat
> +----------------------------------+----------------------------------+-------+
> | Field | Type | Length|
> +----------------------------------+----------------------------------+-------+
> | username | varchar() not null | 30 |
> ...
> +----------------------------------+----------------------------------+-------+
> Index: userdat_pkey
> funweb=> create unique index userdat_idx2 on userdat (lower(username)
> varchar_ops);
> ERROR: BuildFuncTupleDesc: function 'lower(varchar)' does not exist
>
> This error message looks very bogus to me.
>
> --
>
> Regards,
>
> Sascha Schumann |
> Consultant | finger sas@schell.de
> | for PGP public key
>
I don't think lower is defined for varchar arguments. consider redefining
username as type text and using text_ops.
This method worked on my system:
stocks=> create table temptext (a text, b varchar(20));
CREATE
stocks=> create index itemptext on temptext using btree(lower(a) text_ops) ;
CREATE
Your error reproduced:
stocks=> create index i2temptext on temptext using btree(lower(b) text_ops) ;
ERROR: BuildFuncTupleDesc: function 'lower(varchar)' does not exist
Excerpt from function definitions( both return value and argument are text
types):
text |lower |text |lowercase
Marc Zuckman
marc@fallon.classyad.com
_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
_ Visit The Home and Condo MarketPlace _
_ http://www.ClassyAd.com _
_ _
_ FREE basic property listings/advertisements and searches. _
_ _
_ Try our premium, yet inexpensive services for a real _
_ selling or buying edge! _
_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pgsql-sql@postgresql.org
Cc: marc@fallon.classyad.com, sas@schell.de, tgl@sss.pgh.pa.us, bryan@arcamax.com, pgsql-sql@hub.org, pgsql-hackers@postgreSQL.org
Subject: Re: [SQL] Functional Indexes
In-Reply-To: <Pine.LNX.4.02A.9902072132100.20192-100000@fallon.classyad.com>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox