tarantool / crud

Easy assess to data stored in vshard cluster
BSD 2-Clause "Simplified" License
40 stars 14 forks source link

scan: fix nil filters #425

Closed DifferentialOrange closed 8 months ago

DifferentialOrange commented 8 months ago

Before this patch, some nil conditions failed with internal filter library build error. This patch fixes this internal error, as well as normalize filters to behave similar to core indexes.

The logic in core Tarantool select is as follows. nil condition in index select is an absence of condition, thus all data is returned disregarding the condition (condition may affect the order). box.NULL condition is a condition for the null value -- in case of EQ, only records with null index value are returned, in case of GT, all non-null values are returned since nulls are in the beginning of an index and so on. nils and box.NULLs in tuple are both satisfy box.NULL equity.

After this patch, nil filter condition is treated as no condition. This is a breaking change since conditions for '>' and '<' operator with nil operand had resulted with empty response before this patch. But since it was inconsistent with scanning index conditions and wasn't intentional, we change it here.

Closes #422