2012-09-28 111 views

回答

45

查看源對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); 
} 

這樣看來,至少在目前,json是相同的數據類型text但瓦特ith JSON驗證。 text數據類型的最大大小爲1GB

+7

Postgres的'jsonb'數據類型是否使用純文本以外的東西? –

+2

1GB!這很不錯。很高興這個數字不是MB。 – edencorbin