mirror of
https://github.com/postgres/postgres.git
synced 2025-07-02 09:02:37 +03:00
Revert SQL/JSON features
The reverts the following and makes some associated cleanups: commitf79b803dc
: Common SQL/JSON clauses commitf4fb45d15
: SQL/JSON constructors commit5f0adec25
: Make STRING an unreserved_keyword. commit33a377608
: IS JSON predicate commit1a36bc9db
: SQL/JSON query functions commit606948b05
: SQL JSON functions commit49082c2cc
: RETURNING clause for JSON() and JSON_SCALAR() commit4e34747c8
: JSON_TABLE commitfadb48b00
: PLAN clauses for JSON_TABLE commit2ef6f11b0
: Reduce running time of jsonb_sqljson test commit14d3f24fa
: Further improve jsonb_sqljson parallel test commita6baa4bad
: Documentation for SQL/JSON features commitb46bcf7a4
: Improve readability of SQL/JSON documentation. commit112fdb352
: Fix finalization for json_objectagg and friends commitfcdb35c32
: Fix transformJsonBehavior commit4cd8717af
: Improve a couple of sql/json error messages commitf7a605f63
: Small cleanups in SQL/JSON code commit9c3d25e17
: Fix JSON_OBJECTAGG uniquefying bug commita79153b7a
: Claim SQL standard compliance for SQL/JSON features commita1e7616d6
: Rework SQL/JSON documentation commit8d9f9634e
: Fix errors in copyfuncs/equalfuncs support for JSON node types. commit3c633f32b
: Only allow returning string types or bytea from json_serialize commit67b26703b
: expression eval: Fix EEOP_JSON_CONSTRUCTOR and EEOP_JSONEXPR size. The release notes are also adjusted. Backpatch to release 15. Discussion: https://postgr.es/m/40d2c882-bcac-19a9-754d-4299e1d87ac7@postgresql.org
This commit is contained in:
@ -2656,11 +2656,11 @@ populate_array_dim_jsonb(PopulateArrayContext *ctx, /* context */
|
||||
|
||||
check_stack_depth();
|
||||
|
||||
if (jbv->type != jbvBinary ||
|
||||
!JsonContainerIsArray(jbc) ||
|
||||
JsonContainerIsScalar(jbc))
|
||||
if (jbv->type != jbvBinary || !JsonContainerIsArray(jbc))
|
||||
populate_array_report_expected_array(ctx, ndim - 1);
|
||||
|
||||
Assert(!JsonContainerIsScalar(jbc));
|
||||
|
||||
it = JsonbIteratorInit(jbc);
|
||||
|
||||
tok = JsonbIteratorNext(&it, &val, true);
|
||||
@ -3132,51 +3132,6 @@ populate_record_field(ColumnIOData *col,
|
||||
}
|
||||
}
|
||||
|
||||
/* recursively populate specified type from a json/jsonb value */
|
||||
Datum
|
||||
json_populate_type(Datum json_val, Oid json_type, Oid typid, int32 typmod,
|
||||
void **cache, MemoryContext mcxt, bool *isnull)
|
||||
{
|
||||
JsValue jsv = {0};
|
||||
JsonbValue jbv;
|
||||
|
||||
jsv.is_json = json_type == JSONOID;
|
||||
|
||||
if (*isnull)
|
||||
{
|
||||
if (jsv.is_json)
|
||||
jsv.val.json.str = NULL;
|
||||
else
|
||||
jsv.val.jsonb = NULL;
|
||||
}
|
||||
else if (jsv.is_json)
|
||||
{
|
||||
text *json = DatumGetTextPP(json_val);
|
||||
|
||||
jsv.val.json.str = VARDATA_ANY(json);
|
||||
jsv.val.json.len = VARSIZE_ANY_EXHDR(json);
|
||||
jsv.val.json.type = JSON_TOKEN_INVALID; /* not used in
|
||||
* populate_composite() */
|
||||
}
|
||||
else
|
||||
{
|
||||
Jsonb *jsonb = DatumGetJsonbP(json_val);
|
||||
|
||||
jsv.val.jsonb = &jbv;
|
||||
|
||||
/* fill binary jsonb value pointing to jb */
|
||||
jbv.type = jbvBinary;
|
||||
jbv.val.binary.data = &jsonb->root;
|
||||
jbv.val.binary.len = VARSIZE(jsonb) - VARHDRSZ;
|
||||
}
|
||||
|
||||
if (!*cache)
|
||||
*cache = MemoryContextAllocZero(mcxt, sizeof(ColumnIOData));
|
||||
|
||||
return populate_record_field(*cache, typid, typmod, NULL, mcxt,
|
||||
PointerGetDatum(NULL), &jsv, isnull);
|
||||
}
|
||||
|
||||
static RecordIOData *
|
||||
allocate_record_info(MemoryContext mcxt, int ncolumns)
|
||||
{
|
||||
@ -5566,23 +5521,3 @@ transform_string_values_scalar(void *state, char *token, JsonTokenType tokentype
|
||||
else
|
||||
appendStringInfoString(_state->strval, token);
|
||||
}
|
||||
|
||||
JsonTokenType
|
||||
json_get_first_token(text *json, bool throw_error)
|
||||
{
|
||||
JsonLexContext *lex;
|
||||
JsonParseErrorType result;
|
||||
|
||||
lex = makeJsonLexContext(json, false);
|
||||
|
||||
/* Lex exactly one token from the input and check its type. */
|
||||
result = json_lex(lex);
|
||||
|
||||
if (result == JSON_SUCCESS)
|
||||
return lex->token_type;
|
||||
|
||||
if (throw_error)
|
||||
json_ereport_error(result, lex);
|
||||
|
||||
return JSON_TOKEN_INVALID; /* invalid json */
|
||||
}
|
||||
|
Reference in New Issue
Block a user