cai.zhang a7713df18d
fix: Correctly parse the minimum value of int64 (#41009)
issue: #40729 

Current approach to parse negative numbers is first parse the numeric
part and then multiply the result by -1(mainly to distinguish the
precedence of the negative sign and the subtraction operator). However,
for the minimum value of int64(`-9223372036854775808`), the value
`9223372036854775808` already exceeds the representable range of int64.
As a result, parsing error occurs.
Therefore, use a specific rule to match `-9223372036854775808`.

---------

Signed-off-by: Cai Zhang <cai.zhang@zilliz.com>
2025-04-08 16:36:26 +08:00

118 lines
6.4 KiB
Plaintext

token literal names:
null
'('
')'
'['
','
']'
'{'
'}'
'<'
'<='
'>'
'>='
'=='
'!='
null
null
null
null
null
'+'
'-'
'*'
'/'
'%'
'**'
'<<'
'>>'
'&'
'|'
'^'
null
null
null
null
'~'
null
null
null
null
null
null
null
null
null
null
null
null
null
null
'$meta'
null
null
null
null
token symbolic names:
null
null
null
null
null
null
LBRACE
RBRACE
LT
LE
GT
GE
EQ
NE
LIKE
EXISTS
TEXTMATCH
PHRASEMATCH
RANDOMSAMPLE
ADD
SUB
MUL
DIV
MOD
POW
SHL
SHR
BAND
BOR
BXOR
AND
OR
ISNULL
ISNOTNULL
BNOT
NOT
IN
EmptyArray
JSONContains
JSONContainsAll
JSONContainsAny
ArrayContains
ArrayContainsAll
ArrayContainsAny
ArrayLength
BooleanConstant
IntegerConstant
FloatingConstant
Identifier
Meta
StringLiteral
JSONIdentifier
Whitespace
Newline
rule names:
expr
atn:
[4, 1, 53, 167, 2, 0, 7, 0, 1, 0, 1, 0, 3, 0, 5, 8, 0, 1, 0, 1, 0, 3, 0, 9, 8, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 5, 0, 27, 8, 0, 10, 0, 12, 0, 30, 9, 0, 1, 0, 3, 0, 33, 8, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 3, 0, 53, 8, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 5, 0, 93, 8, 0, 10, 0, 12, 0, 96, 9, 0, 1, 0, 3, 0, 99, 8, 0, 3, 0, 101, 8, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 3, 0, 108, 8, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 3, 0, 124, 8, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 5, 0, 162, 8, 0, 10, 0, 12, 0, 165, 9, 0, 1, 0, 0, 1, 0, 1, 0, 0, 13, 1, 0, 19, 20, 1, 0, 48, 49, 2, 0, 19, 20, 34, 35, 2, 0, 38, 38, 41, 41, 2, 0, 39, 39, 42, 42, 2, 0, 40, 40, 43, 43, 2, 0, 48, 48, 51, 51, 1, 0, 21, 23, 1, 0, 25, 26, 1, 0, 8, 9, 1, 0, 10, 11, 1, 0, 8, 11, 1, 0, 12, 13, 210, 0, 107, 1, 0, 0, 0, 2, 4, 6, 0, -1, 0, 3, 5, 7, 0, 0, 0, 4, 3, 1, 0, 0, 0, 4, 5, 1, 0, 0, 0, 5, 6, 1, 0, 0, 0, 6, 108, 5, 46, 0, 0, 7, 9, 7, 0, 0, 0, 8, 7, 1, 0, 0, 0, 8, 9, 1, 0, 0, 0, 9, 10, 1, 0, 0, 0, 10, 108, 5, 47, 0, 0, 11, 108, 5, 45, 0, 0, 12, 108, 5, 50, 0, 0, 13, 108, 7, 1, 0, 0, 14, 108, 5, 51, 0, 0, 15, 16, 5, 6, 0, 0, 16, 17, 5, 48, 0, 0, 17, 108, 5, 7, 0, 0, 18, 19, 5, 1, 0, 0, 19, 20, 3, 0, 0, 0, 20, 21, 5, 2, 0, 0, 21, 108, 1, 0, 0, 0, 22, 23, 5, 3, 0, 0, 23, 28, 3, 0, 0, 0, 24, 25, 5, 4, 0, 0, 25, 27, 3, 0, 0, 0, 26, 24, 1, 0, 0, 0, 27, 30, 1, 0, 0, 0, 28, 26, 1, 0, 0, 0, 28, 29, 1, 0, 0, 0, 29, 32, 1, 0, 0, 0, 30, 28, 1, 0, 0, 0, 31, 33, 5, 4, 0, 0, 32, 31, 1, 0, 0, 0, 32, 33, 1, 0, 0, 0, 33, 34, 1, 0, 0, 0, 34, 35, 5, 5, 0, 0, 35, 108, 1, 0, 0, 0, 36, 108, 5, 37, 0, 0, 37, 38, 5, 15, 0, 0, 38, 108, 3, 0, 0, 27, 39, 40, 5, 16, 0, 0, 40, 41, 5, 1, 0, 0, 41, 42, 5, 48, 0, 0, 42, 43, 5, 4, 0, 0, 43, 44, 5, 50, 0, 0, 44, 108, 5, 2, 0, 0, 45, 46, 5, 17, 0, 0, 46, 47, 5, 1, 0, 0, 47, 48, 5, 48, 0, 0, 48, 49, 5, 4, 0, 0, 49, 52, 5, 50, 0, 0, 50, 51, 5, 4, 0, 0, 51, 53, 3, 0, 0, 0, 52, 50, 1, 0, 0, 0, 52, 53, 1, 0, 0, 0, 53, 54, 1, 0, 0, 0, 54, 108, 5, 2, 0, 0, 55, 56, 5, 18, 0, 0, 56, 57, 5, 1, 0, 0, 57, 58, 3, 0, 0, 0, 58, 59, 5, 2, 0, 0, 59, 108, 1, 0, 0, 0, 60, 61, 7, 2, 0, 0, 61, 108, 3, 0, 0, 21, 62, 63, 7, 3, 0, 0, 63, 64, 5, 1, 0, 0, 64, 65, 3, 0, 0, 0, 65, 66, 5, 4, 0, 0, 66, 67, 3, 0, 0, 0, 67, 68, 5, 2, 0, 0, 68, 108, 1, 0, 0, 0, 69, 70, 7, 4, 0, 0, 70, 71, 5, 1, 0, 0, 71, 72, 3, 0, 0, 0, 72, 73, 5, 4, 0, 0, 73, 74, 3, 0, 0, 0, 74, 75, 5, 2, 0, 0, 75, 108, 1, 0, 0, 0, 76, 77, 7, 5, 0, 0, 77, 78, 5, 1, 0, 0, 78, 79, 3, 0, 0, 0, 79, 80, 5, 4, 0, 0, 80, 81, 3, 0, 0, 0, 81, 82, 5, 2, 0, 0, 82, 108, 1, 0, 0, 0, 83, 84, 5, 44, 0, 0, 84, 85, 5, 1, 0, 0, 85, 86, 7, 6, 0, 0, 86, 108, 5, 2, 0, 0, 87, 88, 5, 48, 0, 0, 88, 100, 5, 1, 0, 0, 89, 94, 3, 0, 0, 0, 90, 91, 5, 4, 0, 0, 91, 93, 3, 0, 0, 0, 92, 90, 1, 0, 0, 0, 93, 96, 1, 0, 0, 0, 94, 92, 1, 0, 0, 0, 94, 95, 1, 0, 0, 0, 95, 98, 1, 0, 0, 0, 96, 94, 1, 0, 0, 0, 97, 99, 5, 4, 0, 0, 98, 97, 1, 0, 0, 0, 98, 99, 1, 0, 0, 0, 99, 101, 1, 0, 0, 0, 100, 89, 1, 0, 0, 0, 100, 101, 1, 0, 0, 0, 101, 102, 1, 0, 0, 0, 102, 108, 5, 2, 0, 0, 103, 104, 7, 6, 0, 0, 104, 108, 5, 32, 0, 0, 105, 106, 7, 6, 0, 0, 106, 108, 5, 33, 0, 0, 107, 2, 1, 0, 0, 0, 107, 8, 1, 0, 0, 0, 107, 11, 1, 0, 0, 0, 107, 12, 1, 0, 0, 0, 107, 13, 1, 0, 0, 0, 107, 14, 1, 0, 0, 0, 107, 15, 1, 0, 0, 0, 107, 18, 1, 0, 0, 0, 107, 22, 1, 0, 0, 0, 107, 36, 1, 0, 0, 0, 107, 37, 1, 0, 0, 0, 107, 39, 1, 0, 0, 0, 107, 45, 1, 0, 0, 0, 107, 55, 1, 0, 0, 0, 107, 60, 1, 0, 0, 0, 107, 62, 1, 0, 0, 0, 107, 69, 1, 0, 0, 0, 107, 76, 1, 0, 0, 0, 107, 83, 1, 0, 0, 0, 107, 87, 1, 0, 0, 0, 107, 103, 1, 0, 0, 0, 107, 105, 1, 0, 0, 0, 108, 163, 1, 0, 0, 0, 109, 110, 10, 22, 0, 0, 110, 111, 5, 24, 0, 0, 111, 162, 3, 0, 0, 23, 112, 113, 10, 20, 0, 0, 113, 114, 7, 7, 0, 0, 114, 162, 3, 0, 0, 21, 115, 116, 10, 19, 0, 0, 116, 117, 7, 0, 0, 0, 117, 162, 3, 0, 0, 20, 118, 119, 10, 18, 0, 0, 119, 120, 7, 8, 0, 0, 120, 162, 3, 0, 0, 19, 121, 123, 10, 17, 0, 0, 122, 124, 5, 35, 0, 0, 123, 122, 1, 0, 0, 0, 123, 124, 1, 0, 0, 0, 124, 125, 1, 0, 0, 0, 125, 126, 5, 36, 0, 0, 126, 162, 3, 0, 0, 18, 127, 128, 10, 11, 0, 0, 128, 129, 7, 9, 0, 0, 129, 130, 7, 6, 0, 0, 130, 131, 7, 9, 0, 0, 131, 162, 3, 0, 0, 12, 132, 133, 10, 10, 0, 0, 133, 134, 7, 10, 0, 0, 134, 135, 7, 6, 0, 0, 135, 136, 7, 10, 0, 0, 136, 162, 3, 0, 0, 11, 137, 138, 10, 9, 0, 0, 138, 139, 7, 11, 0, 0, 139, 162, 3, 0, 0, 10, 140, 141, 10, 8, 0, 0, 141, 142, 7, 12, 0, 0, 142, 162, 3, 0, 0, 9, 143, 144, 10, 7, 0, 0, 144, 145, 5, 27, 0, 0, 145, 162, 3, 0, 0, 8, 146, 147, 10, 6, 0, 0, 147, 148, 5, 29, 0, 0, 148, 162, 3, 0, 0, 7, 149, 150, 10, 5, 0, 0, 150, 151, 5, 28, 0, 0, 151, 162, 3, 0, 0, 6, 152, 153, 10, 4, 0, 0, 153, 154, 5, 30, 0, 0, 154, 162, 3, 0, 0, 5, 155, 156, 10, 3, 0, 0, 156, 157, 5, 31, 0, 0, 157, 162, 3, 0, 0, 4, 158, 159, 10, 26, 0, 0, 159, 160, 5, 14, 0, 0, 160, 162, 5, 50, 0, 0, 161, 109, 1, 0, 0, 0, 161, 112, 1, 0, 0, 0, 161, 115, 1, 0, 0, 0, 161, 118, 1, 0, 0, 0, 161, 121, 1, 0, 0, 0, 161, 127, 1, 0, 0, 0, 161, 132, 1, 0, 0, 0, 161, 137, 1, 0, 0, 0, 161, 140, 1, 0, 0, 0, 161, 143, 1, 0, 0, 0, 161, 146, 1, 0, 0, 0, 161, 149, 1, 0, 0, 0, 161, 152, 1, 0, 0, 0, 161, 155, 1, 0, 0, 0, 161, 158, 1, 0, 0, 0, 162, 165, 1, 0, 0, 0, 163, 161, 1, 0, 0, 0, 163, 164, 1, 0, 0, 0, 164, 1, 1, 0, 0, 0, 165, 163, 1, 0, 0, 0, 12, 4, 8, 28, 32, 52, 94, 98, 100, 107, 123, 161, 163]