12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- /*-------------------------------------------------------------------------
- *
- * 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
|