2012-09-28 16 views

Respuesta

45

En cuanto a la fuente 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)); 
} 

actualización para PostgreSQL 9.3.5:

El código ha cambiado en la función json_in, pero la representación interna JSON es todavía el texto:

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

lo que parece que, al menos por ahora, json es lo mismo que un tipo de datos text pero w con la validación JSON. El tamaño máximo del tipo de datos text es 1GB.

+7

¿El tipo de datos (nuevo desde la publicación?) Postgres 'jsonb' utiliza algo que no sea texto puro? –

+2

1GB! eso es bastante bueno Me alegro de que el número no esté en MB. – edencorbin

Cuestiones relacionadas