Обсуждение: Bug in procedure When you modificate table
U1FMIEJVRyBDT0RFOgpCRUdJTjsKU0VMRUNUIHZlcnNpb24oKTsgLS0gIlBv c3RncmVTUUwgOC4zLjMgb24gaTY4Ni1yZWRoYXQtbGludXgtZ251LCBjb21w aWxlZCBieQpHQ0MgZ2NjIChHQ0MpIDQuMS4yIDIwMDcwNjI2IChSZWQgSGF0 IDQuMS4yLTE0KSIKQ1JFQVRFIFRZUEUgImJ1Z2d5X2VudW1fZmlyc3QiIEFT IEVOVU0gKCAnYnVnMScsICdidWcyJywgJ2J1ZzMnICk7CgpDUkVBVEUgVEFC TEUgImJ1Z190YWJsZSIgKAogICJpZCIgQklHSU5UIE5PVCBOVUxMLAogICJi dWdneV9lbnVtX2ZpZWxkIiAiYnVnZ3lfZW51bV9maXJzdCIgREVGQVVMVCAn YnVnMSc6OmJ1Z2d5X2VudW1fZmlyc3QgTk9UCk5VTEwsCiAgQ09OU1RSQUlO VCAidGVzdF90YWJsZV9wa2V5IiBQUklNQVJZIEtFWSgiaWQiKQopIFdJVEhP VVQgT0lEUzsKCgpDUkVBVEUgRlVOQ1RJT04gYnVnZ3lfcHJvY2VkdXJlKCkg UkVUVVJOUyBTRVRPRiBidWdfdGFibGUKICAgIEFTICQkCkJFR0lOCiAgICAt LSBAdG9kbyBoaWRlIHBhc3N3b3JkCiAgICBSRVRVUk4gUVVFUlkgKAogICAg ICAgIFNFTEVDVCAqCiAgICAgICAgRlJPTSBidWdfdGFibGUKICAgICk7CkVO RDsKJCQKICAgIExBTkdVQUdFIHBscGdzcWwgU1RSSUNUIFNFQ1VSSVRZIERF RklORVI7CgpTRUxFQ1QgKiBGUk9NIGJ1Z2d5X3Byb2NlZHVyZSgpOyAtLSBB bGwgT2tleQpEUk9QIFRZUEUgYnVnZ3lfZW51bV9maXJzdCBDQVNDQURFOwpD UkVBVEUgVFlQRSAiYnVnZ3lfZW51bV9zZWNvbmQiIEFTIEVOVU0gKCAnYnVn MScsICdidWcyJywgJ2J1ZzMnICk7CkFMVEVSIFRBQkxFIGJ1Z190YWJsZSBB REQgQ09MVU1OIGJ1Z2d5X2VudW1fZmllbGQgYnVnZ3lfZW51bV9zZWNvbmQ7 ClNFTEVDVCAqIEZST00gYnVnZ3lfcHJvY2VkdXJlKCk7IC0tIEJ1ZwpST0xM QkFDSzsKLypOT1RJQ0U6ICBDUkVBVEUgVEFCTEUgLyBQUklNQVJZIEtFWSB3 aWxsIGNyZWF0ZSBpbXBsaWNpdCBpbmRleAoidGVzdF90YWJsZV9wa2V5IiBm b3IgdGFibGUgImJ1Z190YWJsZSLyxdrVzNjUwdQg2sHQ0s/TwSDTIM/UwtLP 28XOztnNCt7J08zPzSDT1NLPyzogMS4KCk5PVElDRTogIGRyb3AgY2FzY2Fk ZXMgdG8gZGVmYXVsdCBmb3IgdGFibGUgYnVnX3RhYmxlIGNvbHVtbgpidWdn eV9lbnVtX2ZpZWxkTk9USUNFOiAgZHJvcCBjYXNjYWRlcyB0byB0YWJsZSBi dWdfdGFibGUgY29sdW1uCmJ1Z2d5X2VudW1fZmllbGQKRVJST1I6ICBzdHJ1 Y3R1cmUgb2YgcXVlcnkgZG9lcyBub3QgbWF0Y2ggZnVuY3Rpb24gcmVzdWx0 IHR5cGUKQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uICJidWdneV9wcm9j ZWR1cmUiIGxpbmUgMyBhdCBSRVRVUk4gUVVFUlkqLwo=
Hey, anybody will answer here?
2008/7/4 Oleg Serov <serovov@gmail.com>
> 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"=F2=C5=DA=D5=CC=D8=D4=C1=D4 =DA=C1=
=D0=D2=CF=D3=C1 =D3 =CF=D4=C2=D2=CF=DB=C5=CE=CE=D9=CD
> =DE=C9=D3=CC=CF=CD =D3=D4=D2=CF=CB: 1.
>
> 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*/
>
>
>
>
>
--=20
=F3 =D5=D7=C1=D6=C5=CE=C9=C5=CD
=EF=CC=C5=C7 =F3=C5=D2=CF=D7
submitted as #5353
2010/2/26 Oleg Serov <serovov@gmail.com>
> Hey, anybody will answer here?
>
> 2008/7/4 Oleg Serov <serovov@gmail.com>
>
> 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"=F2=C5=DA=D5=CC=D8=D4=C1=D4 =DA=
=C1=D0=D2=CF=D3=C1 =D3 =CF=D4=C2=D2=CF=DB=C5=CE=CE=D9=CD
>> =DE=C9=D3=CC=CF=CD =D3=D4=D2=CF=CB: 1.
>>
>> 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*/
>>
>>
>>
>>
>>
>
>
> --
> =F3 =D5=D7=C1=D6=C5=CE=C9=C5=CD
>
> =EF=CC=C5=C7 =F3=C5=D2=CF=D7
>
--=20
=F3 =D5=D7=C1=D6=C5=CE=C9=C5=CD
=EF=CC=C5=C7 =F3=C5=D2=CF=D7
Oleg Serov <serovov@gmail.com> writes:
> submitted as #5353
> 2010/2/26 Oleg Serov <serovov@gmail.com>
It is really not necessary to spam the list with duplicate submissions.
regards, tom lane