Größenbeschränkung des Zeichens variiert Postgresql

20

Was ist die Größenbeschränkung für verschiedene Datentypen in postgresql? Ich habe irgendwo dafür gesehen character varying(n), varchar(n) nmuss zwischen 1 und 10485760 liegen. Stimmt das?

Was sind die gültigen Größen character(n), char(n)und text?

Fredy De La Cruz
quelle

Antworten:

24

Die maximale Größe von begrenzten Zeichentypen (z. B. varchar (n)) in Postgres beträgt 10485760. Sie können dies folgendermaßen überprüfen:

create table test(id serial primary key, str varchar(10485761));

ERROR:  length for type varchar cannot exceed 10485760

Das Limit ist im folgenden Fragment des Quellcodes (htup_details.h) definiert, wird jedoch in der offiziellen Dokumentation nicht explizit erwähnt:

/*
 * MaxAttrSize is a somewhat arbitrary upper limit on the declared size of
 * data fields of char(n) and similar types.  It need not have anything
 * directly to do with the *actual* upper limit of varlena values, which
 * is currently 1Gb (see TOAST structures in postgres.h).  I've set it
 * at 10Mb which seems like a reasonable number --- tgl 8/6/00.
 */
#define MaxAttrSize     (10 * 1024 * 1024)

Die maximale Anzahl von Zeichen für Typen mit variabler unbegrenzter Länge (Text, Varchar) ist undefiniert. Für alle Zeichenfolgentypen gibt es eine Größenbeschränkung in Byte :

In jedem Fall beträgt die längste Zeichenkette, die gespeichert werden kann, ungefähr 1 GB.

klin
quelle