Using CASE in plpgsql causes 'ERROR: cache lookup failed'

From: Mario Splivalo <mario(dot)splivalo(at)megafon(dot)hr>
To: pgsql-sql(at)postgresql(dot)org
Subject: Using CASE in plpgsql causes 'ERROR: cache lookup failed'
Date: 2010-04-14 09:48:43
Message-ID: 4BC58F7B.4000405@megafon.hr
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

I have an enum-type, like this:

CREATE TYPE type_enum_service_type AS ENUM
('Banner', 'Ticker', 'Memo');

Then I have a table, like this:

CREATE TABLE services (
service_id integer NOT NULL,
service_type type_enum_service_type NOT NULL,
service_keyword character varying NOT NULL,
service_time_created timestamp with time zone NOT NULL DEFAULT now(),
);

And, I have a plpgsql function like this:

CREATE OR REPLACE FUNCTION service_something(a_service_id integer)
RETURNS void AS
$BODY$
DECLARE
serviceType type_enum_service_type;
impressionsLeft integer;
messageId integer;
userId integer;

BEGIN
CASE service_type FROM services WHERE service_id = a_service_id
WHEN 'Banner' THEN
RAISE NOTICE 'It is Banner!';
WHEN 'Ticker' THEN
RAISE NOTICE 'It is Ticker!';
WHEN 'Memo' THEN
RAISE NOTICE 'It is Memo!';
ELSE
RAISE EXCEPTION 'It is strange!';
END CASE;

RETURN;

END
$BODY$
LANGUAGE 'plpgsql' VOLATILE SECURITY DEFINER
COST 100

Then I insert some data:

INSERT INTO services (1, 'Banner', 'kw-banner', now());
INSERT INTO services (2, 'Banner', 'kw-banner', now());
INSERT INTO services (2, 'Banner', 'kw-banner', now());

When I call 'service_something' function and provide nonexistent
service_id I get this error:

ERROR: cache lookup failed for type 37

When I repeat the query (SELECT service_something(1);) the error is like
this:
ERROR: cache lookup failed for type 0

Is this desired behavior so that first I need to check if service_id is
existent, or is this a bug? :)

Mike

P.S. PostgreSQL 8.4.2 on x86_64-unknown-linux-gnu, compiled by GCC
gcc-4.3.real (Ubuntu 4.3.3-5ubuntu4) 4.3.3, 64-bit

Responses

Browse pgsql-sql by date

  From Date Subject
Next Message Louis-David Mitterrand 2010-04-14 14:54:34 graphing time series data
Previous Message Gonzalo Aguilar Delgado 2010-04-14 08:23:22 Problem with insert related to different schemas