Обсуждение: BUG #4043: Unrecognized node type: using plpgsql
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".
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.