Hello all SQL BUG CODE: BEGIN; SELECT version(); -- "PostgreSQL 8.3.3 on i686-redhat-linux-gnu, compiled by GCC gcc (GCC) 4.1.2 20070626 (Red Hat 4.1.2-14)" CREATE TYPE "buggy_enum_first" AS ENUM ( 'bug1', 'bug2', 'bug3' );
CREATE TABLE "bug_table" ( "id" BIGINT NOT NULL, "buggy_enum_field" "buggy_enum_first" DEFAULT 'bug1'::buggy_enum_first NOT NULL, CONSTRAINT "test_table_pkey" PRIMARY KEY("id") ) WITHOUT OIDS; CREATE FUNCTION buggy_procedure() RETURNS SETOF bug_table AS $$ BEGIN -- @todo hide password RETURN QUERY ( SELECT * FROM bug_table ); END; $$ LANGUAGE plpgsql STRICT SECURITY DEFINER; SELECT * FROM buggy_procedure(); -- All Okey DROP TYPE buggy_enum_first CASCADE; CREATE TYPE "buggy_enum_second" AS ENUM ( 'bug1', 'bug2', 'bug3' ); ALTER TABLE bug_table ADD COLUMN buggy_enum_field buggy_enum_second; SELECT * FROM buggy_procedure(); -- Bug ROLLBACK; /*NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "test_table_pkey" for table "bug_table" NOTICE: drop cascades to default for table bug_table column buggy_enum_fieldNOTICE: drop cascades to table bug_table column buggy_enum_field ERROR: structure of query does not match function result type CONTEXT: PL/pgSQL function "buggy_procedure" line 3 at RETURN QUERY*/