From f701ac65e951d373f62322147c785370fe7e4e25 Mon Sep 17 00:00:00 2001 From: Alexey Botchkov Date: Mon, 7 Aug 2017 13:46:45 +0400 Subject: [PATCH] MDEV-12324 Wrong result (phantom array value) on JSON_EXTRACT. Fixed the path comparison. --- mysql-test/r/func_json.result | 6 ++++++ mysql-test/t/func_json.test | 6 ++++++ strings/json_lib.c | 2 +- 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/mysql-test/r/func_json.result b/mysql-test/r/func_json.result index 997d3e4d062..894e46017f7 100644 --- a/mysql-test/r/func_json.result +++ b/mysql-test/r/func_json.result @@ -642,3 +642,9 @@ SELECT JSON_KEYS(f) FROM t1 ORDER BY 1; JSON_KEYS(f) NULL DROP TABLE t1; +SELECT JSON_EXTRACT( '{"foo":"bar"}', '$[*].*' ); +JSON_EXTRACT( '{"foo":"bar"}', '$[*].*' ) +NULL +SELECT JSON_EXTRACT( '{"foo":"bar"}', '$[*]' ); +JSON_EXTRACT( '{"foo":"bar"}', '$[*]' ) +NULL diff --git a/mysql-test/t/func_json.test b/mysql-test/t/func_json.test index 0fc8e97b284..0ce742aac11 100644 --- a/mysql-test/t/func_json.test +++ b/mysql-test/t/func_json.test @@ -296,3 +296,9 @@ INSERT INTO t1 VALUES (0); SELECT JSON_KEYS(f) FROM t1 ORDER BY 1; DROP TABLE t1; +# +# MDEV-12324 Wrong result (phantom array value) on JSON_EXTRACT. +# +SELECT JSON_EXTRACT( '{"foo":"bar"}', '$[*].*' ); +SELECT JSON_EXTRACT( '{"foo":"bar"}', '$[*]' ); + diff --git a/strings/json_lib.c b/strings/json_lib.c index 0e2a17b0ae0..7167b6a2a54 100644 --- a/strings/json_lib.c +++ b/strings/json_lib.c @@ -1756,7 +1756,7 @@ int json_path_parts_compare( goto step_fits; goto step_failed; } - if (a->n_item == 0) + if ((a->type & JSON_PATH_WILD) == 0 && a->n_item == 0) goto step_fits_autowrap; goto step_failed; }