Обсуждение: Immutable function in index

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

Immutable function in index

От
"SZŰCS Gábor"
Дата:
Dear Gurus,

Version: PostgreSQL 7.3.3
Log:
%----------------------- cut here -----------------------%
tir=# CREATE INDEX ajanlat_cikk ON ajanlat (antinuller(cikk),
antinuller(minoseg), tol);
ERROR:  parser: parse error at or near "," at character 55
tir=# CREATE INDEX ajanlat_szolg ON ajanlat (antinuller(szolgaltatas), tol);
ERROR:  parser: parse error at or near "," at character 64
%----------------------- cut here -----------------------%

I'm not sure what happened, I'm quite sure it worked before, even with
7.3.3. The index was there and probably worked, but accidentally dropped it
and can't recreate.
May it be something in postgresql.conf (fumbled with it recently)?
May it be a bug in 7.3.3 (despite my memories)?

Relevant definitions:

%----------------------- cut here -----------------------%
CREATE FUNCTION antinuller (int4) RETURNS int4 AS '
SELECT CASE WHEN $1 ISNULL THEN -1 ELSE $1 END;'
LANGUAGE 'SQL' immutable;

CREATE TABLE ajanlat (   az serial NOT NULL PRIMARY KEY,   cikk integer REFERENCES cikk(az) ON UPDATE CASCADE,
minoseginteger REFERENCES minoseg(az) ON UPDATE CASCADE,   -- a minőség default 1 triggerből, mert csak ha nem
szolgáltatás!  szolgaltatas integer REFERENCES szolgaltatas(az) ON UPDATE CASCADE,   tol date DEFAULT now() NOT NULL,
igdate DEFAULT '3000-01-01' NOT NULL,   CONSTRAINT kitoltes CHECK       ((cikk ISNULL = minoseg ISNULL) AND (cikk
ISNULL= szolgaltatas 
NOTNULL))
);

CREATE INDEX ajanlat_cikk ON ajanlat (antinuller(cikk), antinuller(minoseg),
tol);
CREATE INDEX ajanlat_szolg ON ajanlat (antinuller(szolgaltatas), tol);
%----------------------- cut here -----------------------%

TIA,
G.
%----------------------- cut here -----------------------%
\end



Re: [SQL] Immutable function in index

От
Tom Lane
Дата:
"SZŰCS Gábor" <surrano@mailbox.hu> writes:
> tir=# CREATE INDEX ajanlat_cikk ON ajanlat (antinuller(cikk),
> antinuller(minoseg), tol);
> ERROR:  parser: parse error at or near "," at character 55

> I'm not sure what happened,

You're trying to use a 7.4 feature in 7.3.  Multiple functional columns
in one index is new in 7.4.
        regards, tom lane