Seltsames Verhalten beim Upgrade von 8.2.6 auf 8.3.5

Zum Anfang: ich hab das schon 2x auf diese Weise gemacht und es hat fehlerfrei geklappt. Wie übolich hab ich den neuen Server installiert, mit dem neuen pg_dump/pg_dumpall die alte DB ausgelesen und in die neue gepiped. Dabei trat bei einem zugegebener Massen sehr grossen Geometriefeldern (Binärformat) folgender Fehler auf der jeweils die ganze Transaktion zum Erliegen brachte:

ERROR:* out of memory
DETAIL:* Cannot enlarge string buffer containing 0 bytes by 1597848223 more bytes.

Ich habe das dann auf verschieden Arten und Weisen mal mit zwischenspeichern, mal erst Schema erzeugen, dann Daten einspielen versucht mit immer demselben Ergebnis. Dier Lösung war schliesslich, statt dem Copy-Befehl, den pg_dump verwendet inserts zu machen.
Was ist der Grund für dieses Verhalten? Kann man das irgendwie umgehen? >200GB Geodaten per Insert upzugraden ist , nunja, ermüdened :wink:

Grüssle Uwe

Ich würde mal an den Speichereinstellungen drehen, aber 1597848223 Bytes ist ne Menge Holz. Sind die Einstellungen bzgl. Speicher in beiden postgresql.conf - Dateien gleich?


Andreas

Ja, beides auf default, da wird sich wohl nichts geändert haben. Bisher traten solche Probleme auch nicht auf, in Ermangelung von Polygonen aus x00000 Punkten…
Ursprünglich eingelesen wurden sie mit shp2pgsql, das per default auch inserts generiert. Gibts da einen signifikanten Unterschied wie Copy und Insert so ein Feld mit Binärdaten behandeln?

Grüssle Uwe

Hallo,

wie es ausschaut liegt hier das Problem:
PostgreSQL Source Code: src/backend/lib/stringinfo.c Source File
Zeile 242ff

MaxAllocSize ist so definiert
#define MaxAllocSize ((Size) 0x3fffffff) /* 1 gigabyte - 1 */

zu finden in
PostgreSQL Source Code: src/include/utils/memutils.h Source File
Zeile 38

Wenn ich es Recht verstehe, ensteht der Fehler, weil auf einmal mehr als 1 GB Speicher reserviert werden soll.

Ob das ein Problem des Server oder von pg_restore ist, kann ich leider nicht nachvollziehen, habe nur nach deiner Fehlermeldung in Google gesucht.

Freundliche Grüße
hkocam

Danke für die Links. Leider liefert er keine Erklärung, warum Copy und Insert unterschiedliches Verhalten zeigen beim gleichen Datensatz. Naja, nu gehts ja und ich bin glücklich und zufrieden :slight_smile:

Gruß Uwe