1
0
mirror of https://github.com/mariadb-corporation/mariadb-columnstore-engine.git synced 2025-07-30 19:23:07 +03:00

AUX column scan(MCOL-5021) effectively disables vectorized scanning on

ARM platforms. This patch resolves this issue and unifies AUX column
processing at x86 and ARM using tempate class SimdProcessor.
The patch also replaces uint16_t mask previously used in column.cpp and
SimProcessor code with a native masks that platform uses, e.g. __m128i
or __m128 on x86 and variety of masks on ARM.
To unify the processing I introduced a new filtering Compare Operator - COMPARE_NULLEQ.
with a 'c1 IS NULL semantics'.
This commit is contained in:
NTH19
2022-08-26 19:37:40 +08:00
committed by Roman Nozdrin
parent 85a6121f76
commit 7d76dc4534
7 changed files with 1531 additions and 1407 deletions

View File

@ -42,13 +42,14 @@
// from blocksize.h
const int32_t DATA_BLOCK_SIZE = BLOCK_SIZE;
const int8_t COMPARE_NIL = 0x00;
const int8_t COMPARE_NIL = 0x00; // means c = NULL predicate
const int8_t COMPARE_LT = 0x01;
const int8_t COMPARE_EQ = 0x02;
const int8_t COMPARE_LE = (COMPARE_LT | COMPARE_EQ); // 0x03
const int8_t COMPARE_GT = 0x04;
const int8_t COMPARE_NE = (COMPARE_LT | COMPARE_GT); // 0x05
const int8_t COMPARE_GE = (COMPARE_GT | COMPARE_EQ); // 0x06
const int8_t COMPARE_NULLEQ = 0x07; // means c IS NULL(see column.cpp for details)
const int8_t COMPARE_NOT = 0x08;
const int8_t COMPARE_NLT = (COMPARE_LT | COMPARE_NOT); // 0x09
const int8_t COMPARE_NLE = (COMPARE_LE | COMPARE_NOT); // 0x0b
@ -884,4 +885,3 @@ struct LbidAtVer
#endif
#pragma pack(pop)