Browse Source

MDEV-12324 Wrong result (phantom array value) on JSON_EXTRACT.

Fixed the path comparison.
pull/437/head
Alexey Botchkov 8 years ago
parent
commit
f701ac65e9
  1. 6
      mysql-test/r/func_json.result
  2. 6
      mysql-test/t/func_json.test
  3. 2
      strings/json_lib.c

6
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

6
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"}', '$[*]' );

2
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;
}

Loading…
Cancel
Save