mirror of
https://github.com/postgres/postgres.git
synced 2025-12-19 17:02:53 +03:00
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
59 lines
2.1 KiB
C
59 lines
2.1 KiB
C
/*-------------------------------------------------------------------------
|
|
*
|
|
* jsonfuncs.h
|
|
* Functions to process JSON data types.
|
|
*
|
|
* Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
|
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
*
|
|
* src/include/utils/jsonfuncs.h
|
|
*
|
|
*-------------------------------------------------------------------------
|
|
*/
|
|
|
|
#ifndef JSONFUNCS_H
|
|
#define JSONFUNCS_H
|
|
|
|
#include "common/jsonapi.h"
|
|
#include "utils/jsonb.h"
|
|
|
|
/*
|
|
* Flag types for iterate_json(b)_values to specify what elements from a
|
|
* json(b) document we want to iterate.
|
|
*/
|
|
typedef enum JsonToIndex
|
|
{
|
|
jtiKey = 0x01,
|
|
jtiString = 0x02,
|
|
jtiNumeric = 0x04,
|
|
jtiBool = 0x08,
|
|
jtiAll = jtiKey | jtiString | jtiNumeric | jtiBool
|
|
} JsonToIndex;
|
|
|
|
/* an action that will be applied to each value in iterate_json(b)_values functions */
|
|
typedef void (*JsonIterateStringValuesAction) (void *state, char *elem_value, int elem_len);
|
|
|
|
/* an action that will be applied to each value in transform_json(b)_values functions */
|
|
typedef text *(*JsonTransformStringValuesAction) (void *state, char *elem_value, int elem_len);
|
|
|
|
/* build a JsonLexContext from a text datum */
|
|
extern JsonLexContext *makeJsonLexContext(text *json, bool need_escapes);
|
|
|
|
/* try to parse json, and ereport(ERROR) on failure */
|
|
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);
|
|
|
|
extern uint32 parse_jsonb_index_flags(Jsonb *jb);
|
|
extern void iterate_jsonb_values(Jsonb *jb, uint32 flags, void *state,
|
|
JsonIterateStringValuesAction action);
|
|
extern void iterate_json_values(text *json, uint32 flags, void *action_state,
|
|
JsonIterateStringValuesAction action);
|
|
extern Jsonb *transform_jsonb_string_values(Jsonb *jsonb, void *action_state,
|
|
JsonTransformStringValuesAction transform_action);
|
|
extern text *transform_json_string_values(text *json, void *action_state,
|
|
JsonTransformStringValuesAction transform_action);
|
|
|
|
#endif
|