aboutsummaryrefslogtreecommitdiff
path: root/src/include/utils/jsonapi.h
diff options
context:
space:
mode:
authorAndrew Dunstan <andrew@dunslane.net>2017-03-31 14:25:25 -0400
committerAndrew Dunstan <andrew@dunslane.net>2017-03-31 14:25:25 -0400
commitc80b9920fcbcbf75e3d7e8fe092bf6e15d9d40b8 (patch)
tree3a0be10eafc54c52640c34b594fa6a096ed46d6b /src/include/utils/jsonapi.h
parent156d3882f89d2a224029e4c81adacd279eb1cdfc (diff)
downloadpostgresql-c80b9920fcbcbf75e3d7e8fe092bf6e15d9d40b8.tar.gz
postgresql-c80b9920fcbcbf75e3d7e8fe092bf6e15d9d40b8.zip
Transform or iterate over json(b) string values
Dmitry Dolgov, reviewed and lightly edited by me.
Diffstat (limited to 'src/include/utils/jsonapi.h')
-rw-r--r--src/include/utils/jsonapi.h16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/include/utils/jsonapi.h b/src/include/utils/jsonapi.h
index 8f132d732be..50c29c3a866 100644
--- a/src/include/utils/jsonapi.h
+++ b/src/include/utils/jsonapi.h
@@ -14,6 +14,7 @@
#ifndef JSONAPI_H
#define JSONAPI_H
+#include "jsonb.h"
#include "lib/stringinfo.h"
typedef enum
@@ -131,4 +132,19 @@ extern JsonLexContext *makeJsonLexContextCstringLen(char *json,
*/
extern bool IsValidJsonNumber(const char *str, int len);
+/* an action that will be applied to each value in iterate_json(b)_string_vaues 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)_string_values functions */
+typedef text * (*JsonTransformStringValuesAction) (void *state, char *elem_value, int elem_len);
+
+extern void iterate_jsonb_string_values(Jsonb *jb, void *state,
+ JsonIterateStringValuesAction action);
+extern void iterate_json_string_values(text *json, 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 /* JSONAPI_H */