plpgsql - variable's names conflict with table field names - Mailing list pgsql-bugs

From Pavel Stehule
Subject plpgsql - variable's names conflict with table field names
Date
Msg-id Pine.LNX.4.44.0402171132090.3097-100000@kix.fsv.cvut.cz
Whole thread Raw
Responses Re: plpgsql - variable's names conflict with table field names  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-bugs
Hello

    When I declare variable with same name as field of table, then I
have a problem with insert cmd in plpgsql procedure. I can't use this name
of columns list in insert cmd; I get syntax error.

When I use equal names in SELECT cmd, I didn't get error msg, but stored
prodedure don't work.

CREATE TABLE fog2(
  idx SERIAL PRIMARY KEY,
  cas TIMESTAMP
);

-- work fine
CREATE OR REPLACE FUNCTION errdemo() RETURNS TIMESTAMP AS '
DECLARE _cas TIMESTAMP;
BEGIN SELECT INTO _cas cas FROM fog2 LIMIT 1;
  RETURN _cas;
END; ' LANGUAGE plpgsql;

-- don't work
CREATE OR REPLACE FUNCTION errdemo() RETURNS TIMESTAMP AS '
DECLARE cas TIMESTAMP;
BEGIN SELECT INTO cas cas FROM fog2 LIMIT 1;
  RETURN cas;
END; ' LANGUAGE plpgsql;

-- works fine
CREATE OR REPLACE FUNCTION errdemo() RETURNS TIMESTAMP AS '
DECLARE cas TIMESTAMP;
BEGIN cas := CURRENT_TIMESTAMP;
  INSERT INTO fog2 VALUES(DEFAULT, cas);
  RETURN cas;
END; ' LANGUAGE plpgsql;

-- don't work - syntax error

CREATE OR REPLACE FUNCTION errdemo() RETURNS TIMESTAMP AS '
DECLARE cas TIMESTAMP;
BEGIN cas := CURRENT_TIMESTAMP;
  INSERT INTO fog2 (cas) VALUES(cas);
  RETURN cas;
END; ' LANGUAGE plpgsql;

intra=# select errdemo();
ERROR:  syntax error at or near "$1" at character 20
CONTEXT:  PL/pgSQL function "errdemo" line 3 at SQL statement
intra=#

Is it plpgsql error or my bug?

Regards
Pavel Stehule

pgsql-bugs by date:

Previous
From: Tom Lane
Date:
Subject: Re: Default Timestamp 'Now' bug with 7.4 on Panther.
Next
From: Tom Lane
Date:
Subject: Re: plpgsql - variable's names conflict with table field names