Skip to content

Commit b200d3b

Browse files
author
Nikita Glukhov
committed
Simplify json container pushing
1 parent 66e90cf commit b200d3b

File tree

1 file changed

+6
-38
lines changed

1 file changed

+6
-38
lines changed

src/backend/utils/adt/jsonfuncs.c

Lines changed: 6 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -4654,24 +4654,9 @@ setPathObject(JsonbIterator **it, Datum *path_elems, bool *path_nulls,
46544654
}
46554655

46564656
(void) pushJsonbValue(st, r, &k);
4657-
r = JsonbIteratorNext(it, &v, false);
4658-
(void) pushJsonbValue(st, r, r < WJB_BEGIN_ARRAY ? &v : NULL);
4659-
if (r == WJB_BEGIN_ARRAY || r == WJB_BEGIN_OBJECT)
4660-
{
4661-
int walking_level = 1;
4662-
4663-
while (walking_level != 0)
4664-
{
4665-
r = JsonbIteratorNext(it, &v, false);
4666-
4667-
if (r == WJB_BEGIN_ARRAY || r == WJB_BEGIN_OBJECT)
4668-
++walking_level;
4669-
if (r == WJB_END_ARRAY || r == WJB_END_OBJECT)
4670-
--walking_level;
4671-
4672-
(void) pushJsonbValue(st, r, r < WJB_BEGIN_ARRAY ? &v : NULL);
4673-
}
4674-
}
4657+
r = JsonbIteratorNext(it, &v, true);
4658+
Assert(r == WJB_VALUE);
4659+
(void) pushJsonbValue(st, r, &v);
46754660
}
46764661
}
46774662
}
@@ -4767,26 +4752,9 @@ setPathArray(JsonbIterator **it, Datum *path_elems, bool *path_nulls,
47674752
}
47684753
else
47694754
{
4770-
r = JsonbIteratorNext(it, &v, false);
4771-
4772-
(void) pushJsonbValue(st, r, r < WJB_BEGIN_ARRAY ? &v : NULL);
4773-
4774-
if (r == WJB_BEGIN_ARRAY || r == WJB_BEGIN_OBJECT)
4775-
{
4776-
int walking_level = 1;
4777-
4778-
while (walking_level != 0)
4779-
{
4780-
r = JsonbIteratorNext(it, &v, false);
4781-
4782-
if (r == WJB_BEGIN_ARRAY || r == WJB_BEGIN_OBJECT)
4783-
++walking_level;
4784-
if (r == WJB_END_ARRAY || r == WJB_END_OBJECT)
4785-
--walking_level;
4786-
4787-
(void) pushJsonbValue(st, r, r < WJB_BEGIN_ARRAY ? &v : NULL);
4788-
}
4789-
}
4755+
r = JsonbIteratorNext(it, &v, true);
4756+
Assert(r == WJB_ELEM);
4757+
(void) pushJsonbValue(st, r, &v);
47904758

47914759
if ((op_type & JB_PATH_CREATE_OR_INSERT) && !done &&
47924760
level == path_len - 1 && i == nelems - 1)

0 commit comments

Comments
 (0)