2012-09-13 18 views
6

Wenn Sie array_agg oder array_string verwenden, gibt das Array ab einer bestimmten Größe leer aus.Einschränkung von array_agg in Postgresql 9.1

SELECT array_agg(x.id) FROM (SELECT id FROM table LIMIT 500) x - dies funktioniert und gibt ein Array zurück.

aber diese Abfrage: SELECT array_agg(x.id) FROM (SELECT id FROM table LIMIT 667) x Funktioniert nicht. Es gibt ein leeres Array zurück.

Ich bin mir ziemlich sicher, dass dies die Begrenzungsgröße eines Arrays nicht erreicht. Irgendwelche Ideen warum passiert das?

+1

Kann 'id' null sein? –

+1

@a_pferd_mit_nr_name nein. versuchen Sie 'SELECT array_agg (x.id) FROM (SELECT * FROM Cast (generate_series (1.1158) als int) als id) x' – Ereli

+3

Ich fand heraus, was das Problem war. Die Einschränkung liegt in der Anzeigeumgebung. 'pgAdmin III' zeigt die Daten nicht in der Benutzeroberfläche an, aber sie ist da. – Ereli

Antwort

6

das Problem hier war nicht Postgresql, sondern der Client, den ich verwendete. pgAdmin III zeigt den Inhalt des Arrays nicht über eine bestimmte Größe. über 4.5k. Wenn Sie psql verwenden, tritt das gleiche Problem nicht auf.

die UI von pgAdmin gibt es eine Option "Max characters per column" einzustellen und es wurde in meinem Fall auf 256 gesetzt, was wenig Sinn macht. aber Sie kopieren & fügen Sie das Array, das in den Editor leer aussieht, finden Sie alle Daten sind da.

+0

schöne Beobachtung – vol7ron

Verwandte Themen