From c8bb43a9385cdb7a27f0702742a8d1e08a85befd Mon Sep 17 00:00:00 2001
From: Alexey Botchkov <holyfoot@askmonty.org>
Date: Tue, 11 Sep 2018 14:37:45 +0400
Subject: MDEV-17121 JSON_ARRAY_APPEND.

Extra comma added to the result when an json array is empty.
---
 strings/json_lib.c | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

(limited to 'strings')

diff --git a/strings/json_lib.c b/strings/json_lib.c
index f6b4f15732d..1c0ff4b5345 100644
--- a/strings/json_lib.c
+++ b/strings/json_lib.c
@@ -1197,6 +1197,31 @@ int json_skip_to_level(json_engine_t *j, int level)
 }
 
 
+#define json_skip_level(json_engine) \
+  json_skip_to_level((json_engine), (json_engine)->stack_p)
+
+
+/*
+  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))
-- 
cgit v1.2.1