PostgreSQL 9.1中array_agg的限制

6
使用array_agg或array_string时,数组在超过一定大小后返回为空。 SELECT array_agg(x.id) FROM (SELECT id FROM table LIMIT 500) x - 这个查询可以正常工作并返回一个数组。
但是这个查询:SELECT array_agg(x.id) FROM (SELECT id FROM table LIMIT 667) x则不行。它返回一个空数组。
我很确定这没有达到数组的限制大小。有任何想法为什么会发生这种情况吗?

1
@a_horse_with_no_name 不行。尝试使用 SELECT array_agg(x.id) FROM (SELECT * FROM cast(generate_series(1,1158) as int)as id) x - Ereli
3
我知道了问题所在。限制在于显示环境。pgAdmin III没有在用户界面中显示数据,但数据确实存在。 - Ereli
1
@Ereli 当计时器允许时,请将其作为答案添加到您的问题中并接受它。 - Craig Ringer
1个回答

5
这里的问题并不是Postgresql,而是我使用的客户端。 pgAdmin III不能显示一定大小的数组内容,大约为4.5k。 当使用psql时,不会遇到同样的问题。
pgAdmin的UI中,有一个选项可以设置“每列最大字符数”,在我的情况下设置为256,这没有太多意义。 但是,如果你将看起来为空的数组复制粘贴到记事本中,你会发现所有的数据都在那里。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接