[Bug] Fix the bug of where condition a in ('A', 'B', 'V') and a in ('A') return error result (#5072)

And Refactor ColumnRangeValue and OlapScanNode

This patch mainly do the following:
- Fix issue #5071
- Change type_min in ColumnRangeValue as static
- Add Class of type_limit make code clear
- Refactor the function of normalize_in_and_eq_predicate
This commit is contained in:
HappenLee
2020-12-15 09:29:10 +08:00
committed by GitHub
parent 90e7f7005e
commit 0a0e46fd53
10 changed files with 398 additions and 267 deletions

View File

@ -29,6 +29,9 @@ namespace doris {
// The returned StringValue of all functions that return StringValue
// shares its buffer the parent.
struct StringValue {
const static char MIN_CHAR;
const static char MAX_CHAR;
static const int MAX_LENGTH = (1 << 30);
// TODO: change ptr to an offset relative to a contiguous memory block,
// so that we can send row batches between nodes without having to swizzle
@ -104,6 +107,10 @@ struct StringValue {
static StringValue from_string_val(const doris_udf::StringVal& sv) {
return StringValue(reinterpret_cast<char*>(sv.ptr), sv.len);
}
static StringValue min_string_val();
static StringValue max_string_val();
};
// This function must be called 'hash_value' to be picked up by boost.