diff --git a/vm/vm.go b/vm/vm.go index 9f3bcb0..b6a3bea 100644 --- a/vm/vm.go +++ b/vm/vm.go @@ -942,7 +942,9 @@ func walkTernary(ctx expr.EvalContext, includer expr.Includer, node *expr.TriNod return value.NewBoolValue(false), true default: - u.Warnf("between not implemented for type %s %#v", a.Type().String(), node) + // Unsupported left-hand types (maps, slices, strings) don't match, silently like evalBinary: + // a filter is evaluated per entity, so a warning here fires once per entity. + return nil, false } default: u.Warnf("ternary node walk not implemented for node %#v", node) diff --git a/vm/vm_test.go b/vm/vm_test.go index e0c22ea..09567f8 100644 --- a/vm/vm_test.go +++ b/vm/vm_test.go @@ -137,6 +137,9 @@ var ( vmtall(`10 BETWEEN 20 AND true`, nil, parseOk, evalError), vmt(`created BETWEEN "12/18/2015" AND "12/18/2050"`, true, noError), vmt(`created BETWEEN "now-50w" AND "12/18/2050"`, true, noError), + vmtall(`mt BETWEEN "12/18/2015" AND "12/18/2050"`, nil, parseOk, evalError), + vmtall(`mt NOT BETWEEN "12/18/2015" AND "12/18/2050"`, nil, parseOk, evalError), + vmtall(`urls BETWEEN "a" AND "z"`, nil, parseOk, evalError), // In: Multi Arg Tests vmtall(`10 IN ("a","b",10, 4.5)`, true, parseOk, evalError),