1
0
mirror of https://github.com/mariadb-corporation/mariadb-columnstore-engine.git synced 2026-10-23 21:49:05 +03:00
Files
Leonid Fedorov 33ca1e8b5d feat(joblist,pp): MCOL-5983 Add COMPARE_BITMASK primitive filter for bitwise AND pattern optimization (#3906)
* MCOL-5983: Add COMPARE_BITMASK primitive filter for bitwise AND optimization

Add support for pushing down (col & mask) = mask patterns as primitive
filters instead of evaluating them in FE1 (Function Expression Group 1).

This optimization significantly improves query performance for Bloom filter
lookups commonly used in chemical/molecular databases where a signature
column stores precomputed bit patterns.

Changes:
- Add COMPARE_BITMASK (0x20) comparison operator to primitivemsg.h
- Implement scalar and SIMD handling for COMPARE_BITMASK in column.cpp
- Add pattern recognition for (col & mask) = mask in doSimpleFilter()
- Add cost-based filter reordering in walkTree() to prioritize cheap
  bitmask filters before expensive LIKE filters

Performance results (21M rows, TEXT column with LIKE, BIGINT signature):
- Bitmask filter alone: 6s -> 0.23s (26x faster)
- LIKE alone: 8.2s (baseline, scans all rows)
- LIKE + bitmask combined: 8.2s -> 1.0s (8x faster)

The bitmask filter now executes as a primitive filter with SIMD
acceleration, filtering out non-matching rows before the expensive
dictionary lookup required for LIKE on TEXT columns.

* review comments addressed
2026-01-27 05:43:51 +00:00
..
2025-05-20 18:22:59 +04:00