Обсуждение: BUG #7711: Accessing nested composite types in PL/PgSQL doesn't work

Поиск
Список
Период
Сортировка

BUG #7711: Accessing nested composite types in PL/PgSQL doesn't work

От
mkolomeitsev@gmail.com
Дата:
The following bug has been logged on the website:

Bug reference:      7711
Logged by:          Michael Kolomeitsev
Email address:      mkolomeitsev@gmail.com
PostgreSQL version: 9.2.1
Operating system:   Arch Linux
Description:        =


It seems multiple dots (".") are not allowed. For example: a.b.c :=3D value;

How to reproduce:
CREATE TABLE nodes (
  id SERIAL NOT NULL PRIMARY KEY,
  name TEXT NOT NULL
);

CREATE TYPE pathId AS (
  id INTEGER,
  node nodes
);

CREATE OR REPLACE FUNCTION test_AEN7304() RETURNS void AS $$
DECLARE
  r pathId;
  n nodes;
BEGIN
  n.name :=3D 'abc';
  r.id :=3D 1;
  r.node :=3D n; -- All is ok
  r.node.name :=3D 'def'; -- << Error here
--  (r).node.name :=3D 'def'; -- << and here
--  ((r).node).name :=3D 'def'; -- << and here
END;
$$ LANGUAGE 'plpgsql';

ERROR:  "r.node.name" is not a known variable

(From http://archives.postgresql.org/pgsql-novice/2012-11/msg00057.php)

Re: BUG #7711: Accessing nested composite types in PL/PgSQL doesn't work

От
Pavel Stehule
Дата:
Hello

it is not a bug - it is known limit :(

nested structures are not supported as target

anybody can implement it if like it

Regards

Pavel Stehule

2012/11/29  <mkolomeitsev@gmail.com>:
> The following bug has been logged on the website:
>
> Bug reference:      7711
> Logged by:          Michael Kolomeitsev
> Email address:      mkolomeitsev@gmail.com
> PostgreSQL version: 9.2.1
> Operating system:   Arch Linux
> Description:
>
> It seems multiple dots (".") are not allowed. For example: a.b.c := value;
>
> How to reproduce:
> CREATE TABLE nodes (
>   id SERIAL NOT NULL PRIMARY KEY,
>   name TEXT NOT NULL
> );
>
> CREATE TYPE pathId AS (
>   id INTEGER,
>   node nodes
> );
>
> CREATE OR REPLACE FUNCTION test_AEN7304() RETURNS void AS $$
> DECLARE
>   r pathId;
>   n nodes;
> BEGIN
>   n.name := 'abc';
>   r.id := 1;
>   r.node := n; -- All is ok
>   r.node.name := 'def'; -- << Error here
> --  (r).node.name := 'def'; -- << and here
> --  ((r).node).name := 'def'; -- << and here
> END;
> $$ LANGUAGE 'plpgsql';
>
> ERROR:  "r.node.name" is not a known variable
>
> (From http://archives.postgresql.org/pgsql-novice/2012-11/msg00057.php)
>
>
>
>
> --
> Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-bugs