mirror of
https://github.com/minio/minio.git
synced 2025-11-21 02:09:08 -05:00
Fix precendence bug in S3Select SQL IN clauses (#18708)
Fixes a precendence issue in SQL Select where `a in b and c = 3` was parsed as `a in (b and c = 3)`. Fixes #18682
This commit is contained in:
committed by
GitHub
parent
8bd4f6568b
commit
496027b589
@@ -289,13 +289,23 @@ func (e *In) evalInNode(r Record, lhs *Value, tableAlias string) (*Value, error)
|
||||
}
|
||||
|
||||
var rhs Value
|
||||
if elt := e.ListExpression; elt != nil {
|
||||
eltVal, err := elt.evalNode(r, tableAlias)
|
||||
var err error
|
||||
var eltVal *Value
|
||||
switch {
|
||||
case e.JPathExpr != nil:
|
||||
eltVal, err = e.JPathExpr.evalNode(r, tableAlias)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
rhs = *eltVal
|
||||
case e.ListExpr != nil:
|
||||
eltVal, err = e.ListExpr.evalNode(r, tableAlias)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
default:
|
||||
return nil, errInvalidASTNode
|
||||
}
|
||||
rhs = *eltVal
|
||||
|
||||
// If RHS is array compare each element.
|
||||
if arr, ok := rhs.ToArray(); ok {
|
||||
|
||||
Reference in New Issue
Block a user