Skip to content

Commit bb319e6

Browse files
author
Nikita Glukhov
committed
Remove generic gson functions
1 parent 867b8c8 commit bb319e6

File tree

2 files changed

+0
-212
lines changed

2 files changed

+0
-212
lines changed

src/backend/utils/adt/json_generic.c

Lines changed: 0 additions & 206 deletions
Original file line numberDiff line numberDiff line change
@@ -18,89 +18,6 @@
1818
static Json *JsonExpand(Json *tmp, Datum value, bool freeValue,
1919
JsonContainerOps *ops);
2020

21-
JsonValue *
22-
JsonValueCopy(JsonValue *res, const JsonValue *val)
23-
{
24-
check_stack_depth();
25-
26-
if (!res)
27-
res = (JsonValue *) palloc(sizeof(JsonValue));
28-
29-
res->type = val->type;
30-
31-
switch (val->type)
32-
{
33-
case jbvNull:
34-
break;
35-
36-
case jbvBool:
37-
res->val.boolean = val->val.boolean;
38-
break;
39-
40-
case jbvString:
41-
{ /* copy string values in the current context */
42-
char *buf = palloc(val->val.string.len + 1);
43-
memcpy(buf, val->val.string.val, val->val.string.len);
44-
buf[val->val.string.len] = 0;
45-
res->val.string.val = buf;
46-
res->val.string.len = val->val.string.len;
47-
break;
48-
}
49-
50-
case jbvNumeric:
51-
/* same for numeric */
52-
res->val.numeric =
53-
DatumGetNumeric(DirectFunctionCall1(numeric_uplus,
54-
NumericGetDatum(val->val.numeric)));
55-
break;
56-
57-
case jbvArray:
58-
{
59-
int i;
60-
61-
res->val.array = val->val.array;
62-
res->val.array.elems = (JsonValue *)
63-
palloc(sizeof(JsonValue) * val->val.array.nElems);
64-
65-
for (i = 0; i < val->val.array.nElems; i++)
66-
JsonValueCopy(&res->val.array.elems[i],
67-
&val->val.array.elems[i]);
68-
69-
break;
70-
}
71-
72-
case jbvObject:
73-
{
74-
int i;
75-
76-
res->val.object = val->val.object;
77-
res->val.object.pairs = (JsonPair *)
78-
palloc(sizeof(JsonPair) * val->val.object.nPairs);
79-
80-
for (i = 0; i < val->val.object.nPairs; i++)
81-
{
82-
res->val.object.pairs[i].order = val->val.object.pairs[i].order;
83-
JsonValueCopy(&res->val.object.pairs[i].key,
84-
&val->val.object.pairs[i].key);
85-
JsonValueCopy(&res->val.object.pairs[i].value,
86-
&val->val.object.pairs[i].value);
87-
}
88-
89-
break;
90-
}
91-
92-
case jbvBinary:
93-
res->val.binary = val->val.binary;
94-
res->val.binary.data = JsonCopy(val->val.binary.data);
95-
break;
96-
97-
default:
98-
elog(ERROR, "unknown json value type %d", val->type);
99-
}
100-
101-
return res;
102-
}
103-
10421
JsonValue *
10522
JsonExtractScalar(JsonContainer *jc, JsonValue *scalar)
10623
{
@@ -142,129 +59,6 @@ JsonValueUnwrap(const JsonValue *val, JsonValue *valbuf)
14259
return val;
14360
}
14461

