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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy