@@ -4654,24 +4654,9 @@ setPathObject(JsonbIterator **it, Datum *path_elems, bool *path_nulls,
4654
4654
}
4655
4655
4656
4656
(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 );
4675
4660
}
4676
4661
}
4677
4662
}
@@ -4767,26 +4752,9 @@ setPathArray(JsonbIterator **it, Datum *path_elems, bool *path_nulls,
4767
4752
}
4768
4753
else
4769
4754
{
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 );
4790
4758
4791
4759
if ((op_type & JB_PATH_CREATE_OR_INSERT )&& !done &&
4792
4760
level == path_len - 1 && i == nelems - 1 )