145-
static inline JsonValue *
146-
jsonFindKeyInObjectInternal(JsonContainer *obj, const char *key, int len,
147-
bool last)
148-
{
149-
JsonValue *res = NULL;
150-
JsonValue jbv;
151-
JsonIterator *it;
152-
JsonIteratorToken tok;
153-
154-
Assert(JsonContainerIsObject(obj));
155-
156-
it = JsonIteratorInit(obj);
157-
158-
while ((tok = JsonIteratorNext(&it, &jbv, true)) != WJB_DONE)
159-
{
160-
if (tok == WJB_KEY &&
161-
!lengthCompareJsonbString(key, len,
162-
jbv.val.string.val, jbv.val.string.len))
163-
{
164-
if (!last || !res)
165-
res = palloc(sizeof(JsonValue));
166-
167-
tok = JsonIteratorNext(&it, res, true);
168-
Assert(tok == WJB_VALUE);
169-
170-
if (last)
171-
continue;
172-
173-
JsonIteratorFree(it);
174-
break;
175-
}
176-
}
177-
178-
return res;
179-
}
180-
181-
JsonValue *
182-
jsonFindKeyInObject(JsonContainer *obj, const char *key, int len)
183-
{
184-
return jsonFindKeyInObjectInternal(obj, key, len, false);
185-
}
186-
187-
JsonValue *
188-
jsonFindLastKeyInObject(JsonContainer *obj, const char *key, int len)
189-
{
190-
return jsonFindKeyInObjectInternal(obj, key, len, true);
191-
}
192-
193-
JsonValue *
194-
jsonFindValueInArray(JsonContainer *array, const JsonValue *elem)
195-
{
196-
JsonValue *val = palloc(sizeof(JsonValue));
197-
JsonIterator *it;
198-
JsonIteratorToken tok;
199-
200-
Assert(JsonContainerIsArray(array));
201-
Assert(IsAJsonbScalar(elem));
202-
203-
it = JsonIteratorInit(array);
204-
205-
while ((tok = JsonIteratorNext(&it, val, true)) != WJB_DONE)
206-
{
207-
if (tok == WJB_ELEM && val->type == elem->type &&
208-
equalsJsonbScalarValue(val, elem))
209-
{
210-
JsonIteratorFree(it);
211-
return val;
212-
}
213-
}
214-
215-
pfree(val);
216-
return NULL;
217-
}
218-
219-
JsonValue *
220-
jsonGetArrayElement(JsonContainer *array, uint32 index)
221-
{
222-
JsonValue *val = palloc(sizeof(JsonValue));
223-
JsonIterator *it;
224-
JsonIteratorToken tok;
225-
226-
Assert(JsonContainerIsArray(array));
227-
228-
it = JsonIteratorInit(array);
229-
230-
while ((tok = JsonIteratorNext(&it, val, true)) != WJB_DONE)
231-
{
232-
if (tok == WJB_ELEM)
233-
{
234-
if (index-- == 0)
235-
{
236-
JsonIteratorFree(it);
237-
return val;
238-
}
239-
}
240-
}
241-
242-
pfree(val);
243-
244-
return NULL;
245-
}
246-
247-
uint32
248-
jsonGetArraySize(JsonContainer *array)
249-
{
250-
JsonValue val;
251-
JsonIterator *it;
252-
JsonIteratorToken tok;
253-
uint32 size = 0;
254-
255-
Assert(JsonContainerIsArray(array));
256-
257-
it = JsonIteratorInit(array);
258-
259-
while ((tok = JsonIteratorNext(&it, &val, true)) != WJB_DONE)
260-
{
261-
if (tok == WJB_ELEM)
262-
size++;
263-
}
264-
265-
return size;
266-
}
267-
26862
JsonValue *
26963
JsonToJsonValue(Json *json, JsonValue *jv)
27064
{

src/include/utils/json_generic.h

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -301,12 +301,6 @@ extern char *JsonbToCStringIndent(StringInfo out, JsonContainer *in,
301301
#define JsonbToCString(out, in, estimated_len) \
302302
JsonToCStringExt(out, in, estimated_len)
303303

304-
extern JsonValue *jsonFindKeyInObject(JsonContainer *obj, const char *key, int len);
305-
extern JsonValue *jsonFindLastKeyInObject(JsonContainer *obj, const char *key, int len);
306-
extern JsonValue *jsonFindValueInArray(JsonContainer *array, const JsonValue *elem);
307-
extern uint32 jsonGetArraySize(JsonContainer *array);
308-
extern JsonValue *jsonGetArrayElement(JsonContainer *array, uint32 index);
309-
310304
extern bool JsonValueScalarEquals(const JsonValue *aScalar,
311305
const JsonValue *bScalar);
312306

0 commit comments

Comments
 (0)