Batas ukuran karakter bervariasi Postgresql

20

Berapa batas ukuran dari berbagai tipe data di postgresql? Saya melihat di suatu tempat bahwa character varying(n), varchar(n) nharus antara 1 hingga 10485760. Apakah itu benar?

Untuk ukuran apa yang valid character(n), char(n)dan text?

Fredy De La Cruz
sumber

Jawaban:

24

Ukuran maksimum tipe karakter terbatas (mis. Varchar (n)) di Postgres adalah 10485760. Anda dapat memeriksanya dengan cara itu:

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

ERROR:  length for type varchar cannot exceed 10485760

Batasnya didefinisikan dalam fragmen kode sumber berikut (htup_details.h), namun tidak secara eksplisit disebutkan dalam dokumentasi resmi:

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

Jumlah karakter maksimum untuk jenis variabel panjang tak terbatas (teks, varchar) tidak ditentukan. Ada batas ukuran dalam byte untuk semua jenis string :

Bagaimanapun, string karakter terpanjang yang dapat disimpan adalah sekitar 1 GB.

klin
sumber