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
Fix "column1 LIKE column2" for columns from same table (#2776)
This WHERE part will be performed with FilterCommand, which did not had LIKE operator implemented until now.
This commit is contained in:
12
mysql-test/columnstore/basic/r/mcol-5418.result
Normal file
12
mysql-test/columnstore/basic/r/mcol-5418.result
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
DROP DATABASE IF EXISTS mcol5418;
|
||||||
|
CREATE DATABASE mcol5418;
|
||||||
|
USE mcol5418;
|
||||||
|
CREATE TABLE tcs(d1 CHAR(6), d2 CHAR(6)) ENGINE=columnstore;
|
||||||
|
INSERT INTO tcs(d1, d2) VALUES ('a','a'), ('a', 'b');
|
||||||
|
SELECT 'columnstore like', d1, d2 FROM tcs WHERE (d1 LIKE d2);
|
||||||
|
columnstore like d1 d2
|
||||||
|
columnstore like a a
|
||||||
|
SELECT 'columnstore not like', d1, d2 FROM tcs WHERE (d1 NOT LIKE d2);
|
||||||
|
columnstore not like d1 d2
|
||||||
|
columnstore not like a b
|
||||||
|
DROP DATABASE mcol5418;
|
21
mysql-test/columnstore/basic/t/mcol-5418.test
Normal file
21
mysql-test/columnstore/basic/t/mcol-5418.test
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
# This test tests the (NOT) LIKE test in filters that is added
|
||||||
|
# to a FilterCommand in primproc.
|
||||||
|
# This is a very rare situation, yet somehow I managed to trigger it.
|
||||||
|
|
||||||
|
--disable_warnings
|
||||||
|
DROP DATABASE IF EXISTS mcol5418;
|
||||||
|
--enable_warnings
|
||||||
|
|
||||||
|
CREATE DATABASE mcol5418;
|
||||||
|
|
||||||
|
USE mcol5418;
|
||||||
|
|
||||||
|
CREATE TABLE tcs(d1 CHAR(6), d2 CHAR(6)) ENGINE=columnstore;
|
||||||
|
|
||||||
|
INSERT INTO tcs(d1, d2) VALUES ('a','a'), ('a', 'b');
|
||||||
|
|
||||||
|
SELECT 'columnstore like', d1, d2 FROM tcs WHERE (d1 LIKE d2);
|
||||||
|
|
||||||
|
SELECT 'columnstore not like', d1, d2 FROM tcs WHERE (d1 NOT LIKE d2);
|
||||||
|
|
||||||
|
DROP DATABASE mcol5418;
|
@ -488,6 +488,10 @@ void StrFilterCmd::setCompareFunc(uint32_t columns)
|
|||||||
static inline bool compareString(const datatypes::Charset& cs, const utils::ConstString& s0,
|
static inline bool compareString(const datatypes::Charset& cs, const utils::ConstString& s0,
|
||||||
const utils::ConstString& s1, uint8_t fBOP)
|
const utils::ConstString& s1, uint8_t fBOP)
|
||||||
{
|
{
|
||||||
|
if (fBOP == COMPARE_LIKE || fBOP == COMPARE_NLIKE)
|
||||||
|
{
|
||||||
|
return cs.like(fBOP == COMPARE_NLIKE, s0, s1);
|
||||||
|
}
|
||||||
int cmp = cs.strnncollsp(s0, s1);
|
int cmp = cs.strnncollsp(s0, s1);
|
||||||
switch (fBOP)
|
switch (fBOP)
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user