mirror of
https://github.com/MariaDB/server.git
synced 2025-04-10 01:05:48 +02:00
MDEV-27972: Unexpected behavior with negative zero (-0) in
JSON Path Analysis: When we have '-' followed by 0, then the state is changed to JE_SYN, meaning syntax error. Fix: Change the state to PS_INT instead, because we are reading '0' next (integer) and it is not a syntax error.
This commit is contained in:
parent
dfcbb30a92
commit
abe9712194
3 changed files with 27 additions and 1 deletions
|
@ -2013,5 +2013,21 @@ SELECT JSON_VALUE(@json, '$.A[last-1][last-1].key1');
|
|||
JSON_VALUE(@json, '$.A[last-1][last-1].key1')
|
||||
123
|
||||
#
|
||||
# MDEV-27972: Unexpected behavior with negative zero (-0) in JSON Path
|
||||
#
|
||||
SET @json='{ "x": [0,1]}';
|
||||
SELECT JSON_VALUE(@json,'$.x[last]');
|
||||
JSON_VALUE(@json,'$.x[last]')
|
||||
1
|
||||
SELECT JSON_VALUE(@json,'$.x[last-0]');
|
||||
JSON_VALUE(@json,'$.x[last-0]')
|
||||
1
|
||||
SELECT JSON_VALUE(@json,'$.x[-0]');
|
||||
JSON_VALUE(@json,'$.x[-0]')
|
||||
0
|
||||
SELECT JSON_VALUE(@json,'$.x[0]');
|
||||
JSON_VALUE(@json,'$.x[0]')
|
||||
0
|
||||
#
|
||||
# End of 10.9 Test
|
||||
#
|
||||
|
|
|
@ -1306,6 +1306,16 @@ SET @json='{
|
|||
SELECT JSON_VALUE(@json, '$.A[-2][-2].key1');
|
||||
SELECT JSON_VALUE(@json, '$.A[last-1][last-1].key1');
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-27972: Unexpected behavior with negative zero (-0) in JSON Path
|
||||
--echo #
|
||||
|
||||
SET @json='{ "x": [0,1]}';
|
||||
SELECT JSON_VALUE(@json,'$.x[last]');
|
||||
SELECT JSON_VALUE(@json,'$.x[last-0]');
|
||||
SELECT JSON_VALUE(@json,'$.x[-0]');
|
||||
SELECT JSON_VALUE(@json,'$.x[0]');
|
||||
|
||||
--echo #
|
||||
--echo # End of 10.9 Test
|
||||
--echo #
|
||||
|
|
|
@ -1079,7 +1079,7 @@ static int json_path_transitions[N_PATH_STATES][N_PATH_CLASSES]=
|
|||
/* AWD */ { JE_EOS, JE_SYN, JE_SYN, JE_SYN, PS_PT, JE_SYN,JE_SYN, JE_SYN,
|
||||
JE_SYN, JE_SYN, JE_SYN, PS_AS, JE_SYN, JE_SYN, JE_SYN,
|
||||
JE_NOT_JSON_CHR, JE_BAD_CHR},
|
||||
/* NEG */ { JE_EOS, JE_SYN, JE_SYN, JE_SYN, JE_SYN, JE_SYN, JE_SYN,JE_SYN,
|
||||
/* NEG */ { JE_EOS, JE_SYN, JE_SYN, JE_SYN, JE_SYN, JE_SYN, JE_SYN, PS_INT,
|
||||
PS_INT, JE_SYN, JE_SYN, JE_SYN, JE_SYN, JE_SYN, JE_SYN,
|
||||
JE_NOT_JSON_CHR, JE_BAD_CHR},
|
||||
/* Z */ { JE_EOS, JE_SYN, JE_SYN, JE_SYN, PS_PT, JE_SYN,JE_SYN, JE_SYN,
|
||||
|
|
Loading…
Add table
Reference in a new issue