Limite de tamanho de caracteres variando Postgresql

20

Qual é o limite de tamanho de vários tipos de dados no postgresql? Vi em algum lugar que character varying(n), varchar(n) ndeve estar entre 1 e 10485760. Isso é verdade?

Quais são os tamanhos válidos para character(n), char(n)e text?

Fredy De La Cruz
fonte

Respostas:

24

O tamanho máximo de tipos de caracteres limitados (por exemplo, varchar (n)) no Postgres é 10485760. Você pode verificar isso desta maneira:

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

ERROR:  length for type varchar cannot exceed 10485760

O limite é definido no seguinte fragmento do código fonte (htup_details.h), no entanto, não é mencionado explicitamente na documentação oficial:

/*
 * 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)

O número máximo de caracteres para tipos de tamanho ilimitado variável (texto, varchar) é indefinido. Há um limite de tamanho em bytes para todos os tipos de string :

De qualquer forma, a cadeia de caracteres mais longa possível que pode ser armazenada é de aproximadamente 1 GB.

klin
fonte