summaryrefslogtreecommitdiff
path: root/strings/json_lib.c
diff options
context:
space:
mode:
authorSergei Golubchik <serg@mariadb.org>2018-09-26 20:49:51 +0200
committerSergei Golubchik <serg@mariadb.org>2018-09-28 16:37:06 +0200
commit57e0da50bbef8164635317785b67dd468a908327 (patch)
tree89d1ed179afce8b040c8f2dfcfe179042ff27b2e /strings/json_lib.c
parent7aba6f8f8853acd18d471793f8b72aa1412b8151 (diff)
parentdcbd51cee628d8d8fec9ff5476a6afc855b007aa (diff)
downloadmariadb-git-57e0da50bbef8164635317785b67dd468a908327.tar.gz
Merge branch '10.2' into 10.3
Diffstat (limited to 'strings/json_lib.c')
-rw-r--r--strings/json_lib.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/strings/json_lib.c b/strings/json_lib.c
index 139bd98742f..2b764e8827e 100644
--- a/strings/json_lib.c
+++ b/strings/json_lib.c
@@ -1195,6 +1195,27 @@ int json_skip_to_level(json_engine_t *j, int level)
}
+/*
+ works as json_skip_level() but also counts items on the current
+ level skipped.
+*/
+int json_skip_level_and_count(json_engine_t *j, int *n_items_skipped)
+{
+ int level= j->stack_p;
+
+ *n_items_skipped= 0;
+ while (json_scan_next(j) == 0)
+ {
+ if (j->stack_p < level)
+ return 0;
+ if (j->stack_p == level && j->state == JST_VALUE)
+ (*n_items_skipped)++;
+ }
+
+ return 1;
+}
+
+
int json_skip_key(json_engine_t *j)
{
if (json_read_value(j))