Quelqu'un sait-il quelle est la limite de la taille du type de données JSON dans PostgreSQL 9.2?
En regardant la source de 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));
}
Mise à jour pour PostgreSQL 9.3.5:
Le code a changé dans le json_in
, mais la représentation interne json est toujours du texte:
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);
}
Il apparaît donc que, pour l'instant au moins, json
est identique à un type de données text
mais avec une validation JSON. La taille maximale du type de données text
est 1 Go .