Обсуждение: INDEX on a composite type

Поиск
Список
Период
Сортировка

INDEX on a composite type

От
GMail
Дата:
Hi all.

When trying to create an index on a composite type, I need to enclose
the columns in paranthesis. Is this normal?
I don't think so as there's no mention in the friendly manual.

An example:

create type atype as (
  atext text,
  anint int
);

create table atable (
  info text,
  compo atype
);

create index i_atable_compo on atable(
  ((compo).atext),((compo).anint)
);

With single parenthesis, as suggested by the friendly manual, I get a
syntax error close to the "."

test=# create index i_atable_compo on atable(
  (compo).atext,(compo).anint
);
ERROR:  syntax error at or near "."
LINE 2:   (compo).atext,(compo).anint
                 ^

--
Vincenzo Romano
Maybe Computers will never become as intelligent as Humans.
Surely they won't ever become so stupid. [VR-1989]

Re: INDEX on a composite type

От
Martijn van Oosterhout
Дата:
On Wed, Dec 19, 2007 at 10:07:32PM +0100, GMail wrote:
> Hi all.
>
> When trying to create an index on a composite type, I need to enclose
> the columns in paranthesis. Is this normal?
> I don't think so as there's no mention in the friendly manual.

I beleive it says somewhere that anything except straight column names
need parenthesis. What you have is an expression and thus it needs
them.

Have a nice day,
--
Martijn van Oosterhout   <kleptog@svana.org>   http://svana.org/kleptog/
> Those who make peaceful revolution impossible will make violent revolution inevitable.
>  -- John F Kennedy

Вложения

Re: INDEX on a composite type

От
Colin Wetherbee
Дата:
GMail wrote:
> When trying to create an index on a composite type, I need to enclose
> the columns in paranthesis. Is this normal?
> I don't think so as there's no mention in the friendly manual.

I think your problem is similar to one that has been discussed here
previously.

http://www.mail-archive.com/pgsql-general@postgresql.org/msg75862.html

Colin

Re: INDEX on a composite type

От
GMail
Дата:
Il Wednesday 19 December 2007 22:29:25 Colin Wetherbee ha scritto:
> GMail wrote:
> > When trying to create an index on a composite type, I need to enclose
> > the columns in paranthesis. Is this normal?
> > I don't think so as there's no mention in the friendly manual.
>
> I think your problem is similar to one that has been discussed here
> previously.
>
> http://www.mail-archive.com/pgsql-general@postgresql.org/msg75862.html
>
> Colin

By the way, why not allowing the declaration of an index over a composite
type as a whole? (As opposed to a composite type as the list of single
component types).

--
Vincenzo Romano
Maybe Computers will never become as intelligent as Humans.
Surely they won't ever become so stupid. [VR-1989]

Re: INDEX on a composite type

От
Martijn van Oosterhout
Дата:
On Wed, Dec 19, 2007 at 10:41:36PM +0100, GMail wrote:
> By the way, why not allowing the declaration of an index over a composite
> type as a whole? (As opposed to a composite type as the list of single
> component types).

It would probably work if there was an operator class defined for your
type, but there's no magic for that.

Have a nice day,
--
Martijn van Oosterhout   <kleptog@svana.org>   http://svana.org/kleptog/
> Those who make peaceful revolution impossible will make violent revolution inevitable.
>  -- John F Kennedy

Вложения