반응형
Postgre의 JSON 데이터 유형 크기 제한SQL
Postgre에서 JSON 데이터 타입의 크기 제한을 알고 있는 사람 있습니까?SQL 9.2?
Postgre 소스 보기SQL 9.2.1:
Source: postgresql-9.2.1\src\backend\utils\adt\json.c:
/*
* Input.
*/
Datum
json_in(PG_FUNCTION_ARGS)
{
char *text = PG_GETARG_CSTRING(0);
json_validate_cstring(text);
/* Internal representation is the same as text, for now */
PG_RETURN_TEXT_P(cstring_to_text(text));
}
Postgre 업데이트SQL 9.3.5:
에서 코드가 변경되었습니다.json_in
json 내부 표현은 여전히 텍스트입니다.
Source: postgresql-9.3.5\src\backend\utils\adt\json.c:
/*
* Input.
*/
Datum
json_in(PG_FUNCTION_ARGS)
{
char *json = PG_GETARG_CSTRING(0);
text *result = cstring_to_text(json);
JsonLexContext *lex;
/* validate it */
lex = makeJsonLexContext(result, false);
pg_parse_json(lex, &nullSemAction);
/* Internal representation is the same as text, for now */
PG_RETURN_TEXT_P(result);
}
그래서 적어도 지금으로선json
와 같다text
JSON 유효성 검사를 사용하는 데이터 유형입니다.그text
데이터 유형의 최대 크기는 1GB입니다.
위해서jsonb
필드, 소스 코드의 jsonb.c를 보면 다음 함수가 표시됩니다.
checkStringLen(size_t len)
{
if (len > JENTRY_OFFLENMASK)
ereport(ERROR,
(errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED),
errmsg("string too long to represent as jsonb string"),
errdetail("Due to an implementation restriction, jsonb strings cannot exceed %d bytes.",
JENTRY_OFFLENMASK)));
return len;
}
오류 코드는 jsonb 문자열을 초과할 수 없음을 나타냅니다.JENTRY_OFFLENMASK
바이트 수
jsonb.h에서 이 상수는 다음과 같이 정의됩니다.
#define JENTRY_OFFLENMASK 0x0FFFFFFF
255 MB 입니다.
Postgre 소스코드에서 확인했습니다.SQL 9.4, 최대 15
언급URL : https://stackoverflow.com/questions/12632871/size-limit-of-json-data-type-in-postgresql
반응형
'programing' 카테고리의 다른 글
Facebook React에서 코드 재사용을 위해 mixins vs components 사용 (0) | 2023.03.28 |
---|---|
3진 연산자의 각도 변환 필터 (0) | 2023.03.28 |
URL 없이 상태 간에 데이터를 전달하는 AngularJS UI 라우터 (0) | 2023.03.28 |
Oracle SQL에서 세미콜론과 슬래시를 사용해야 하는 경우 (0) | 2023.03.28 |
Eclipse 프로젝트로 JSON 가져오기 (0) | 2023.03.28 |