Thread: Immutable function in index

Immutable function in index

From
"SZŰCS Gábor"
Date:
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

From
Tom Lane
Date:
"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