web-dev-qa-db-ja.com

さまざまなPostgresqlの文字のサイズ制限

Postgresqlのさまざまなデータ型のサイズ制限は何ですか? character varying(n)の場合、varchar(n)nは1〜10485760の範囲にあるはずですが、それは本当ですか?

character(n)char(n)textの有効なサイズは何ですか?

25

Postgresの制限された文字タイプ(例:varchar(n))の最大サイズは10485760です。これは次の方法で確認できます。

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

ERROR:  length for type varchar cannot exceed 10485760

この制限は、次のソースコードのフラグメント(htup_details.h)で定義されていますが、公式ドキュメントでは明示的に言及されていません。

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

可変長無制限タイプ(text、varchar)の最大文字数は未定義です。 すべての文字列タイプ には、バイト単位のサイズの制限があります。

いずれの場合も、格納できる最長の文字列は約1 GBです。

29
klin