summaryrefslogtreecommitdiff
path: root/json.sql.in
blob: 7db0790b5721a111950f1b3bb9a8662de889ccce (plain)
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;