BUG #6165: documentation bug in plpgsql-declarations.html and plpgsql-statements.html (or plpgsql parser bug)

From: "raf" <raf(at)raf(dot)org>
To: pgsql-bugs(at)postgresql(dot)org
Subject: BUG #6165: documentation bug in plpgsql-declarations.html and plpgsql-statements.html (or plpgsql parser bug)
Date: 2011-08-17 05:21:01
Message-ID: 201108170521.p7H5L1LY084474@wwwmaster.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs


The following bug has been logged online:

Bug reference: 6165
Logged by: raf
Email address: raf(at)raf(dot)org
PostgreSQL version: 9.0.4
Operating system: N/A
Description: documentation bug in plpgsql-declarations.html and
plpgsql-statements.html (or plpgsql parser bug)
Details:

the documentation available at:

http://www.postgresql.org/docs/current/static/plpgsql-declarations.html

states that the general syntax of a variable declaration is:

name [ CONSTANT ] type [ NOT NULL ] [ { DEFAULT | := } expression ];

when it is really:

name [ CONSTANT ] type [ NOT NULL ] [ { DEFAULT | := | = } expression ];

i.e. an sql equality operator ("=") is accepted and acts as if it were
a plpgsql assignment operator (":=").

similarly, the documentation available at:

http://www.postgresql.org/docs/current/static/plpgsql-statements.html

states that an assignment of a value to a PL/pgSQL variable is written as:

variable := expression;

even though the sql equality operator works too:

variable = expression;

so, there is either a plpgsql parser bug that treats the sql equality
operator as the plpgsql assignment operator, or "=" is an undocumented
alternative to the documented plpgsql assignment operator (":=").

the only mention i have found of "=" being an assignment operator is in
the documentation that shows:

GET DIAGNOSTICS variable = item [ , ... ];

but i think that might be a special case.

example demonstration:

do $$
declare
i integer = 5;
begin
raise notice '%', i;
i = 6;
raise notice %', i;
end
$$;

will output 5 and then 6 (as expected by someone who doesn't know that
they should be using ":=" according to the documentation).

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Rainer Pruy 2011-08-17 10:21:01 PG8.4.7: updating rows leaves duplicate rows violating PK
Previous Message Dave Page 2011-08-16 19:45:05 Re: BUG #6164: Flashing dialog