fix: more accurate error processing for not element_filter (#48447)

issue: https://github.com/milvus-io/milvus/issues/48413
ref: https://github.com/milvus-io/milvus/issues/42148

Signed-off-by: SpadeA <tangchenjie1210@gmail.com>
This commit is contained in:
Spade A
2026-04-02 15:01:36 +08:00
committed by GitHub
parent 74f09d7ace
commit 4404d822ac
2 changed files with 6 additions and 0 deletions
@@ -1102,6 +1102,9 @@ func (v *ParserVisitor) VisitUnary(ctx *parser.UnaryContext) interface{} {
if isRandomSampleExpr(childExpr) {
return errors.New("random sample expression cannot be used in unary expression")
}
if isElementFilterExpr(childExpr) {
return errors.New("element filter expression cannot be used in unary expression")
}
if err := checkDirectComparisonBinaryField(toColumnInfo(childExpr)); err != nil {
return err
@@ -2563,6 +2563,9 @@ func TestExpr_ElementFilter(t *testing.T) {
`element_filter(struct_array, $[sub_int] > 1) || element_filter(struct_array, $[sub_str] == "test")`,
`element_filter(struct_array, $[sub_int] > 1) && Int64Field > 0`,
`not element_filter(struct_array, $[sub_int] > 1)`,
`!element_filter(struct_array, $[sub_int] > 1)`,
}
for _, expr := range invalidExprs {