Обсуждение: 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.