You've already forked mariadb-columnstore-engine
mirror of
https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
synced 2025-07-30 19:23:07 +03:00
A join patch for MCOL-4527 (a performance hack) and MCOL-4539 (a bug fix)
- MCOL-4527 Simple query performace is degraded between 5.4 and 5.5 xxx_nopad_bin collations are now around 30% faster on simple queries like: SELECT * FROM t1 WHERE short_char_column_nopad_bin = 'literal' The gain is achieved by comparing two short CHAR values as uint64_t. Note, this patch does not affect xxx_bin collations! It wouldn't be correct to apply the same improvement for xxx_bin collations (i.e. with PAD SPACE attribute), because it would change the way how trailing spaces are compared. - MCOL-4539 WHERE short_char_column='literal' ignores the collation on a huge table Only the first thread used a correct collation when performing: WHERE short_char_char='literal' Other (15) threads used the server default collation, because the charsetNumber attribute was not copyed during cloning. - This patch also adds mtr/basic/suite.opt, so "mtr" can run without --extern.
This commit is contained in:
@ -707,6 +707,11 @@ inline bool colCompare(int64_t val1, int64_t val2, uint8_t COP, uint8_t rf,
|
||||
{
|
||||
if (!regex.used && !rf)
|
||||
{
|
||||
// A temporary hack for xxx_nopad_bin collations
|
||||
// TODO: MCOL-4534 Improve comparison performance in 8bit nopad_bin collations
|
||||
if ((typeHolder.getCharset().state & (MY_CS_BINSORT|MY_CS_NOPAD)) ==
|
||||
(MY_CS_BINSORT|MY_CS_NOPAD))
|
||||
return colCompare_(order_swap(val1), order_swap(val2), COP);
|
||||
utils::ConstString s1 = {reinterpret_cast<const char*>(&val1), 8};
|
||||
utils::ConstString s2 = {reinterpret_cast<const char*>(&val2), 8};
|
||||
return colCompareStr(typeHolder, COP, s1.rtrimZero(), s2.rtrimZero());
|
||||
|
Reference in New Issue
Block a user