]> git.8kb.co.uk Git - postgresql/pg_jsonb_opx/blob - jsonb_opx--1.1.sql
Raise an error if un implemented append function called.
[postgresql/pg_jsonb_opx] / jsonb_opx--1.1.sql
1 \echo Use "CREATE EXTENSION jsonb_opx" to load this file. \quit
2
3 -- CREATE OR REPLACE FUNCTION jsonb_delete (jsonb, text) 
4 -- RETURNS jsonb
5 --     AS 'SELECT jsonb_delete($1, ARRAY[$2]);'
6 -- LANGUAGE SQL IMMUTABLE STRICT; 
7 -- COMMENT ON FUNCTION jsonb_delete(jsonb, text) IS 'delete key in second argument from first argument';
8
9 CREATE OR REPLACE FUNCTION jsonb_delete (jsonb, text) 
10 RETURNS jsonb
11     AS 'MODULE_PATHNAME', 'jsonb_delete_key'
12 LANGUAGE C IMMUTABLE STRICT; 
13 COMMENT ON FUNCTION jsonb_delete(jsonb, text) IS 'delete key or string values in second argument from first argument';
14
15 DROP OPERATOR IF EXISTS - (jsonb, text);
16 CREATE OPERATOR - ( PROCEDURE = jsonb_delete, LEFTARG = jsonb, RIGHTARG = text);
17 COMMENT ON OPERATOR - (jsonb, text) IS 'delete key from left operand';
18
19 --
20
21 CREATE OR REPLACE FUNCTION jsonb_delete(jsonb, numeric)
22 RETURNS jsonb
23     AS 'MODULE_PATHNAME', 'jsonb_delete_key'
24 LANGUAGE C IMMUTABLE STRICT;
25 COMMENT ON FUNCTION jsonb_delete(jsonb, numeric) IS 'delete numeric elements in second argument from first argument';
26
27 DROP OPERATOR IF EXISTS - (jsonb, numeric);
28 CREATE OPERATOR - ( PROCEDURE = jsonb_delete, LEFTARG = jsonb, RIGHTARG = numeric);
29 COMMENT ON OPERATOR - (jsonb, numeric) IS 'delete numeric elements from left operand';
30
31 --
32
33 CREATE OR REPLACE FUNCTION jsonb_delete(jsonb, boolean)
34 RETURNS jsonb
35     AS 'MODULE_PATHNAME', 'jsonb_delete_key'
36 LANGUAGE C IMMUTABLE STRICT;
37 COMMENT ON FUNCTION jsonb_delete(jsonb, boolean) IS 'delete boolean elements in second argument from first argument';
38
39 DROP OPERATOR IF EXISTS - (jsonb, boolean);
40 CREATE OPERATOR - ( PROCEDURE = jsonb_delete, LEFTARG = jsonb, RIGHTARG = boolean);
41 COMMENT ON OPERATOR - (jsonb, boolean) IS 'delete boolean elements from left operand';
42
43 --
44
45 CREATE OR REPLACE FUNCTION jsonb_delete(jsonb, text[]) 
46 RETURNS jsonb
47         AS 'MODULE_PATHNAME', 'jsonb_delete_keys'
48 LANGUAGE C IMMUTABLE STRICT;
49 COMMENT ON FUNCTION jsonb_delete(jsonb, text[]) IS 'delete keys or string values in second argument from first argument';
50
51 DROP OPERATOR IF EXISTS - (jsonb, text[]);
52 CREATE OPERATOR - ( PROCEDURE = jsonb_delete, LEFTARG = jsonb, RIGHTARG = text[]);
53 COMMENT ON OPERATOR - (jsonb, text[]) IS 'delete keys from left operand';
54
55 --
56
57 CREATE OR REPLACE FUNCTION jsonb_delete(jsonb, numeric[])
58 RETURNS jsonb
59     AS 'MODULE_PATHNAME', 'jsonb_delete_keys'
60 LANGUAGE C IMMUTABLE STRICT;
61 COMMENT ON FUNCTION jsonb_delete(jsonb, numeric[]) IS 'delete numeric elements in second argument from first argument';
62
63 DROP OPERATOR IF EXISTS - (jsonb, numeric[]);
64 CREATE OPERATOR - ( PROCEDURE = jsonb_delete, LEFTARG = jsonb, RIGHTARG = numeric[]);
65 COMMENT ON OPERATOR - (jsonb, numeric[]) IS 'delete numeric elements from left operand';
66
67 --
68
69 CREATE OR REPLACE FUNCTION jsonb_delete(jsonb, boolean[])
70 RETURNS jsonb
71     AS 'MODULE_PATHNAME', 'jsonb_delete_keys'
72 LANGUAGE C IMMUTABLE STRICT;
73 COMMENT ON FUNCTION jsonb_delete(jsonb, boolean[]) IS 'delete boolean elements in second argument from first argument';
74
75 DROP OPERATOR IF EXISTS - (jsonb, boolean[]);
76 CREATE OPERATOR - ( PROCEDURE = jsonb_delete, LEFTARG = jsonb, RIGHTARG = boolean[]);
77 COMMENT ON OPERATOR - (jsonb, boolean[]) IS 'delete boolean elements from left operand';
78
79 --
80
81 CREATE OR REPLACE FUNCTION jsonb_delete(jsonb, jsonb) 
82 RETURNS jsonb
83         AS 'MODULE_PATHNAME', 'jsonb_delete_jsonb'
84 LANGUAGE C IMMUTABLE STRICT;
85 COMMENT ON FUNCTION jsonb_delete(jsonb, jsonb) IS 'delete matching pairs in second argument from first argument';
86
87 DROP OPERATOR IF EXISTS - (jsonb, jsonb);
88 CREATE OPERATOR - ( PROCEDURE = jsonb_delete, LEFTARG = jsonb, RIGHTARG = jsonb);
89 COMMENT ON OPERATOR - (jsonb, jsonb) IS 'delete matching pairs from left operand';
90
91 --
92
93 CREATE OR REPLACE FUNCTION jsonb_concat(jsonb, jsonb)
94 RETURNS jsonb
95     AS 'MODULE_PATHNAME', 'jsonb_concat_jsonb'
96 LANGUAGE C IMMUTABLE STRICT;
97 COMMENT ON FUNCTION jsonb_concat(jsonb, jsonb) IS 'concatenate first and second jsonb arguments';
98
99 DROP OPERATOR IF EXISTS || (jsonb, jsonb);
100 CREATE OPERATOR || ( PROCEDURE = jsonb_concat, LEFTARG = jsonb, RIGHTARG = jsonb);
101 COMMENT ON OPERATOR || (jsonb, jsonb) IS 'concatenate jsonb types';
102
103 --
104
105 CREATE OR REPLACE FUNCTION jsonb_replace(jsonb, jsonb)
106 RETURNS jsonb
107     AS 'MODULE_PATHNAME', 'jsonb_replace_jsonb'
108 LANGUAGE C IMMUTABLE STRICT;
109 COMMENT ON FUNCTION jsonb_replace(jsonb, jsonb) IS 'replace occurrences of second jsonb argument in first';
110
111 DROP OPERATOR IF EXISTS #= (jsonb, jsonb);
112 CREATE OPERATOR #= ( PROCEDURE = jsonb_replace, LEFTARG = jsonb, RIGHTARG = jsonb);
113 COMMENT ON OPERATOR #= (jsonb, jsonb) IS 'replace values for matching keys in jsonb types';
114
115 -- 1.1 Extra functions start here
116
117 CREATE OR REPLACE FUNCTION jsonb_delete_path(jsonb, text[])
118 RETURNS jsonb
119     AS 'MODULE_PATHNAME', 'jsonb_delete_path'
120 LANGUAGE C IMMUTABLE STRICT;
121 COMMENT ON FUNCTION jsonb_delete_path(jsonb, text[]) IS 'follow path of keys in order supplied in array and delete end-point key value pair from jsonb';
122
123 DROP OPERATOR IF EXISTS #- (jsonb, text[]);
124 CREATE OPERATOR #- ( PROCEDURE = jsonb_delete_path, LEFTARG = jsonb, RIGHTARG = text[]);
125 COMMENT ON OPERATOR #- (jsonb, text[]) IS 'delete key path from left operand';
126
127 --
128
129 CREATE OR REPLACE FUNCTION jsonb_replace_path(jsonb, text[], jsonb)
130 RETURNS jsonb
131     AS 'MODULE_PATHNAME', 'jsonb_replace_path'
132 LANGUAGE C IMMUTABLE STRICT;
133 COMMENT ON FUNCTION jsonb_replace_path(jsonb, text[], jsonb) IS 'follow path of keys in order supplied in array and replace end-point key value pair with supplied jsonb';
134
135 --
136
137 CREATE OR REPLACE FUNCTION jsonb_append_path(jsonb, text[], jsonb)
138 RETURNS jsonb
139     AS 'MODULE_PATHNAME', 'jsonb_append_path'
140 LANGUAGE C IMMUTABLE STRICT;
141 COMMENT ON FUNCTION jsonb_append_path(jsonb, text[], jsonb) IS 'follow path of keys in order supplied in array and append to end-point key value pair with supplied jsonb';