web-dev-qa-db-ja.com

PostgreSQLのJSONデータ型のサイズ制限

PostgreSQL 9.2のJSONデータ型のサイズの制限は誰でも知っていますか?

45
ankurvsoni

PostgreSQL 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));
}

PostgreSQL 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);
}

したがって、少なくとも現時点では、jsontextデータ型と同じですが、JSON検証が行われているようです。 textデータ型の最大サイズは 1GB です。

71
j.w.r