Обсуждение: BUG #4043: Unrecognized node type: using plpgsql

Поиск
Список
Период
Сортировка

BUG #4043: Unrecognized node type: using plpgsql

От
"Reinier Suurenbroek"
Дата:
The following bug has been logged online:

Bug reference:      4043
Logged by:          Reinier Suurenbroek
Email address:      suurenbroek@nieuwland.nl
PostgreSQL version: 8.3.0
Operating system:   SuSE Linux Enterprise Server 10sp1
Description:        Unrecognized node type: using plpgsql
Details:

Changing owner of database or schema results in errormessage.

------------- Script -------------
CREATE OR REPLACE FUNCTION trecht() RETURNS integer
    AS $$
BEGIN
  EXECUTE 'ALTER DATABASE db1   OWNER TO reino' ;
  EXECUTE 'ALTER SCHEMA   schm1 OWNER TO reino' ;
END;
$$
LANGUAGE plpgsql;
------------- Script -------------

------------- Output -------------
select trecht();
ERROR:  unrecognized node type: 1835557747
CONTEXT:  SQL statement "ALTER SCHEMA   schm1 OWNER TO reino"
PL/pgSQL function "trecht" line 2 at EXECUTE statement
reino=# \i t.sql
CREATE FUNCTION
reino=# select trecht();
ERROR:  unrecognized node type: 3236452
CONTEXT:  SQL statement "ALTER DATABASE db1   OWNER TO reino"
PL/pgSQL function "trecht" line 2 at EXECUTE statement
------------- Output -------------

I've no problems running these command "by hand".

Re: BUG #4043: Unrecognized node type: using plpgsql

От
Alvaro Herrera
Дата:
Reinier Suurenbroek wrote:

> ------------- Output -------------
> select trecht();
> ERROR:  unrecognized node type: 1835557747
> CONTEXT:  SQL statement "ALTER SCHEMA   schm1 OWNER TO reino"
> PL/pgSQL function "trecht" line 2 at EXECUTE statement

Yup, that's a known bug (#3940) fixed in 8.3.1.


2008-02-07 18:07  tgl

    * src/backend/: commands/alter.c (1.27), parser/gram.y (2.606):

Some variants of ALTER OWNER tried to make the "object" field of the
statement be a list of bare C strings, rather than String nodes, which is
what they need to be for copyfuncs/equalfuncs to work.  Fortunately these
node types never go out to disk (if they did, we'd likely have noticed the
problem sooner), so we can just fix it without creating a need for initdb.
This bug has been there since 8.0, but 8.3 exposes it in a more common
code path (Parse messages) than prior releases did.  Per bug #3940 from
Vladimir Kokovic.

--
Alvaro Herrera                                http://www.CommandPrompt.com/
The PostgreSQL Company - Command Prompt, Inc.