非互換
FUJITSU Enterprise Postgres 10では、PL/Pythonで複合型を多次元配列内で使用し、かつ、リストで指定した場合はエラーにするよう変更します。
複合型をリストで指定することができます。
[例]
=# CREATE TYPE mytype AS (c1 int, c2 int);
CREATE TYPE
=# CREATE FUNCTION list() RETURNS SETOF mytype[] AS $$ return [[1, 1], [1, 2]], [[2, 1], [2, 2]] $$ LANGUAGE plpythonu;
CREATE FUNCTION
=# SELECT list();
list
-------------------
{"(1,1)","(1,2)"}
{"(2,1)","(2,2)"}
(2 行)複合型をリストで指定した場合はエラーにします。
[例]
=# CREATE TYPE mytype AS (c1 int, c2 int);
CREATE TYPE
=# CREATE FUNCTION list() RETURNS SETOF mytype[] AS $$ return [[1, 1], [1, 2]], [[2, 1], [2, 2]] $$ LANGUAGE plpythonu;
CREATE FUNCTION
=# SELECT list();
ERROR: 属性 "c1" が Python オブジェクト中に存在しません (12648)
HINT: 複合型を配列に入れて返したい場合、 "[('foo',)]" のように複合型を Pythonのタプルとして返すようにしてください。
CONTEXT: 戻り値を生成する際に (14845)
PL/Python 関数 "list" (14842)対処方法
複合型を多次元配列内で使用する場合はリストではなく、タプルで指定するように変更してください。