diff --git a/enginetest/queries/script_queries.go b/enginetest/queries/script_queries.go index ce7b74f832..00a51d0214 100644 --- a/enginetest/queries/script_queries.go +++ b/enginetest/queries/script_queries.go @@ -7837,6 +7837,12 @@ where {123}, }, }, + { + Query: "select * from t where ((true and -1) >= 0);", + Expected: []sql.Row{ + {123}, + }, + }, }, }, { diff --git a/sql/analyzer/optimization_rules.go b/sql/analyzer/optimization_rules.go index 87472f3eae..c1e86e0b8d 100644 --- a/sql/analyzer/optimization_rules.go +++ b/sql/analyzer/optimization_rules.go @@ -264,11 +264,11 @@ func simplifyFilters(ctx *sql.Context, a *Analyzer, node sql.Node, scope *plan.S return e.RightChild, transform.NewTree, nil } - if isTrue(e.LeftChild) { + if isTrue(e.LeftChild) && types.IsBoolean(e.RightChild.Type()) { return e.RightChild, transform.NewTree, nil } - if isTrue(e.RightChild) { + if isTrue(e.RightChild) && types.IsBoolean(e.LeftChild.Type()) { return e.LeftChild, transform.NewTree, nil }