0

以下是 Pl/Python 函数返回二维数组:

CREATE FUNCTION return_multidim_py_array(x int4[]) 
  RETURNS int4[]
AS $$
  plpy.info(x, type(x))
  return x
$$ LANGUAGE plpythonu;

SELECT * FROM return_multidim_py_array(ARRAY[[1,2,3], [4,5,6]]);

使用以下软件版本,我收到以下错误:

- Plpython language
- Python 3.5.2
- PostgreSQL 9.5.17 on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 5.4.0-6ubuntu1~16.04.10) 5.4.0 20160609, 64-bit

错误:

ERROR:  cannot convert multidimensional array to Python list
DETAIL:  PL/Python only supports one-dimensional arrays.
CONTEXT:  PL/Python function "return_multidim_py_array". (Line X)

但是,在最新版本的 postgresql 上,此功能按预期工作。

- Plpython language
- Python 3.7.2
- PostgreSQL 11.4 on x86_64-apple-darwin16.7.0, compiled by Apple LLVM version 8.1.0 (clang-802.0.42), 64-bit

函数返回以下结果:

return_multidim_py_array
-------------------------
{{1,2,3},{4,5,6}}

这里的问题是,Postgres 9.x 不支持二维数组。

我在这里找到了一个补丁,这是一个链接!但是,我没有找到提到的文件来进行更改。

有人可以帮助使用 Postgres 9.x 进行这项工作吗?

谢谢

4

0 回答 0