1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
-- Adjust this setting to control where the objects get created.
SET search_path = public;
CREATE TYPE json;
CREATE OR REPLACE FUNCTION json_in(cstring)
RETURNS json
AS 'MODULE_PATHNAME'
LANGUAGE C STRICT IMMUTABLE;
CREATE OR REPLACE FUNCTION json_out(json)
RETURNS cstring
AS 'MODULE_PATHNAME'
LANGUAGE C STRICT IMMUTABLE;
CREATE TYPE json (
INPUT = json_in,
OUTPUT = json_out,
INTERNALLENGTH = VARIABLE,
STORAGE = extended,
-- make it a non-preferred member of string type category, as citext does
CATEGORY = 'S',
PREFERRED = false
);
-- Keep the labels of this enum in sync with enum_type_names[] in json_ops.c .
CREATE TYPE json_type AS ENUM ('null', 'string', 'number', 'bool', 'object', 'array');
CREATE OR REPLACE FUNCTION json_get_type(json)
RETURNS json_type
AS 'MODULE_PATHNAME'
LANGUAGE C STRICT IMMUTABLE;
CREATE OR REPLACE FUNCTION json_validate(text)
RETURNS boolean
AS 'MODULE_PATHNAME','json_validate_f'
LANGUAGE C STRICT IMMUTABLE;
CREATE OR REPLACE FUNCTION from_json(json)
RETURNS text
AS 'MODULE_PATHNAME'
LANGUAGE C STRICT IMMUTABLE;
CREATE OR REPLACE FUNCTION to_json(anyelement)
RETURNS json
AS 'MODULE_PATHNAME'
LANGUAGE C IMMUTABLE; -- not STRICT; allows to_json(NULL) to return 'null'::json.
CREATE OR REPLACE FUNCTION json_get(json, json_path text)
RETURNS json
AS 'MODULE_PATHNAME'
LANGUAGE C STRICT IMMUTABLE;
CREATE OR REPLACE FUNCTION json_set(json, json_path text, json)
RETURNS json
AS 'MODULE_PATHNAME'
LANGUAGE C STRICT IMMUTABLE;
CREATE OR REPLACE FUNCTION json_path(json, json_path text)
RETURNS SETOF json
AS 'MODULE_PATHNAME'
LANGUAGE C STRICT IMMUTABLE;
CREATE OR REPLACE FUNCTION json_condense(json)
RETURNS json
AS 'MODULE_PATHNAME'
LANGUAGE C STRICT IMMUTABLE;
CREATE OR REPLACE FUNCTION parse_json_path(text)
RETURNS text
AS 'MODULE_PATHNAME'
LANGUAGE C STRICT IMMUTABLE;
|