diff options
author | Andrew Dunstan <andrew@dunslane.net> | 2022-09-01 17:07:14 -0400 |
---|---|---|
committer | Andrew Dunstan <andrew@dunslane.net> | 2022-09-01 17:07:14 -0400 |
commit | 2f2b18bd3f554e96a8cc885b177211be12288e4a (patch) | |
tree | 344a5d33738de735f68b98361a54eb5944726f8f /src/include/utils | |
parent | 90247e742f849794d061a0444071647728054b45 (diff) | |
download | postgresql-2f2b18bd3f554e96a8cc885b177211be12288e4a.tar.gz postgresql-2f2b18bd3f554e96a8cc885b177211be12288e4a.zip |
Revert SQL/JSON features
The reverts the following and makes some associated cleanups:
commit f79b803dc: Common SQL/JSON clauses
commit f4fb45d15: SQL/JSON constructors
commit 5f0adec25: Make STRING an unreserved_keyword.
commit 33a377608: IS JSON predicate
commit 1a36bc9db: SQL/JSON query functions
commit 606948b05: SQL JSON functions
commit 49082c2cc: RETURNING clause for JSON() and JSON_SCALAR()
commit 4e34747c8: JSON_TABLE
commit fadb48b00: PLAN clauses for JSON_TABLE
commit 2ef6f11b0: Reduce running time of jsonb_sqljson test
commit 14d3f24fa: Further improve jsonb_sqljson parallel test
commit a6baa4bad: Documentation for SQL/JSON features
commit b46bcf7a4: Improve readability of SQL/JSON documentation.
commit 112fdb352: Fix finalization for json_objectagg and friends
commit fcdb35c32: Fix transformJsonBehavior
commit 4cd8717af: Improve a couple of sql/json error messages
commit f7a605f63: Small cleanups in SQL/JSON code
commit 9c3d25e17: Fix JSON_OBJECTAGG uniquefying bug
commit a79153b7a: Claim SQL standard compliance for SQL/JSON features
commit a1e7616d6: Rework SQL/JSON documentation
commit 8d9f9634e: Fix errors in copyfuncs/equalfuncs support for JSON node types.
commit 3c633f32b: Only allow returning string types or bytea from json_serialize
commit 67b26703b: 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
Diffstat (limited to 'src/include/utils')
-rw-r--r-- | src/include/utils/formatting.h | 4 | ||||
-rw-r--r-- | src/include/utils/json.h | 26 | ||||
-rw-r--r-- | src/include/utils/jsonb.h | 33 | ||||
-rw-r--r-- | src/include/utils/jsonfuncs.h | 7 | ||||
-rw-r--r-- | src/include/utils/jsonpath.h | 37 |
5 files changed, 0 insertions, 107 deletions
diff --git a/src/include/utils/formatting.h b/src/include/utils/formatting.h index f048eb0869d..851e787bfdb 100644 --- a/src/include/utils/formatting.h +++ b/src/include/utils/formatting.h @@ -17,9 +17,6 @@ #ifndef _FORMATTING_H_ #define _FORMATTING_H_ -#define DCH_DATED 0x01 -#define DCH_TIMED 0x02 -#define DCH_ZONED 0x04 extern char *str_tolower(const char *buff, size_t nbytes, Oid collid); extern char *str_toupper(const char *buff, size_t nbytes, Oid collid); @@ -32,6 +29,5 @@ extern char *asc_initcap(const char *buff, size_t nbytes); extern Datum parse_datetime(text *date_txt, text *fmt, Oid collid, bool strict, Oid *typid, int32 *typmod, int *tz, bool *have_error); -extern int datetime_format_flags(const char *fmt_str, bool *have_error); #endif diff --git a/src/include/utils/json.h b/src/include/utils/json.h index da4a9257b36..8a84a0cdb46 100644 --- a/src/include/utils/json.h +++ b/src/include/utils/json.h @@ -16,35 +16,9 @@ #include "lib/stringinfo.h" -typedef enum /* type categories for datum_to_json */ -{ - JSONTYPE_NULL, /* null, so we didn't bother to identify */ - JSONTYPE_BOOL, /* boolean (built-in types only) */ - JSONTYPE_NUMERIC, /* numeric (ditto) */ - JSONTYPE_DATE, /* we use special formatting for datetimes */ - JSONTYPE_TIMESTAMP, - JSONTYPE_TIMESTAMPTZ, - JSONTYPE_JSON, /* JSON itself (and JSONB) */ - JSONTYPE_ARRAY, /* array */ - JSONTYPE_COMPOSITE, /* composite */ - JSONTYPE_CAST, /* something with an explicit cast to JSON */ - JSONTYPE_OTHER /* all else */ -} JsonTypeCategory; - /* functions in json.c */ extern void escape_json(StringInfo buf, const char *str); extern char *JsonEncodeDateTime(char *buf, Datum value, Oid typid, const int *tzp); -extern bool to_json_is_immutable(Oid typoid); -extern void json_categorize_type(Oid typoid, JsonTypeCategory *tcategory, - Oid *outfuncoid); -extern Datum to_json_worker(Datum val, JsonTypeCategory tcategory, - Oid outfuncoid); -extern Datum json_build_object_worker(int nargs, Datum *args, bool *nulls, - Oid *types, bool absent_on_null, - bool unique_keys); -extern Datum json_build_array_worker(int nargs, Datum *args, bool *nulls, - Oid *types, bool absent_on_null); -extern bool json_validate(text *json, bool check_unique_keys, bool throw_error); #endif /* JSON_H */ diff --git a/src/include/utils/jsonb.h b/src/include/utils/jsonb.h index bae466b5234..4cbe6edf218 100644 --- a/src/include/utils/jsonb.h +++ b/src/include/utils/jsonb.h @@ -329,8 +329,6 @@ typedef struct JsonbParseState JsonbValue contVal; Size size; struct JsonbParseState *next; - bool unique_keys; /* Check object key uniqueness */ - bool skip_nulls; /* Skip null object fields */ } JsonbParseState; /* @@ -376,22 +374,6 @@ typedef struct JsonbIterator struct JsonbIterator *parent; } JsonbIterator; -/* unlike with json categories, we need to treat json and jsonb differently */ -typedef enum /* type categories for datum_to_jsonb */ -{ - JSONBTYPE_NULL, /* null, so we didn't bother to identify */ - JSONBTYPE_BOOL, /* boolean (built-in types only) */ - JSONBTYPE_NUMERIC, /* numeric (ditto) */ - JSONBTYPE_DATE, /* we use special formatting for datetimes */ - JSONBTYPE_TIMESTAMP, /* we use special formatting for timestamp */ - JSONBTYPE_TIMESTAMPTZ, /* ... and timestamptz */ - JSONBTYPE_JSON, /* JSON */ - JSONBTYPE_JSONB, /* JSONB */ - JSONBTYPE_ARRAY, /* array */ - JSONBTYPE_COMPOSITE, /* composite */ - JSONBTYPE_JSONCAST, /* something with an explicit cast to JSON */ - JSONBTYPE_OTHER /* all else */ -} JsonbTypeCategory; /* Support functions */ extern uint32 getJsonbOffset(const JsonbContainer *jc, int index); @@ -419,14 +401,10 @@ extern void JsonbHashScalarValueExtended(const JsonbValue *scalarVal, uint64 *hash, uint64 seed); /* jsonb.c support functions */ -extern Datum jsonb_from_text(text *js, bool unique_keys); extern char *JsonbToCString(StringInfo out, JsonbContainer *in, int estimated_len); extern char *JsonbToCStringIndent(StringInfo out, JsonbContainer *in, int estimated_len); -extern Jsonb *JsonbMakeEmptyArray(void); -extern Jsonb *JsonbMakeEmptyObject(void); -extern char *JsonbUnquote(Jsonb *jb); extern bool JsonbExtractScalar(JsonbContainer *jbc, JsonbValue *res); extern const char *JsonbTypeName(JsonbValue *jb); @@ -434,15 +412,4 @@ extern Datum jsonb_set_element(Jsonb *jb, Datum *path, int path_len, JsonbValue *newval); extern Datum jsonb_get_element(Jsonb *jb, Datum *path, int npath, bool *isnull, bool as_text); -extern bool to_jsonb_is_immutable(Oid typoid); -extern void jsonb_categorize_type(Oid typoid, JsonbTypeCategory *tcategory, - Oid *outfuncoid); -extern Datum to_jsonb_worker(Datum val, JsonbTypeCategory tcategory, - Oid outfuncoid); -extern Datum jsonb_build_object_worker(int nargs, Datum *args, bool *nulls, - Oid *types, bool absent_on_null, - bool unique_keys); -extern Datum jsonb_build_array_worker(int nargs, Datum *args, bool *nulls, - Oid *types, bool absent_on_null); - #endif /* __JSONB_H__ */ diff --git a/src/include/utils/jsonfuncs.h b/src/include/utils/jsonfuncs.h index 62dc3d88a42..865b2ff7c11 100644 --- a/src/include/utils/jsonfuncs.h +++ b/src/include/utils/jsonfuncs.h @@ -45,9 +45,6 @@ extern void pg_parse_json_or_ereport(JsonLexContext *lex, JsonSemAction *sem); /* report an error during json lexing or parsing */ extern void json_ereport_error(JsonParseErrorType error, JsonLexContext *lex); -/* get first JSON token */ -extern JsonTokenType json_get_first_token(text *json, bool throw_error); - extern uint32 parse_jsonb_index_flags(Jsonb *jb); extern void iterate_jsonb_values(Jsonb *jb, uint32 flags, void *state, JsonIterateStringValuesAction action); @@ -58,8 +55,4 @@ extern Jsonb *transform_jsonb_string_values(Jsonb *jsonb, void *action_state, extern text *transform_json_string_values(text *json, void *action_state, JsonTransformStringValuesAction transform_action); -extern Datum json_populate_type(Datum json_val, Oid json_type, - Oid typid, int32 typmod, - void **cache, MemoryContext mcxt, bool *isnull); - #endif diff --git a/src/include/utils/jsonpath.h b/src/include/utils/jsonpath.h index 8e79b8dc9f0..cd0b5d5b61c 100644 --- a/src/include/utils/jsonpath.h +++ b/src/include/utils/jsonpath.h @@ -15,11 +15,8 @@ #define JSONPATH_H #include "fmgr.h" -#include "executor/tablefunc.h" #include "nodes/pg_list.h" -#include "nodes/primnodes.h" #include "utils/jsonb.h" -#include "utils/jsonfuncs.h" typedef struct { @@ -177,7 +174,6 @@ extern bool jspGetBool(JsonPathItem *v); extern char *jspGetString(JsonPathItem *v, int32 *len); extern bool jspGetArraySubscript(JsonPathItem *v, JsonPathItem *from, JsonPathItem *to, int i); -extern bool jspIsMutable(JsonPath *path, List *varnames, List *varexprs); extern const char *jspOperationName(JsonPathItemType type); @@ -252,37 +248,4 @@ extern JsonPathParseResult *parsejsonpath(const char *str, int len); extern int jspConvertRegexFlags(uint32 xflags); -/* - * Evaluation of jsonpath - */ - -/* External variable passed into jsonpath. */ -typedef struct JsonPathVariableEvalContext -{ - char *name; - Oid typid; - int32 typmod; - struct ExprContext *econtext; - struct ExprState *estate; - MemoryContext mcxt; /* memory context for cached value */ - Datum value; - bool isnull; - bool evaluated; -} JsonPathVariableEvalContext; - -/* SQL/JSON item */ -extern void JsonItemFromDatum(Datum val, Oid typid, int32 typmod, - JsonbValue *res); - -extern bool JsonPathExists(Datum jb, JsonPath *path, List *vars, bool *error); -extern Datum JsonPathQuery(Datum jb, JsonPath *jp, JsonWrapper wrapper, - bool *empty, bool *error, List *vars); -extern JsonbValue *JsonPathValue(Datum jb, JsonPath *jp, bool *empty, - bool *error, List *vars); - -extern int EvalJsonPathVar(void *vars, char *varName, int varNameLen, - JsonbValue *val, JsonbValue *baseObject); - -extern PGDLLIMPORT const TableFuncRoutine JsonbTableRoutine; - #endif |