Обсуждение: plpgsql bug OR future request: Assign fileds in composite subfiled. eg. table.compositefield.subfield := TRUE;

Поиск
Список
Период
Сортировка
SQL:
CREATE TABLE second_type (
    flag BOOLEAN
);
CREATE TABLE main_type (
    subtype second_type
);
CREATE OR REPLACE FUNCTION "bug_in_tabletypes" () RETURNS pg_catalog.void AS
$body$
DECLARE
    row_main_table main_type%rowtype;
BEGIN
    row_main_table.subtype := NULL; -- all okey;
    row_main_table.subtype.flag := FALSE; -- cannot set
END;
$body$
LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;

Will produce error:


ERROR:  syntax error at or near "row_main_table"
LINE 1: row_main_table.subtype.flag := FALSE
        ^
QUERY:  row_main_table.subtype.flag := FALSE
CONTEXT:  SQL statement in PL/PgSQL function "bug_in_tabletypes" near line
Hello

2008/12/10 Oleg Serov <serovov@gmail.com>:
> SQL:
> CREATE TABLE second_type (
>        flag BOOLEAN
> );
> CREATE TABLE main_type (
>        subtype second_type
> );
> CREATE OR REPLACE FUNCTION "bug_in_tabletypes" () RETURNS pg_catalog.void AS
> $body$
> DECLARE
>        row_main_table main_type%rowtype;
> BEGIN
>        row_main_table.subtype := NULL; -- all okey;



>        row_main_table.subtype.flag := FALSE; -- cannot set

try
  (row_main_table.subtype).flag := FALSE; -- cannot set

regards
Pavel Stehule

> END;
> $body$
> LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;
>
> Will produce error:
>
>
> ERROR:  syntax error at or near "row_main_table"
> LINE 1: row_main_table.subtype.flag := FALSE
>        ^
> QUERY:  row_main_table.subtype.flag := FALSE
> CONTEXT:  SQL statement in PL/PgSQL function "bug_in_tabletypes" near line
>
> --
> Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-bugs
>
RVJST1I6ICBzeW50YXggZXJyb3IgYXQgb3IgbmVhciAiKCIKTElORSAxNTog
ICAgICAgIChyb3dfbWFpbl90YWJsZS5zdWJ0eXBlKS5mbGFnIDo9IEZBTFNF
OyAtLSBjYW5ub3Qgc2V0CiAgICAgICAgICAgICAgICBeCgoqKioqKioqKioq
IO/bycLLwSAqKioqKioqKioqCgpFUlJPUjogc3ludGF4IGVycm9yIGF0IG9y
IG5lYXIgIigiClNRTCBzdGF0ZTogNDI2MDEK6MHSwcvUxdLJ09TJy8E6MzIx
CgoyMDA4LzEyLzEwIFBhdmVsIFN0ZWh1bGUgPHBhdmVsLnN0ZWh1bGVAZ21h
aWwuY29tPjoKPiBIZWxsbwo+Cj4gMjAwOC8xMi8xMCBPbGVnIFNlcm92IDxz
ZXJvdm92QGdtYWlsLmNvbT46Cj4+IFNRTDoKPj4gQ1JFQVRFIFRBQkxFIHNl
Y29uZF90eXBlICgKPj4gICAgICAgIGZsYWcgQk9PTEVBTgo+PiApOwo+PiBD
UkVBVEUgVEFCTEUgbWFpbl90eXBlICgKPj4gICAgICAgIHN1YnR5cGUgc2Vj
b25kX3R5cGUKPj4gKTsKPj4gQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04g
ImJ1Z19pbl90YWJsZXR5cGVzIiAoKSBSRVRVUk5TIHBnX2NhdGFsb2cudm9p
ZCBBUwo+PiAkYm9keSQKPj4gREVDTEFSRQo+PiAgICAgICAgcm93X21haW5f
dGFibGUgbWFpbl90eXBlJXJvd3R5cGU7Cj4+IEJFR0lOCj4+ICAgICAgICBy
b3dfbWFpbl90YWJsZS5zdWJ0eXBlIDo9IE5VTEw7IC0tIGFsbCBva2V5Owo+
Cj4KPgo+PiAgICAgICAgcm93X21haW5fdGFibGUuc3VidHlwZS5mbGFnIDo9
IEZBTFNFOyAtLSBjYW5ub3Qgc2V0Cj4KPiB0cnkKPiAgKHJvd19tYWluX3Rh
YmxlLnN1YnR5cGUpLmZsYWcgOj0gRkFMU0U7IC0tIGNhbm5vdCBzZXQKPgo+
IHJlZ2FyZHMKPiBQYXZlbCBTdGVodWxlCj4KPj4gRU5EOwo+PiAkYm9keSQK
Pj4gTEFOR1VBR0UgJ3BscGdzcWwnIFZPTEFUSUxFIENBTExFRCBPTiBOVUxM
IElOUFVUIFNFQ1VSSVRZIElOVk9LRVI7Cj4+Cj4+IFdpbGwgcHJvZHVjZSBl
cnJvcjoKPj4KPj4KPj4gRVJST1I6ICBzeW50YXggZXJyb3IgYXQgb3IgbmVh
ciAicm93X21haW5fdGFibGUiCj4+IExJTkUgMTogcm93X21haW5fdGFibGUu
c3VidHlwZS5mbGFnIDo9IEZBTFNFCj4+ICAgICAgICBeCj4+IFFVRVJZOiAg
cm93X21haW5fdGFibGUuc3VidHlwZS5mbGFnIDo9IEZBTFNFCj4+IENPTlRF
WFQ6ICBTUUwgc3RhdGVtZW50IGluIFBML1BnU1FMIGZ1bmN0aW9uICJidWdf
aW5fdGFibGV0eXBlcyIgbmVhciBsaW5lCj4+Cj4+IC0tCj4+IFNlbnQgdmlh
IHBnc3FsLWJ1Z3MgbWFpbGluZyBsaXN0IChwZ3NxbC1idWdzQHBvc3RncmVz
cWwub3JnKQo+PiBUbyBtYWtlIGNoYW5nZXMgdG8geW91ciBzdWJzY3JpcHRp
b246Cj4+IGh0dHA6Ly93d3cucG9zdGdyZXNxbC5vcmcvbWFpbHByZWYvcGdz
cWwtYnVncwo+Pgo+Cg==