Immutable function in index

Started by SZŰCS Gáboralmost 22 years ago2 messagesbugs
Jump to latest
#1SZŰCS Gábor
surrano@mailbox.hu

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,
minoseg integer 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,
ig date 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

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: SZŰCS Gábor (#1)
Re: [SQL] Immutable function in index

"=?iso-8859-2?B?U1rbQ1MgR+Fib3I=?=" <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