From 284fc51bb76cebde725efa6810ed46aeb9825d14 Mon Sep 17 00:00:00 2001 From: Alexander Barkov Date: Fri, 21 May 2021 14:34:55 +0400 Subject: [PATCH] MCOL-4726 Wrong result of WHERE char1_col='A' --- datatypes/mcs_string.h | 10 +- dbcon/joblist/lbidlist.cpp | 20 +- .../ctype_cmp_char1_latin1_swedish_ci.result | 734 ++++++++++++++++++ .../ctype_cmp_char4_latin1_swedish_ci.result | 82 ++ .../ctype_cmp_char5_latin1_swedish_ci.result | 82 ++ .../r/ctype_cmp_varchar32_latin1_bin.result | 68 ++ ...type_cmp_varchar32_latin1_nopad_bin.result | 68 ++ ...ype_cmp_varchar32_latin1_swedish_ci.result | 82 ++ ...p_varchar32_latin1_swedish_nopad_ci.result | 82 ++ .../r/ctype_cmp_varchar32_utf8_bin.result | 68 ++ ...ctype_cmp_varchar32_utf8_general_ci.result | 98 +++ ...cmp_varchar32_utf8_general_nopad_ci.result | 98 +++ .../ctype_cmp_varchar32_utf8_nopad_bin.result | 68 ++ ...ctype_cmp_varchar32_utf8_unicode_ci.result | 98 +++ ...cmp_varchar32_utf8_unicode_nopad_ci.result | 98 +++ .../r/ctype_cmp_varchar4_latin1_bin.result | 68 ++ ...ctype_cmp_varchar4_latin1_nopad_bin.result | 68 ++ ...type_cmp_varchar4_latin1_swedish_ci.result | 82 ++ ...mp_varchar4_latin1_swedish_nopad_ci.result | 82 ++ .../r/ctype_cmp_varchar4_utf8_bin.result | 68 ++ .../ctype_cmp_varchar4_utf8_general_ci.result | 98 +++ ..._cmp_varchar4_utf8_general_nopad_ci.result | 98 +++ .../ctype_cmp_varchar4_utf8_nopad_bin.result | 68 ++ .../ctype_cmp_varchar4_utf8_unicode_ci.result | 98 +++ ..._cmp_varchar4_utf8_unicode_nopad_ci.result | 98 +++ .../t/ctype_cmp_char1_latin1_swedish_ci.test | 35 + .../t/ctype_cmp_char4_latin1_swedish_ci.test | 2 + .../t/ctype_cmp_char5_latin1_swedish_ci.test | 2 + .../columnstore/basic/t/ctype_cmp_create.inc | 34 + .../columnstore/basic/t/ctype_cmp_drop.inc | 1 + .../t/ctype_cmp_varchar32_latin1_bin.test | 2 + .../ctype_cmp_varchar32_latin1_nopad_bin.test | 2 + ...ctype_cmp_varchar32_latin1_swedish_ci.test | 2 + ...cmp_varchar32_latin1_swedish_nopad_ci.test | 2 + .../basic/t/ctype_cmp_varchar32_utf8_bin.test | 2 + .../ctype_cmp_varchar32_utf8_general_ci.test | 2 + ...e_cmp_varchar32_utf8_general_nopad_ci.test | 2 + .../t/ctype_cmp_varchar32_utf8_nopad_bin.test | 2 + .../ctype_cmp_varchar32_utf8_unicode_ci.test | 2 + ...e_cmp_varchar32_utf8_unicode_nopad_ci.test | 2 + .../t/ctype_cmp_varchar4_latin1_bin.test | 2 + .../ctype_cmp_varchar4_latin1_nopad_bin.test | 2 + .../ctype_cmp_varchar4_latin1_swedish_ci.test | 2 + ..._cmp_varchar4_latin1_swedish_nopad_ci.test | 2 + .../basic/t/ctype_cmp_varchar4_utf8_bin.test | 2 + .../t/ctype_cmp_varchar4_utf8_general_ci.test | 2 + ...pe_cmp_varchar4_utf8_general_nopad_ci.test | 2 + .../t/ctype_cmp_varchar4_utf8_nopad_bin.test | 2 + .../t/ctype_cmp_varchar4_utf8_unicode_ci.test | 2 + ...pe_cmp_varchar4_utf8_unicode_nopad_ci.test | 2 + primitives/linux-port/column.cpp | 12 +- primitives/primproc/filtercommand.cpp | 8 +- utils/joiner/tuplejoiner.cpp | 4 +- 53 files changed, 2695 insertions(+), 27 deletions(-) diff --git a/datatypes/mcs_string.h b/datatypes/mcs_string.h index 74527da15..60eabeee3 100644 --- a/datatypes/mcs_string.h +++ b/datatypes/mcs_string.h @@ -32,17 +32,17 @@ public: TCharShort(int64_t value) :mValue(value) { } - explicit operator utils::ConstString() const + utils::ConstString toConstString(uint32_t width) const { - utils::ConstString res = utils::ConstString((const char *) &mValue, 8); + utils::ConstString res = utils::ConstString((const char *) &mValue, width); return res.rtrimZero(); } - static int strnncollsp(const datatypes::Charset &cs, int64_t a, int64_t b) + static int strnncollsp(const datatypes::Charset &cs, int64_t a, int64_t b, uint32_t width) { datatypes::TCharShort sa(a); datatypes::TCharShort sb(b); - return cs.strnncollsp(static_cast(sa), - static_cast(sb)); + return cs.strnncollsp(sa.toConstString(width), + sb.toConstString(width)); } }; diff --git a/dbcon/joblist/lbidlist.cpp b/dbcon/joblist/lbidlist.cpp index 20a99a557..53bed0168 100644 --- a/dbcon/joblist/lbidlist.cpp +++ b/dbcon/joblist/lbidlist.cpp @@ -393,11 +393,11 @@ void LBIDList::UpdateMinMax(T min, T max, int64_t lbid, if (datatypes::isCharType(type.colDataType)) { datatypes::Charset cs(const_cast(type).getCharset()); - if (datatypes::TCharShort::strnncollsp(cs, min, mmp->min) < 0 || + if (datatypes::TCharShort::strnncollsp(cs, min, mmp->min, type.colWidth) < 0 || mmp->min == numeric_limits::max()) mmp->min = min; - if (datatypes::TCharShort::strnncollsp(cs, max, mmp->max) > 0 || + if (datatypes::TCharShort::strnncollsp(cs, max, mmp->max, type.colWidth) > 0 || mmp->max == numeric_limits::min()) mmp->max = max; } @@ -700,8 +700,8 @@ bool LBIDList::checkSingleValue(T min, T max, T value, // MCOL-641 LBIDList::CasualPartitionDataType() returns false if // width > 8 for a character type, so T cannot be int128_t here datatypes::Charset cs(const_cast(type).getCharset()); - return datatypes::TCharShort::strnncollsp(cs, value, min) >= 0 && - datatypes::TCharShort::strnncollsp(cs, value, max) <= 0; + return datatypes::TCharShort::strnncollsp(cs, value, min, type.colWidth) >= 0 && + datatypes::TCharShort::strnncollsp(cs, value, max, type.colWidth) <= 0; } else if (isUnsigned(type.colDataType)) { @@ -723,8 +723,8 @@ bool LBIDList::checkRangeOverlap(T min, T max, T tmin, T tmax, // MCOL-641 LBIDList::CasualPartitionDataType() returns false if // width > 8 for a character type, so T cannot be int128_t here datatypes::Charset cs(const_cast(type).getCharset()); - return datatypes::TCharShort::strnncollsp(cs, tmin, max) <= 0 && - datatypes::TCharShort::strnncollsp(cs, tmax, min) >= 0; + return datatypes::TCharShort::strnncollsp(cs, tmin, max, type.colWidth) <= 0 && + datatypes::TCharShort::strnncollsp(cs, tmax, min, type.colWidth) >= 0; } else if (isUnsigned(type.colDataType)) { @@ -852,12 +852,12 @@ bool LBIDList::CasualPartitionPredicate(const BRM::EMCasualPartition_t& cpRange, continue; } - if (bIsChar && 1 < ct.colWidth) + if (bIsChar) { datatypes::Charset cs(ct.charsetNumber); - utils::ConstString sMin((const char *) &cpRange.loVal, 8); - utils::ConstString sMax((const char *) &cpRange.hiVal, 8); - utils::ConstString sVal((const char *) &value, 8); + utils::ConstString sMin((const char *) &cpRange.loVal, ct.colWidth); + utils::ConstString sMax((const char *) &cpRange.hiVal, ct.colWidth); + utils::ConstString sVal((const char *) &value, ct.colWidth); scan = compareStr(cs, sMin.rtrimZero(), sMax.rtrimZero(), sVal.rtrimZero(), op, lcf); diff --git a/mysql-test/columnstore/basic/r/ctype_cmp_char1_latin1_swedish_ci.result b/mysql-test/columnstore/basic/r/ctype_cmp_char1_latin1_swedish_ci.result index dca6ea26d..132021487 100644 --- a/mysql-test/columnstore/basic/r/ctype_cmp_char1_latin1_swedish_ci.result +++ b/mysql-test/columnstore/basic/r/ctype_cmp_char1_latin1_swedish_ci.result @@ -1,4 +1,728 @@ +SELECT @mysqltest_file; +@mysqltest_file +ctype_cmp_char1_latin1_swedish_ci +SET @database=CONCAT('mcs_', @mysqltest_file); +EXECUTE IMMEDIATE CONCAT('DROP DATABASE IF EXISTS ', @database); +EXECUTE IMMEDIATE CONCAT('CREATE DATABASE ', @database); +CREATE PROCEDURE exec(query TEXT) +BEGIN +SELECT query AS ''; +EXECUTE IMMEDIATE query; +END; +$$ +CREATE PROCEDURE test01_execval(op VARCHAR(3) CHARACTER SET utf8, +val VARCHAR(64) CHARACTER SET utf8) +BEGIN +DECLARE query TEXT DEFAULT 'SELECT HEX(c1), QUOTE(c1) FROM t1 WHERE c1=''VAL'''; +SET query=REPLACE(query,'=',op); +SET query=REPLACE(query,'VAL', val); +CALL exec(query); +END; +$$ +CREATE PROCEDURE test01_populate(len1 INT, len2 INT) +BEGIN +-- Make sure the table is handled by a proper ENGINE +SELECT (SELECT engine FROM information_schema.tables WHERE (table_schema,table_name)=(@database,'t1')) = +@@default_storage_engine; +FOR i IN len1..len2 +DO +INSERT INTO t1 VALUES (RPAD('a',i)),(RPAD('A',i)); +-- LATIN SMALL LETTER A WITH TILDE +-- LATIN CAPITAL LETTER A WITH TILDE +INSERT INTO t1 VALUES (RPAD(_latin1 0xE3,i)),(RPAD(_latin1 0xC3,i)); +INSERT INTO t1 VALUES (RPAD('b',i)),(RPAD('B',i)); +END FOR; +-- MCOL-4454 "ORDER BY BINARY a" is not like in InnoDB +CALL exec('SELECT QUOTE(c1) FROM t1 ORDER BY c1, BINARY(c1) ASC'); +CALL exec('SELECT QUOTE(c1) FROM t1 ORDER BY c1, BINARY(c1) DESC'); +END; +$$ +CREATE PROCEDURE test01_field_literal_op(len1 INT, +len2 INT, +op VARCHAR(3) CHARACTER SET utf8) +BEGIN +FOR i IN len1..len2 +DO +CALL test01_execval(op,RPAD('a',i)); +CALL test01_execval(op,RPAD('A',i)); +CALL test01_execval(op,RPAD(_latin1 0xE3,i)); -- LATIN SMALL LETTER A WITH TILDE +CALL test01_execval(op,RPAD(_latin1 0xC3,i)); -- LATIN CAPITAL LETTER A WITH TILDE +END FOR; +END; +$$ +CREATE PROCEDURE test01_field_literal(len1 INT, +len2 INT) +BEGIN +CALL test01_field_literal_op(len1, len2, '='); +CALL test01_field_literal_op(len1, len2, '<='); +CALL test01_field_literal_op(len1, len2, '<'); +CALL test01_field_literal_op(len1, len2, '>'); +CALL test01_field_literal_op(len1, len2, '>='); +CALL test01_field_literal_op(len1, len2, '<>'); +END; +$$ +CREATE PROCEDURE test01_field_field() +BEGIN +SELECT QUOTE(t1.c1), QUOTE(t2.c1) FROM t1, t1 t2 WHERE t1.c1=t2.c1 ORDER BY HEX(t1.c1), HEX(t2.c1); +END; +$$ +CREATE PROCEDURE test01_distinct() +BEGIN +DECLARE vrecno INT DEFAULT 1; +CALL exec('SELECT GROUP_CONCAT(CONCAT(''['',c1,'']'') ORDER BY BINARY(c1) SEPARATOR '''') FROM t1 GROUP BY c1 ORDER BY c1'); +CALL exec('SELECT COUNT(DISTINCT c1) FROM t1'); +CREATE TABLE t2 AS SELECT DISTINCT c1 FROM t1; +CALL exec('SELECT COUNT(*) FROM t2'); +CREATE TABLE t3 AS SELECT t1.c1, CAST(0 AS UNSIGNED) AS distinct_count FROM t1 LIMIT 0; +FOR rec IN (SELECT c1 FROM t1) +DO +INSERT INTO t3 SELECT rec.c1, COUNT(*) FROM t2 WHERE t2.c1=rec.c1; +END FOR; +CALL exec('SELECT distinct_count, QUOTE(c1) FROM t3 ORDER BY c1, BINARY(c1)'); +DROP TABLE t3; +CREATE TABLE t4 AS SELECT t1.c1, CAST(0 AS UNSIGNED) AS distinct_recno FROM t1 LIMIT 0; +FOR rec IN (SELECT c1 FROM t2 ORDER BY c1) +DO +INSERT INTO t4 SELECT t1.c1, vrecno FROM t1 WHERE t1.c1=rec.c1 ORDER BY BINARY t1.c1; +SET vrecno= vrecno+1; +END FOR; +CALL exec('SELECT distinct_recno, QUOTE(c1) FROM t4 ORDER BY c1, BINARY(c1)'); +DROP TABLE t4; +DROP TABLE t2; +END; +$$ +CREATE PROCEDURE test02_same_table_create_table(dtype VARCHAR(128)) +BEGIN +DECLARE tbl TEXT DEFAULT 'CREATE TABLE t1 (c1 TYPE, c2 TYPE)'; +SET tbl=REPLACE(tbl,'TYPE',dtype); +CALL exec(tbl); +END; +$$ +CREATE PROCEDURE test02_same_table_populate() +BEGIN +INSERT INTO t1 VALUES ('a', 'A'); +INSERT INTO t1 VALUES ('a', 'A '); +INSERT INTO t1 VALUES ('a ', 'A'); +INSERT INTO t1 VALUES ('a ', 'A '); +END; +$$ +CREATE PROCEDURE test02_same_table_cmp_field_field_op(op VARCHAR(2)) +BEGIN +DECLARE query TEXT DEFAULT 'SELECT QUOTE(c1), QUOTE(c2) FROM t1 ' + 'WHERE c1=c2 ORDER BY HEX(c1), HEX(c2)'; +SET query=REPLACE(query,'=',op); +CALL exec(query); +END; +$$ +CREATE PROCEDURE test02_same_table_cmp_field_field() +BEGIN +CALL test02_same_table_cmp_field_field_op('='); +CALL test02_same_table_cmp_field_field_op('<='); +CALL test02_same_table_cmp_field_field_op('<'); +CALL test02_same_table_cmp_field_field_op('>'); +CALL test02_same_table_cmp_field_field_op('>='); +CALL test02_same_table_cmp_field_field_op('<>'); +END; +$$ +CREATE PROCEDURE test03(len INT, datatype TEXT) +BEGIN +CALL exec(REPLACE('CREATE TABLE t1 (c1 DATATYPE, c2 DATATYPE)', 'DATATYPE', datatype)); +CALL exec(REPLACE('INSERT INTO t1 VALUES (LEFT(''Hellooooooooooooooooooo'',LEN),LEFT(''hellooooooooooooooooooo'',LEN))', 'LEN', len)); +CALL exec(REPLACE('CREATE TABLE t2 (c1 DATATYPE, c2 DATATYPE)', 'DATATYPE', datatype)); +CALL exec(REPLACE('INSERT INTO t2 VALUES (LEFT(''Hellooooooooooooooooooo'',LEN),LEFT(''hellooooooooooooooooooo'',LEN))', 'LEN', len)); +CALL exec(REPLACE('SELECT * FROM t1 WHERE c1=''VAL''', 'VAL', LEFT('Hellooooooooooooooooooo', len))); +CALL exec(REPLACE('SELECT * FROM t1 WHERE c1=''VAL''', 'VAL', LEFT('hellooooooooooooooooooo', len))); +CALL exec('SELECT * FROM t1 WHERE c1=c2'); +CALL exec('SELECT * FROM t1, t2 WHERE t1.c1=t2.c1'); +CALL exec('SELECT * FROM t1, t2 WHERE t1.c1=t2.c2'); +CALL exec('SELECT * FROM t1, t2 WHERE t1.c2=t2.c1'); +CALL exec('SELECT * FROM t1, t2 WHERE t1.c2=t2.c2'); +CALL exec('DROP TABLE t1'); +END; +$$ +CREATE PROCEDURE test04_like(len INT, datatype TEXT) +BEGIN +CALL exec(REPLACE('CREATE TABLE t1 (c1 DATATYPE)', 'DATATYPE', datatype)); +CALL exec(REPLACE('INSERT INTO t1 VALUES (REPEAT(''a'',LEN))','LEN',len)); +CALL exec(REPLACE('INSERT INTO t1 VALUES (REPEAT(''A'',LEN))','LEN',len)); +CALL exec('SELECT * FROM t1 WHERE c1 LIKE ''a%'' ORDER BY BINARY c1'); +CALL exec('SELECT * FROM t1 WHERE c1 LIKE ''A%'' ORDER BY BINARY c1'); +CALL exec(REPLACE('SELECT * FROM t1 WHERE c1 LIKE ''VAL%'' ORDER BY BINARY c1','VAL',REPEAT('a',len))); +CALL exec(REPLACE('SELECT * FROM t1 WHERE c1 LIKE ''VAL%'' ORDER BY BINARY c1','VAL',REPEAT('A',len))); +CALL exec('DROP TABLE t1'); +END; +$$ +CREATE PROCEDURE test05_mcol4726(len INT, datatype TEXT) +BEGIN +DECLARE small_a VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT('a',len); +DECLARE cap_a VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT('A',len); +DECLARE small_a_with_tilde VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xE3,len); +DECLARE cap_a_with_tilde VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xC3,len); +DECLARE small_a_with_diaeresis VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xE4,len); +DECLARE cap_a_with_diaeresis VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xC4,len); +DECLARE ins VARCHAR(64) CHARACTER SET utf8 DEFAULT 'INSERT INTO t1 VALUES(IVAL)'; +DECLARE sel VARCHAR(64) CHARACTER SET utf8 DEFAULT 'SELECT c1 FROM t1 WHERE c1=IVAL ORDER BY BINARY c1'; +CALL exec(REPLACE('CREATE TABLE t1 (c1 DATATYPE)', 'DATATYPE', datatype)); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', small_a, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', cap_a, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', small_a_with_tilde, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', cap_a_with_tilde, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', small_a_with_diaeresis, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', cap_a_with_diaeresis, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', small_a, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', cap_a, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', small_a_with_tilde, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', cap_a_with_tilde, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', small_a_with_diaeresis, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', cap_a_with_diaeresis, ''''))); +CALL exec('DROP TABLE t1'); +END; +$$ SET NAMES utf8; +SET @datatype='CHAR(1) CHARACTER SET latin1 COLLATE latin1_swedish_ci'; +CREATE TABLE t1 (c1 CHAR(1) CHARACTER SET latin1 COLLATE latin1_swedish_ci); +CALL test01_populate(1,1); +(SELECT engine FROM information_schema.tables WHERE (table_schema,table_name)=(@database,'t1')) = +@@default_storage_engine +1 + +SELECT QUOTE(c1) FROM t1 ORDER BY c1, BINARY(c1) ASC +QUOTE(c1) +'A' +'a' +'Ã' +'ã' +'B' +'b' + +SELECT QUOTE(c1) FROM t1 ORDER BY c1, BINARY(c1) DESC +QUOTE(c1) +'ã' +'Ã' +'a' +'A' +'b' +'B' +CALL test01_field_literal(1,2); + +SELECT HEX(c1), QUOTE(c1) FROM t1 WHERE c1='a' +HEX(c1) QUOTE(c1) +61 'a' +41 'A' +E3 'ã' +C3 'Ã' + +SELECT HEX(c1), QUOTE(c1) FROM t1 WHERE c1='A' +HEX(c1) QUOTE(c1) +61 'a' +41 'A' +E3 'ã' +C3 'Ã' + +SELECT HEX(c1), QUOTE(c1) FROM t1 WHERE c1='ã' +HEX(c1) QUOTE(c1) +61 'a' +41 'A' +E3 'ã' +C3 'Ã' + +SELECT HEX(c1), QUOTE(c1) FROM t1 WHERE c1='Ã' +HEX(c1) QUOTE(c1) +61 'a' +41 'A' +E3 'ã' +C3 'Ã' + +SELECT HEX(c1), QUOTE(c1) FROM t1 WHERE c1='a ' +HEX(c1) QUOTE(c1) +61 'a' +41 'A' +E3 'ã' +C3 'Ã' + +SELECT HEX(c1), QUOTE(c1) FROM t1 WHERE c1='A ' +HEX(c1) QUOTE(c1) +61 'a' +41 'A' +E3 'ã' +C3 'Ã' + +SELECT HEX(c1), QUOTE(c1) FROM t1 WHERE c1='ã ' +HEX(c1) QUOTE(c1) +61 'a' +41 'A' +E3 'ã' +C3 'Ã' + +SELECT HEX(c1), QUOTE(c1) FROM t1 WHERE c1='Ã ' +HEX(c1) QUOTE(c1) +61 'a' +41 'A' +E3 'ã' +C3 'Ã' + +SELECT HEX(c1), QUOTE(c1) FROM t1 WHERE c1<='a' +HEX(c1) QUOTE(c1) +61 'a' +41 'A' +E3 'ã' +C3 'Ã' + +SELECT HEX(c1), QUOTE(c1) FROM t1 WHERE c1<='A' +HEX(c1) QUOTE(c1) +61 'a' +41 'A' +E3 'ã' +C3 'Ã' + +SELECT HEX(c1), QUOTE(c1) FROM t1 WHERE c1<='ã' +HEX(c1) QUOTE(c1) +61 'a' +41 'A' +E3 'ã' +C3 'Ã' + +SELECT HEX(c1), QUOTE(c1) FROM t1 WHERE c1<='Ã' +HEX(c1) QUOTE(c1) +61 'a' +41 'A' +E3 'ã' +C3 'Ã' + +SELECT HEX(c1), QUOTE(c1) FROM t1 WHERE c1<='a ' +HEX(c1) QUOTE(c1) +61 'a' +41 'A' +E3 'ã' +C3 'Ã' + +SELECT HEX(c1), QUOTE(c1) FROM t1 WHERE c1<='A ' +HEX(c1) QUOTE(c1) +61 'a' +41 'A' +E3 'ã' +C3 'Ã' + +SELECT HEX(c1), QUOTE(c1) FROM t1 WHERE c1<='ã ' +HEX(c1) QUOTE(c1) +61 'a' +41 'A' +E3 'ã' +C3 'Ã' + +SELECT HEX(c1), QUOTE(c1) FROM t1 WHERE c1<='Ã ' +HEX(c1) QUOTE(c1) +61 'a' +41 'A' +E3 'ã' +C3 'Ã' + +SELECT HEX(c1), QUOTE(c1) FROM t1 WHERE c1<'a' +HEX(c1) QUOTE(c1) + +SELECT HEX(c1), QUOTE(c1) FROM t1 WHERE c1<'A' +HEX(c1) QUOTE(c1) + +SELECT HEX(c1), QUOTE(c1) FROM t1 WHERE c1<'ã' +HEX(c1) QUOTE(c1) + +SELECT HEX(c1), QUOTE(c1) FROM t1 WHERE c1<'Ã' +HEX(c1) QUOTE(c1) + +SELECT HEX(c1), QUOTE(c1) FROM t1 WHERE c1<'a ' +HEX(c1) QUOTE(c1) + +SELECT HEX(c1), QUOTE(c1) FROM t1 WHERE c1<'A ' +HEX(c1) QUOTE(c1) + +SELECT HEX(c1), QUOTE(c1) FROM t1 WHERE c1<'ã ' +HEX(c1) QUOTE(c1) + +SELECT HEX(c1), QUOTE(c1) FROM t1 WHERE c1<'Ã ' +HEX(c1) QUOTE(c1) + +SELECT HEX(c1), QUOTE(c1) FROM t1 WHERE c1>'a' +HEX(c1) QUOTE(c1) +62 'b' +42 'B' + +SELECT HEX(c1), QUOTE(c1) FROM t1 WHERE c1>'A' +HEX(c1) QUOTE(c1) +62 'b' +42 'B' + +SELECT HEX(c1), QUOTE(c1) FROM t1 WHERE c1>'ã' +HEX(c1) QUOTE(c1) +62 'b' +42 'B' + +SELECT HEX(c1), QUOTE(c1) FROM t1 WHERE c1>'Ã' +HEX(c1) QUOTE(c1) +62 'b' +42 'B' + +SELECT HEX(c1), QUOTE(c1) FROM t1 WHERE c1>'a ' +HEX(c1) QUOTE(c1) +62 'b' +42 'B' + +SELECT HEX(c1), QUOTE(c1) FROM t1 WHERE c1>'A ' +HEX(c1) QUOTE(c1) +62 'b' +42 'B' + +SELECT HEX(c1), QUOTE(c1) FROM t1 WHERE c1>'ã ' +HEX(c1) QUOTE(c1) +62 'b' +42 'B' + +SELECT HEX(c1), QUOTE(c1) FROM t1 WHERE c1>'Ã ' +HEX(c1) QUOTE(c1) +62 'b' +42 'B' + +SELECT HEX(c1), QUOTE(c1) FROM t1 WHERE c1>='a' +HEX(c1) QUOTE(c1) +61 'a' +41 'A' +E3 'ã' +C3 'Ã' +62 'b' +42 'B' + +SELECT HEX(c1), QUOTE(c1) FROM t1 WHERE c1>='A' +HEX(c1) QUOTE(c1) +61 'a' +41 'A' +E3 'ã' +C3 'Ã' +62 'b' +42 'B' + +SELECT HEX(c1), QUOTE(c1) FROM t1 WHERE c1>='ã' +HEX(c1) QUOTE(c1) +61 'a' +41 'A' +E3 'ã' +C3 'Ã' +62 'b' +42 'B' + +SELECT HEX(c1), QUOTE(c1) FROM t1 WHERE c1>='Ã' +HEX(c1) QUOTE(c1) +61 'a' +41 'A' +E3 'ã' +C3 'Ã' +62 'b' +42 'B' + +SELECT HEX(c1), QUOTE(c1) FROM t1 WHERE c1>='a ' +HEX(c1) QUOTE(c1) +61 'a' +41 'A' +E3 'ã' +C3 'Ã' +62 'b' +42 'B' + +SELECT HEX(c1), QUOTE(c1) FROM t1 WHERE c1>='A ' +HEX(c1) QUOTE(c1) +61 'a' +41 'A' +E3 'ã' +C3 'Ã' +62 'b' +42 'B' + +SELECT HEX(c1), QUOTE(c1) FROM t1 WHERE c1>='ã ' +HEX(c1) QUOTE(c1) +61 'a' +41 'A' +E3 'ã' +C3 'Ã' +62 'b' +42 'B' + +SELECT HEX(c1), QUOTE(c1) FROM t1 WHERE c1>='Ã ' +HEX(c1) QUOTE(c1) +61 'a' +41 'A' +E3 'ã' +C3 'Ã' +62 'b' +42 'B' + +SELECT HEX(c1), QUOTE(c1) FROM t1 WHERE c1<>'a' +HEX(c1) QUOTE(c1) +62 'b' +42 'B' + +SELECT HEX(c1), QUOTE(c1) FROM t1 WHERE c1<>'A' +HEX(c1) QUOTE(c1) +62 'b' +42 'B' + +SELECT HEX(c1), QUOTE(c1) FROM t1 WHERE c1<>'ã' +HEX(c1) QUOTE(c1) +62 'b' +42 'B' + +SELECT HEX(c1), QUOTE(c1) FROM t1 WHERE c1<>'Ã' +HEX(c1) QUOTE(c1) +62 'b' +42 'B' + +SELECT HEX(c1), QUOTE(c1) FROM t1 WHERE c1<>'a ' +HEX(c1) QUOTE(c1) +62 'b' +42 'B' + +SELECT HEX(c1), QUOTE(c1) FROM t1 WHERE c1<>'A ' +HEX(c1) QUOTE(c1) +62 'b' +42 'B' + +SELECT HEX(c1), QUOTE(c1) FROM t1 WHERE c1<>'ã ' +HEX(c1) QUOTE(c1) +62 'b' +42 'B' + +SELECT HEX(c1), QUOTE(c1) FROM t1 WHERE c1<>'Ã ' +HEX(c1) QUOTE(c1) +62 'b' +42 'B' +CALL test01_field_field(); +QUOTE(t1.c1) QUOTE(t2.c1) +'A' 'A' +'A' 'a' +'A' 'Ã' +'A' 'ã' +'B' 'B' +'B' 'b' +'a' 'A' +'a' 'a' +'a' 'Ã' +'a' 'ã' +'b' 'B' +'b' 'b' +'Ã' 'A' +'Ã' 'a' +'Ã' 'Ã' +'Ã' 'ã' +'ã' 'A' +'ã' 'a' +'ã' 'Ã' +'ã' 'ã' +CALL test01_distinct(); + +SELECT GROUP_CONCAT(CONCAT('[',c1,']') ORDER BY BINARY(c1) SEPARATOR '') FROM t1 GROUP BY c1 ORDER BY c1 +GROUP_CONCAT(CONCAT('[',c1,']') ORDER BY BINARY(c1) SEPARATOR '') +[A][a][Ã][ã] +[B][b] + +SELECT COUNT(DISTINCT c1) FROM t1 +COUNT(DISTINCT c1) +2 + +SELECT COUNT(*) FROM t2 +COUNT(*) +2 + +SELECT distinct_count, QUOTE(c1) FROM t3 ORDER BY c1, BINARY(c1) +distinct_count QUOTE(c1) +1 'A' +1 'a' +1 'Ã' +1 'ã' +1 'B' +1 'b' + +SELECT distinct_recno, QUOTE(c1) FROM t4 ORDER BY c1, BINARY(c1) +distinct_recno QUOTE(c1) +1 'A' +1 'a' +1 'Ã' +1 'ã' +2 'B' +2 'b' +DROP TABLE t1; +CALL test02_same_table_create_table(@datatype); + +CREATE TABLE t1 (c1 CHAR(1) CHARACTER SET latin1 COLLATE latin1_swedish_ci, c2 CHAR(1) CHARACTER SET latin1 COLLATE latin1_swedish_ci) +CALL test02_same_table_populate(); +CALL test02_same_table_cmp_field_field(); + +SELECT QUOTE(c1), QUOTE(c2) FROM t1 WHERE c1=c2 ORDER BY HEX(c1), HEX(c2) +QUOTE(c1) QUOTE(c2) +'a' 'A' +'a' 'A' +'a' 'A' +'a' 'A' + +SELECT QUOTE(c1), QUOTE(c2) FROM t1 WHERE c1<=c2 ORDER BY HEX(c1), HEX(c2) +QUOTE(c1) QUOTE(c2) +'a' 'A' +'a' 'A' +'a' 'A' +'a' 'A' + +SELECT QUOTE(c1), QUOTE(c2) FROM t1 WHERE c1c2 ORDER BY HEX(c1), HEX(c2) +QUOTE(c1) QUOTE(c2) + +SELECT QUOTE(c1), QUOTE(c2) FROM t1 WHERE c1>=c2 ORDER BY HEX(c1), HEX(c2) +QUOTE(c1) QUOTE(c2) +'a' 'A' +'a' 'A' +'a' 'A' +'a' 'A' + +SELECT QUOTE(c1), QUOTE(c2) FROM t1 WHERE c1<>c2 ORDER BY HEX(c1), HEX(c2) +QUOTE(c1) QUOTE(c2) +DROP TABLE t1; +CALL test03(1, @datatype); + +CREATE TABLE t1 (c1 CHAR(1) CHARACTER SET latin1 COLLATE latin1_swedish_ci, c2 CHAR(1) CHARACTER SET latin1 COLLATE latin1_swedish_ci) + +INSERT INTO t1 VALUES (LEFT('Hellooooooooooooooooooo',1),LEFT('hellooooooooooooooooooo',1)) + +CREATE TABLE t2 (c1 CHAR(1) CHARACTER SET latin1 COLLATE latin1_swedish_ci, c2 CHAR(1) CHARACTER SET latin1 COLLATE latin1_swedish_ci) + +INSERT INTO t2 VALUES (LEFT('Hellooooooooooooooooooo',1),LEFT('hellooooooooooooooooooo',1)) + +SELECT * FROM t1 WHERE c1='H' +c1 c2 +H h + +SELECT * FROM t1 WHERE c1='h' +c1 c2 +H h + +SELECT * FROM t1 WHERE c1=c2 +c1 c2 +H h + +SELECT * FROM t1, t2 WHERE t1.c1=t2.c1 +c1 c2 c1 c2 +H h H h + +SELECT * FROM t1, t2 WHERE t1.c1=t2.c2 +c1 c2 c1 c2 +H h H h + +SELECT * FROM t1, t2 WHERE t1.c2=t2.c1 +c1 c2 c1 c2 +H h H h + +SELECT * FROM t1, t2 WHERE t1.c2=t2.c2 +c1 c2 c1 c2 +H h H h + +DROP TABLE t1 +CALL test04_like(1, @datatype); + +CREATE TABLE t1 (c1 CHAR(1) CHARACTER SET latin1 COLLATE latin1_swedish_ci) + +INSERT INTO t1 VALUES (REPEAT('a',1)) + +INSERT INTO t1 VALUES (REPEAT('A',1)) + +SELECT * FROM t1 WHERE c1 LIKE 'a%' ORDER BY BINARY c1 +c1 +A +a + +SELECT * FROM t1 WHERE c1 LIKE 'A%' ORDER BY BINARY c1 +c1 +A +a + +SELECT * FROM t1 WHERE c1 LIKE 'a%' ORDER BY BINARY c1 +c1 +A +a + +SELECT * FROM t1 WHERE c1 LIKE 'A%' ORDER BY BINARY c1 +c1 +A +a + +DROP TABLE t1 +CALL test05_mcol4726(1, @datatype); + +CREATE TABLE t1 (c1 CHAR(1) CHARACTER SET latin1 COLLATE latin1_swedish_ci) + +INSERT INTO t1 VALUES('a') + +INSERT INTO t1 VALUES('A') + +INSERT INTO t1 VALUES('ã') + +INSERT INTO t1 VALUES('Ã') + +INSERT INTO t1 VALUES('ä') + +INSERT INTO t1 VALUES('Ä') + +SELECT c1 FROM t1 WHERE c1='a' ORDER BY BINARY c1 +c1 +A +a +Ã +ã + +SELECT c1 FROM t1 WHERE c1='A' ORDER BY BINARY c1 +c1 +A +a +Ã +ã + +SELECT c1 FROM t1 WHERE c1='ã' ORDER BY BINARY c1 +c1 +A +a +Ã +ã + +SELECT c1 FROM t1 WHERE c1='Ã' ORDER BY BINARY c1 +c1 +A +a +Ã +ã + +SELECT c1 FROM t1 WHERE c1='ä' ORDER BY BINARY c1 +c1 +Ä +ä + +SELECT c1 FROM t1 WHERE c1='Ä' ORDER BY BINARY c1 +c1 +Ä +ä + +DROP TABLE t1 +DROP PROCEDURE exec; +DROP PROCEDURE test01_execval; +DROP PROCEDURE test01_populate; +DROP PROCEDURE test01_field_literal_op; +DROP PROCEDURE test01_field_literal; +DROP PROCEDURE test01_field_field; +DROP PROCEDURE test01_distinct; +DROP PROCEDURE test02_same_table_create_table; +DROP PROCEDURE test02_same_table_populate; +DROP PROCEDURE test02_same_table_cmp_field_field_op; +DROP PROCEDURE test02_same_table_cmp_field_field; +DROP PROCEDURE test03; +DROP PROCEDURE test04_like; +DROP PROCEDURE test05_mcol4726; +EXECUTE IMMEDIATE CONCAT('DROP DATABASE ', @database); +USE test; +SET @@default_storage_engine=DEFAULT; # # MCOL-4721 CHAR(1) is not collation-aware for GROUP/DISTINCT # @@ -20,3 +744,13 @@ c1 a ä DROP TABLE t1; +# +# MCOL-4726 Wrong result of WHERE char1_col='A' +# +CREATE TABLE t1 (a CHAR(1) CHARACTER SET latin1); +INSERT INTO t1 VALUES ('a'),('Ã'); +SELECT * FROM t1 WHERE a='A'; +a +a +Ã +DROP TABLE t1; diff --git a/mysql-test/columnstore/basic/r/ctype_cmp_char4_latin1_swedish_ci.result b/mysql-test/columnstore/basic/r/ctype_cmp_char4_latin1_swedish_ci.result index 2a3c753f4..e3d1035e3 100644 --- a/mysql-test/columnstore/basic/r/ctype_cmp_char4_latin1_swedish_ci.result +++ b/mysql-test/columnstore/basic/r/ctype_cmp_char4_latin1_swedish_ci.result @@ -152,6 +152,32 @@ CALL exec(REPLACE('SELECT * FROM t1 WHERE c1 LIKE ''VAL%'' ORDER BY BINARY c1',' CALL exec('DROP TABLE t1'); END; $$ +CREATE PROCEDURE test05_mcol4726(len INT, datatype TEXT) +BEGIN +DECLARE small_a VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT('a',len); +DECLARE cap_a VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT('A',len); +DECLARE small_a_with_tilde VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xE3,len); +DECLARE cap_a_with_tilde VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xC3,len); +DECLARE small_a_with_diaeresis VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xE4,len); +DECLARE cap_a_with_diaeresis VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xC4,len); +DECLARE ins VARCHAR(64) CHARACTER SET utf8 DEFAULT 'INSERT INTO t1 VALUES(IVAL)'; +DECLARE sel VARCHAR(64) CHARACTER SET utf8 DEFAULT 'SELECT c1 FROM t1 WHERE c1=IVAL ORDER BY BINARY c1'; +CALL exec(REPLACE('CREATE TABLE t1 (c1 DATATYPE)', 'DATATYPE', datatype)); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', small_a, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', cap_a, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', small_a_with_tilde, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', cap_a_with_tilde, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', small_a_with_diaeresis, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', cap_a_with_diaeresis, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', small_a, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', cap_a, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', small_a_with_tilde, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', cap_a_with_tilde, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', small_a_with_diaeresis, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', cap_a_with_diaeresis, ''''))); +CALL exec('DROP TABLE t1'); +END; +$$ SET NAMES utf8; SET @datatype='CHAR(4) CHARACTER SET latin1 COLLATE latin1_swedish_ci'; CREATE TABLE t1 (c1 CHAR(4) CHARACTER SET latin1 COLLATE latin1_swedish_ci); @@ -1696,6 +1722,61 @@ c1 AAAA aaaa +DROP TABLE t1 +CALL test05_mcol4726(4, @datatype); + +CREATE TABLE t1 (c1 CHAR(4) CHARACTER SET latin1 COLLATE latin1_swedish_ci) + +INSERT INTO t1 VALUES('aaaa') + +INSERT INTO t1 VALUES('AAAA') + +INSERT INTO t1 VALUES('ãããã') + +INSERT INTO t1 VALUES('ÃÃÃÃ') + +INSERT INTO t1 VALUES('ääää') + +INSERT INTO t1 VALUES('ÄÄÄÄ') + +SELECT c1 FROM t1 WHERE c1='aaaa' ORDER BY BINARY c1 +c1 +AAAA +aaaa +ÃÃÃÃ +ãããã + +SELECT c1 FROM t1 WHERE c1='AAAA' ORDER BY BINARY c1 +c1 +AAAA +aaaa +ÃÃÃÃ +ãããã + +SELECT c1 FROM t1 WHERE c1='ãããã' ORDER BY BINARY c1 +c1 +AAAA +aaaa +ÃÃÃÃ +ãããã + +SELECT c1 FROM t1 WHERE c1='ÃÃÃÃ' ORDER BY BINARY c1 +c1 +AAAA +aaaa +ÃÃÃÃ +ãããã + +SELECT c1 FROM t1 WHERE c1='ääää' ORDER BY BINARY c1 +c1 +ÄÄÄÄ +ääää + +SELECT c1 FROM t1 WHERE c1='ÄÄÄÄ' ORDER BY BINARY c1 +c1 +ÄÄÄÄ +ääää + DROP TABLE t1 DROP PROCEDURE exec; DROP PROCEDURE test01_execval; @@ -1710,6 +1791,7 @@ DROP PROCEDURE test02_same_table_cmp_field_field_op; DROP PROCEDURE test02_same_table_cmp_field_field; DROP PROCEDURE test03; DROP PROCEDURE test04_like; +DROP PROCEDURE test05_mcol4726; EXECUTE IMMEDIATE CONCAT('DROP DATABASE ', @database); USE test; SET @@default_storage_engine=DEFAULT; diff --git a/mysql-test/columnstore/basic/r/ctype_cmp_char5_latin1_swedish_ci.result b/mysql-test/columnstore/basic/r/ctype_cmp_char5_latin1_swedish_ci.result index aaf0f96d4..acecc998b 100644 --- a/mysql-test/columnstore/basic/r/ctype_cmp_char5_latin1_swedish_ci.result +++ b/mysql-test/columnstore/basic/r/ctype_cmp_char5_latin1_swedish_ci.result @@ -152,6 +152,32 @@ CALL exec(REPLACE('SELECT * FROM t1 WHERE c1 LIKE ''VAL%'' ORDER BY BINARY c1',' CALL exec('DROP TABLE t1'); END; $$ +CREATE PROCEDURE test05_mcol4726(len INT, datatype TEXT) +BEGIN +DECLARE small_a VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT('a',len); +DECLARE cap_a VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT('A',len); +DECLARE small_a_with_tilde VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xE3,len); +DECLARE cap_a_with_tilde VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xC3,len); +DECLARE small_a_with_diaeresis VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xE4,len); +DECLARE cap_a_with_diaeresis VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xC4,len); +DECLARE ins VARCHAR(64) CHARACTER SET utf8 DEFAULT 'INSERT INTO t1 VALUES(IVAL)'; +DECLARE sel VARCHAR(64) CHARACTER SET utf8 DEFAULT 'SELECT c1 FROM t1 WHERE c1=IVAL ORDER BY BINARY c1'; +CALL exec(REPLACE('CREATE TABLE t1 (c1 DATATYPE)', 'DATATYPE', datatype)); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', small_a, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', cap_a, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', small_a_with_tilde, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', cap_a_with_tilde, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', small_a_with_diaeresis, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', cap_a_with_diaeresis, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', small_a, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', cap_a, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', small_a_with_tilde, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', cap_a_with_tilde, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', small_a_with_diaeresis, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', cap_a_with_diaeresis, ''''))); +CALL exec('DROP TABLE t1'); +END; +$$ SET NAMES utf8; SET @datatype='CHAR(5) CHARACTER SET latin1 COLLATE latin1_swedish_ci'; CREATE TABLE t1 (c1 CHAR(5) CHARACTER SET latin1 COLLATE latin1_swedish_ci); @@ -1984,6 +2010,61 @@ c1 AAAAA aaaaa +DROP TABLE t1 +CALL test05_mcol4726(5, @datatype); + +CREATE TABLE t1 (c1 CHAR(5) CHARACTER SET latin1 COLLATE latin1_swedish_ci) + +INSERT INTO t1 VALUES('aaaaa') + +INSERT INTO t1 VALUES('AAAAA') + +INSERT INTO t1 VALUES('ããããã') + +INSERT INTO t1 VALUES('ÃÃÃÃÃ') + +INSERT INTO t1 VALUES('äääää') + +INSERT INTO t1 VALUES('ÄÄÄÄÄ') + +SELECT c1 FROM t1 WHERE c1='aaaaa' ORDER BY BINARY c1 +c1 +AAAAA +aaaaa +ÃÃÃÃÃ +ããããã + +SELECT c1 FROM t1 WHERE c1='AAAAA' ORDER BY BINARY c1 +c1 +AAAAA +aaaaa +ÃÃÃÃÃ +ããããã + +SELECT c1 FROM t1 WHERE c1='ããããã' ORDER BY BINARY c1 +c1 +AAAAA +aaaaa +ÃÃÃÃÃ +ããããã + +SELECT c1 FROM t1 WHERE c1='ÃÃÃÃÃ' ORDER BY BINARY c1 +c1 +AAAAA +aaaaa +ÃÃÃÃÃ +ããããã + +SELECT c1 FROM t1 WHERE c1='äääää' ORDER BY BINARY c1 +c1 +ÄÄÄÄÄ +äääää + +SELECT c1 FROM t1 WHERE c1='ÄÄÄÄÄ' ORDER BY BINARY c1 +c1 +ÄÄÄÄÄ +äääää + DROP TABLE t1 DROP PROCEDURE exec; DROP PROCEDURE test01_execval; @@ -1998,6 +2079,7 @@ DROP PROCEDURE test02_same_table_cmp_field_field_op; DROP PROCEDURE test02_same_table_cmp_field_field; DROP PROCEDURE test03; DROP PROCEDURE test04_like; +DROP PROCEDURE test05_mcol4726; EXECUTE IMMEDIATE CONCAT('DROP DATABASE ', @database); USE test; SET @@default_storage_engine=DEFAULT; diff --git a/mysql-test/columnstore/basic/r/ctype_cmp_varchar32_latin1_bin.result b/mysql-test/columnstore/basic/r/ctype_cmp_varchar32_latin1_bin.result index 6ceca1e13..041034aa5 100644 --- a/mysql-test/columnstore/basic/r/ctype_cmp_varchar32_latin1_bin.result +++ b/mysql-test/columnstore/basic/r/ctype_cmp_varchar32_latin1_bin.result @@ -152,6 +152,32 @@ CALL exec(REPLACE('SELECT * FROM t1 WHERE c1 LIKE ''VAL%'' ORDER BY BINARY c1',' CALL exec('DROP TABLE t1'); END; $$ +CREATE PROCEDURE test05_mcol4726(len INT, datatype TEXT) +BEGIN +DECLARE small_a VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT('a',len); +DECLARE cap_a VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT('A',len); +DECLARE small_a_with_tilde VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xE3,len); +DECLARE cap_a_with_tilde VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xC3,len); +DECLARE small_a_with_diaeresis VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xE4,len); +DECLARE cap_a_with_diaeresis VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xC4,len); +DECLARE ins VARCHAR(64) CHARACTER SET utf8 DEFAULT 'INSERT INTO t1 VALUES(IVAL)'; +DECLARE sel VARCHAR(64) CHARACTER SET utf8 DEFAULT 'SELECT c1 FROM t1 WHERE c1=IVAL ORDER BY BINARY c1'; +CALL exec(REPLACE('CREATE TABLE t1 (c1 DATATYPE)', 'DATATYPE', datatype)); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', small_a, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', cap_a, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', small_a_with_tilde, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', cap_a_with_tilde, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', small_a_with_diaeresis, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', cap_a_with_diaeresis, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', small_a, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', cap_a, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', small_a_with_tilde, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', cap_a_with_tilde, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', small_a_with_diaeresis, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', cap_a_with_diaeresis, ''''))); +CALL exec('DROP TABLE t1'); +END; +$$ SET NAMES utf8; SET @datatype='VARCHAR(32) CHARACTER SET latin1 COLLATE latin1_bin'; CREATE TABLE t1 (c1 VARCHAR(32) CHARACTER SET latin1 COLLATE latin1_bin); @@ -1566,6 +1592,47 @@ SELECT * FROM t1 WHERE c1 LIKE 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%' ORDER BY BINA c1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +DROP TABLE t1 +CALL test05_mcol4726(32, @datatype); + +CREATE TABLE t1 (c1 VARCHAR(32) CHARACTER SET latin1 COLLATE latin1_bin) + +INSERT INTO t1 VALUES('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa') + +INSERT INTO t1 VALUES('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA') + +INSERT INTO t1 VALUES('ãããããããããããããããããããããããããããããããã') + +INSERT INTO t1 VALUES('ÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃ') + +INSERT INTO t1 VALUES('ääääääääääääääääääääääääääääääää') + +INSERT INTO t1 VALUES('ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ') + +SELECT c1 FROM t1 WHERE c1='aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' ORDER BY BINARY c1 +c1 +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + +SELECT c1 FROM t1 WHERE c1='AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' ORDER BY BINARY c1 +c1 +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + +SELECT c1 FROM t1 WHERE c1='ãããããããããããããããããããããããããããããããã' ORDER BY BINARY c1 +c1 +ãããããããããããããããããããããããããããããããã + +SELECT c1 FROM t1 WHERE c1='ÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃ' ORDER BY BINARY c1 +c1 +ÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃ + +SELECT c1 FROM t1 WHERE c1='ääääääääääääääääääääääääääääääää' ORDER BY BINARY c1 +c1 +ääääääääääääääääääääääääääääääää + +SELECT c1 FROM t1 WHERE c1='ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ' ORDER BY BINARY c1 +c1 +ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ + DROP TABLE t1 DROP PROCEDURE exec; DROP PROCEDURE test01_execval; @@ -1580,6 +1647,7 @@ DROP PROCEDURE test02_same_table_cmp_field_field_op; DROP PROCEDURE test02_same_table_cmp_field_field; DROP PROCEDURE test03; DROP PROCEDURE test04_like; +DROP PROCEDURE test05_mcol4726; EXECUTE IMMEDIATE CONCAT('DROP DATABASE ', @database); USE test; SET @@default_storage_engine=DEFAULT; diff --git a/mysql-test/columnstore/basic/r/ctype_cmp_varchar32_latin1_nopad_bin.result b/mysql-test/columnstore/basic/r/ctype_cmp_varchar32_latin1_nopad_bin.result index d5c00d145..1c9a6f1c9 100644 --- a/mysql-test/columnstore/basic/r/ctype_cmp_varchar32_latin1_nopad_bin.result +++ b/mysql-test/columnstore/basic/r/ctype_cmp_varchar32_latin1_nopad_bin.result @@ -152,6 +152,32 @@ CALL exec(REPLACE('SELECT * FROM t1 WHERE c1 LIKE ''VAL%'' ORDER BY BINARY c1',' CALL exec('DROP TABLE t1'); END; $$ +CREATE PROCEDURE test05_mcol4726(len INT, datatype TEXT) +BEGIN +DECLARE small_a VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT('a',len); +DECLARE cap_a VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT('A',len); +DECLARE small_a_with_tilde VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xE3,len); +DECLARE cap_a_with_tilde VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xC3,len); +DECLARE small_a_with_diaeresis VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xE4,len); +DECLARE cap_a_with_diaeresis VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xC4,len); +DECLARE ins VARCHAR(64) CHARACTER SET utf8 DEFAULT 'INSERT INTO t1 VALUES(IVAL)'; +DECLARE sel VARCHAR(64) CHARACTER SET utf8 DEFAULT 'SELECT c1 FROM t1 WHERE c1=IVAL ORDER BY BINARY c1'; +CALL exec(REPLACE('CREATE TABLE t1 (c1 DATATYPE)', 'DATATYPE', datatype)); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', small_a, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', cap_a, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', small_a_with_tilde, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', cap_a_with_tilde, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', small_a_with_diaeresis, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', cap_a_with_diaeresis, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', small_a, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', cap_a, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', small_a_with_tilde, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', cap_a_with_tilde, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', small_a_with_diaeresis, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', cap_a_with_diaeresis, ''''))); +CALL exec('DROP TABLE t1'); +END; +$$ SET NAMES utf8; SET @datatype='VARCHAR(32) CHARACTER SET latin1 COLLATE latin1_nopad_bin'; CREATE TABLE t1 (c1 VARCHAR(32) CHARACTER SET latin1 COLLATE latin1_nopad_bin); @@ -1542,6 +1568,47 @@ SELECT * FROM t1 WHERE c1 LIKE 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%' ORDER BY BINA c1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +DROP TABLE t1 +CALL test05_mcol4726(32, @datatype); + +CREATE TABLE t1 (c1 VARCHAR(32) CHARACTER SET latin1 COLLATE latin1_nopad_bin) + +INSERT INTO t1 VALUES('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa') + +INSERT INTO t1 VALUES('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA') + +INSERT INTO t1 VALUES('ãããããããããããããããããããããããããããããããã') + +INSERT INTO t1 VALUES('ÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃ') + +INSERT INTO t1 VALUES('ääääääääääääääääääääääääääääääää') + +INSERT INTO t1 VALUES('ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ') + +SELECT c1 FROM t1 WHERE c1='aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' ORDER BY BINARY c1 +c1 +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + +SELECT c1 FROM t1 WHERE c1='AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' ORDER BY BINARY c1 +c1 +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + +SELECT c1 FROM t1 WHERE c1='ãããããããããããããããããããããããããããããããã' ORDER BY BINARY c1 +c1 +ãããããããããããããããããããããããããããããããã + +SELECT c1 FROM t1 WHERE c1='ÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃ' ORDER BY BINARY c1 +c1 +ÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃ + +SELECT c1 FROM t1 WHERE c1='ääääääääääääääääääääääääääääääää' ORDER BY BINARY c1 +c1 +ääääääääääääääääääääääääääääääää + +SELECT c1 FROM t1 WHERE c1='ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ' ORDER BY BINARY c1 +c1 +ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ + DROP TABLE t1 DROP PROCEDURE exec; DROP PROCEDURE test01_execval; @@ -1556,6 +1623,7 @@ DROP PROCEDURE test02_same_table_cmp_field_field_op; DROP PROCEDURE test02_same_table_cmp_field_field; DROP PROCEDURE test03; DROP PROCEDURE test04_like; +DROP PROCEDURE test05_mcol4726; EXECUTE IMMEDIATE CONCAT('DROP DATABASE ', @database); USE test; SET @@default_storage_engine=DEFAULT; diff --git a/mysql-test/columnstore/basic/r/ctype_cmp_varchar32_latin1_swedish_ci.result b/mysql-test/columnstore/basic/r/ctype_cmp_varchar32_latin1_swedish_ci.result index 8d0a028a0..b79566b02 100644 --- a/mysql-test/columnstore/basic/r/ctype_cmp_varchar32_latin1_swedish_ci.result +++ b/mysql-test/columnstore/basic/r/ctype_cmp_varchar32_latin1_swedish_ci.result @@ -152,6 +152,32 @@ CALL exec(REPLACE('SELECT * FROM t1 WHERE c1 LIKE ''VAL%'' ORDER BY BINARY c1',' CALL exec('DROP TABLE t1'); END; $$ +CREATE PROCEDURE test05_mcol4726(len INT, datatype TEXT) +BEGIN +DECLARE small_a VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT('a',len); +DECLARE cap_a VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT('A',len); +DECLARE small_a_with_tilde VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xE3,len); +DECLARE cap_a_with_tilde VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xC3,len); +DECLARE small_a_with_diaeresis VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xE4,len); +DECLARE cap_a_with_diaeresis VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xC4,len); +DECLARE ins VARCHAR(64) CHARACTER SET utf8 DEFAULT 'INSERT INTO t1 VALUES(IVAL)'; +DECLARE sel VARCHAR(64) CHARACTER SET utf8 DEFAULT 'SELECT c1 FROM t1 WHERE c1=IVAL ORDER BY BINARY c1'; +CALL exec(REPLACE('CREATE TABLE t1 (c1 DATATYPE)', 'DATATYPE', datatype)); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', small_a, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', cap_a, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', small_a_with_tilde, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', cap_a_with_tilde, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', small_a_with_diaeresis, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', cap_a_with_diaeresis, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', small_a, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', cap_a, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', small_a_with_tilde, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', cap_a_with_tilde, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', small_a_with_diaeresis, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', cap_a_with_diaeresis, ''''))); +CALL exec('DROP TABLE t1'); +END; +$$ SET NAMES utf8; SET @datatype='VARCHAR(32) CHARACTER SET latin1 COLLATE latin1_swedish_ci'; CREATE TABLE t1 (c1 VARCHAR(32) CHARACTER SET latin1 COLLATE latin1_swedish_ci); @@ -1696,6 +1722,61 @@ c1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +DROP TABLE t1 +CALL test05_mcol4726(32, @datatype); + +CREATE TABLE t1 (c1 VARCHAR(32) CHARACTER SET latin1 COLLATE latin1_swedish_ci) + +INSERT INTO t1 VALUES('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa') + +INSERT INTO t1 VALUES('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA') + +INSERT INTO t1 VALUES('ãããããããããããããããããããããããããããããããã') + +INSERT INTO t1 VALUES('ÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃ') + +INSERT INTO t1 VALUES('ääääääääääääääääääääääääääääääää') + +INSERT INTO t1 VALUES('ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ') + +SELECT c1 FROM t1 WHERE c1='aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' ORDER BY BINARY c1 +c1 +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +ÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃ +ãããããããããããããããããããããããããããããããã + +SELECT c1 FROM t1 WHERE c1='AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' ORDER BY BINARY c1 +c1 +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +ÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃ +ãããããããããããããããããããããããããããããããã + +SELECT c1 FROM t1 WHERE c1='ãããããããããããããããããããããããããããããããã' ORDER BY BINARY c1 +c1 +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +ÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃ +ãããããããããããããããããããããããããããããããã + +SELECT c1 FROM t1 WHERE c1='ÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃ' ORDER BY BINARY c1 +c1 +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +ÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃ +ãããããããããããããããããããããããããããããããã + +SELECT c1 FROM t1 WHERE c1='ääääääääääääääääääääääääääääääää' ORDER BY BINARY c1 +c1 +ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ +ääääääääääääääääääääääääääääääää + +SELECT c1 FROM t1 WHERE c1='ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ' ORDER BY BINARY c1 +c1 +ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ +ääääääääääääääääääääääääääääääää + DROP TABLE t1 DROP PROCEDURE exec; DROP PROCEDURE test01_execval; @@ -1710,6 +1791,7 @@ DROP PROCEDURE test02_same_table_cmp_field_field_op; DROP PROCEDURE test02_same_table_cmp_field_field; DROP PROCEDURE test03; DROP PROCEDURE test04_like; +DROP PROCEDURE test05_mcol4726; EXECUTE IMMEDIATE CONCAT('DROP DATABASE ', @database); USE test; SET @@default_storage_engine=DEFAULT; diff --git a/mysql-test/columnstore/basic/r/ctype_cmp_varchar32_latin1_swedish_nopad_ci.result b/mysql-test/columnstore/basic/r/ctype_cmp_varchar32_latin1_swedish_nopad_ci.result index c5726597d..f14bd1d5c 100644 --- a/mysql-test/columnstore/basic/r/ctype_cmp_varchar32_latin1_swedish_nopad_ci.result +++ b/mysql-test/columnstore/basic/r/ctype_cmp_varchar32_latin1_swedish_nopad_ci.result @@ -152,6 +152,32 @@ CALL exec(REPLACE('SELECT * FROM t1 WHERE c1 LIKE ''VAL%'' ORDER BY BINARY c1',' CALL exec('DROP TABLE t1'); END; $$ +CREATE PROCEDURE test05_mcol4726(len INT, datatype TEXT) +BEGIN +DECLARE small_a VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT('a',len); +DECLARE cap_a VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT('A',len); +DECLARE small_a_with_tilde VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xE3,len); +DECLARE cap_a_with_tilde VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xC3,len); +DECLARE small_a_with_diaeresis VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xE4,len); +DECLARE cap_a_with_diaeresis VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xC4,len); +DECLARE ins VARCHAR(64) CHARACTER SET utf8 DEFAULT 'INSERT INTO t1 VALUES(IVAL)'; +DECLARE sel VARCHAR(64) CHARACTER SET utf8 DEFAULT 'SELECT c1 FROM t1 WHERE c1=IVAL ORDER BY BINARY c1'; +CALL exec(REPLACE('CREATE TABLE t1 (c1 DATATYPE)', 'DATATYPE', datatype)); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', small_a, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', cap_a, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', small_a_with_tilde, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', cap_a_with_tilde, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', small_a_with_diaeresis, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', cap_a_with_diaeresis, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', small_a, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', cap_a, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', small_a_with_tilde, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', cap_a_with_tilde, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', small_a_with_diaeresis, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', cap_a_with_diaeresis, ''''))); +CALL exec('DROP TABLE t1'); +END; +$$ SET NAMES utf8; SET @datatype='VARCHAR(32) CHARACTER SET latin1 COLLATE latin1_swedish_nopad_ci'; CREATE TABLE t1 (c1 VARCHAR(32) CHARACTER SET latin1 COLLATE latin1_swedish_nopad_ci); @@ -1580,6 +1606,61 @@ c1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +DROP TABLE t1 +CALL test05_mcol4726(32, @datatype); + +CREATE TABLE t1 (c1 VARCHAR(32) CHARACTER SET latin1 COLLATE latin1_swedish_nopad_ci) + +INSERT INTO t1 VALUES('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa') + +INSERT INTO t1 VALUES('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA') + +INSERT INTO t1 VALUES('ãããããããããããããããããããããããããããããããã') + +INSERT INTO t1 VALUES('ÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃ') + +INSERT INTO t1 VALUES('ääääääääääääääääääääääääääääääää') + +INSERT INTO t1 VALUES('ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ') + +SELECT c1 FROM t1 WHERE c1='aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' ORDER BY BINARY c1 +c1 +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +ÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃ +ãããããããããããããããããããããããããããããããã + +SELECT c1 FROM t1 WHERE c1='AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' ORDER BY BINARY c1 +c1 +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +ÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃ +ãããããããããããããããããããããããããããããããã + +SELECT c1 FROM t1 WHERE c1='ãããããããããããããããããããããããããããããããã' ORDER BY BINARY c1 +c1 +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +ÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃ +ãããããããããããããããããããããããããããããããã + +SELECT c1 FROM t1 WHERE c1='ÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃ' ORDER BY BINARY c1 +c1 +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +ÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃ +ãããããããããããããããããããããããããããããããã + +SELECT c1 FROM t1 WHERE c1='ääääääääääääääääääääääääääääääää' ORDER BY BINARY c1 +c1 +ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ +ääääääääääääääääääääääääääääääää + +SELECT c1 FROM t1 WHERE c1='ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ' ORDER BY BINARY c1 +c1 +ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ +ääääääääääääääääääääääääääääääää + DROP TABLE t1 DROP PROCEDURE exec; DROP PROCEDURE test01_execval; @@ -1594,6 +1675,7 @@ DROP PROCEDURE test02_same_table_cmp_field_field_op; DROP PROCEDURE test02_same_table_cmp_field_field; DROP PROCEDURE test03; DROP PROCEDURE test04_like; +DROP PROCEDURE test05_mcol4726; EXECUTE IMMEDIATE CONCAT('DROP DATABASE ', @database); USE test; SET @@default_storage_engine=DEFAULT; diff --git a/mysql-test/columnstore/basic/r/ctype_cmp_varchar32_utf8_bin.result b/mysql-test/columnstore/basic/r/ctype_cmp_varchar32_utf8_bin.result index 6a7063f3e..fe6aa6599 100644 --- a/mysql-test/columnstore/basic/r/ctype_cmp_varchar32_utf8_bin.result +++ b/mysql-test/columnstore/basic/r/ctype_cmp_varchar32_utf8_bin.result @@ -152,6 +152,32 @@ CALL exec(REPLACE('SELECT * FROM t1 WHERE c1 LIKE ''VAL%'' ORDER BY BINARY c1',' CALL exec('DROP TABLE t1'); END; $$ +CREATE PROCEDURE test05_mcol4726(len INT, datatype TEXT) +BEGIN +DECLARE small_a VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT('a',len); +DECLARE cap_a VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT('A',len); +DECLARE small_a_with_tilde VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xE3,len); +DECLARE cap_a_with_tilde VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xC3,len); +DECLARE small_a_with_diaeresis VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xE4,len); +DECLARE cap_a_with_diaeresis VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xC4,len); +DECLARE ins VARCHAR(64) CHARACTER SET utf8 DEFAULT 'INSERT INTO t1 VALUES(IVAL)'; +DECLARE sel VARCHAR(64) CHARACTER SET utf8 DEFAULT 'SELECT c1 FROM t1 WHERE c1=IVAL ORDER BY BINARY c1'; +CALL exec(REPLACE('CREATE TABLE t1 (c1 DATATYPE)', 'DATATYPE', datatype)); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', small_a, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', cap_a, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', small_a_with_tilde, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', cap_a_with_tilde, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', small_a_with_diaeresis, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', cap_a_with_diaeresis, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', small_a, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', cap_a, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', small_a_with_tilde, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', cap_a_with_tilde, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', small_a_with_diaeresis, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', cap_a_with_diaeresis, ''''))); +CALL exec('DROP TABLE t1'); +END; +$$ SET NAMES utf8; SET @datatype='VARCHAR(32) CHARACTER SET utf8 COLLATE utf8_bin'; CREATE TABLE t1 (c1 VARCHAR(32) CHARACTER SET utf8 COLLATE utf8_bin); @@ -1566,6 +1592,47 @@ SELECT * FROM t1 WHERE c1 LIKE 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%' ORDER BY BINA c1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +DROP TABLE t1 +CALL test05_mcol4726(32, @datatype); + +CREATE TABLE t1 (c1 VARCHAR(32) CHARACTER SET utf8 COLLATE utf8_bin) + +INSERT INTO t1 VALUES('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa') + +INSERT INTO t1 VALUES('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA') + +INSERT INTO t1 VALUES('ãããããããããããããããããããããããããããããããã') + +INSERT INTO t1 VALUES('ÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃ') + +INSERT INTO t1 VALUES('ääääääääääääääääääääääääääääääää') + +INSERT INTO t1 VALUES('ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ') + +SELECT c1 FROM t1 WHERE c1='aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' ORDER BY BINARY c1 +c1 +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + +SELECT c1 FROM t1 WHERE c1='AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' ORDER BY BINARY c1 +c1 +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + +SELECT c1 FROM t1 WHERE c1='ãããããããããããããããããããããããããããããããã' ORDER BY BINARY c1 +c1 +ãããããããããããããããããããããããããããããããã + +SELECT c1 FROM t1 WHERE c1='ÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃ' ORDER BY BINARY c1 +c1 +ÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃ + +SELECT c1 FROM t1 WHERE c1='ääääääääääääääääääääääääääääääää' ORDER BY BINARY c1 +c1 +ääääääääääääääääääääääääääääääää + +SELECT c1 FROM t1 WHERE c1='ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ' ORDER BY BINARY c1 +c1 +ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ + DROP TABLE t1 DROP PROCEDURE exec; DROP PROCEDURE test01_execval; @@ -1580,6 +1647,7 @@ DROP PROCEDURE test02_same_table_cmp_field_field_op; DROP PROCEDURE test02_same_table_cmp_field_field; DROP PROCEDURE test03; DROP PROCEDURE test04_like; +DROP PROCEDURE test05_mcol4726; EXECUTE IMMEDIATE CONCAT('DROP DATABASE ', @database); USE test; SET @@default_storage_engine=DEFAULT; diff --git a/mysql-test/columnstore/basic/r/ctype_cmp_varchar32_utf8_general_ci.result b/mysql-test/columnstore/basic/r/ctype_cmp_varchar32_utf8_general_ci.result index 0bdc90747..b9175ed88 100644 --- a/mysql-test/columnstore/basic/r/ctype_cmp_varchar32_utf8_general_ci.result +++ b/mysql-test/columnstore/basic/r/ctype_cmp_varchar32_utf8_general_ci.result @@ -152,6 +152,32 @@ CALL exec(REPLACE('SELECT * FROM t1 WHERE c1 LIKE ''VAL%'' ORDER BY BINARY c1',' CALL exec('DROP TABLE t1'); END; $$ +CREATE PROCEDURE test05_mcol4726(len INT, datatype TEXT) +BEGIN +DECLARE small_a VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT('a',len); +DECLARE cap_a VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT('A',len); +DECLARE small_a_with_tilde VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xE3,len); +DECLARE cap_a_with_tilde VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xC3,len); +DECLARE small_a_with_diaeresis VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xE4,len); +DECLARE cap_a_with_diaeresis VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xC4,len); +DECLARE ins VARCHAR(64) CHARACTER SET utf8 DEFAULT 'INSERT INTO t1 VALUES(IVAL)'; +DECLARE sel VARCHAR(64) CHARACTER SET utf8 DEFAULT 'SELECT c1 FROM t1 WHERE c1=IVAL ORDER BY BINARY c1'; +CALL exec(REPLACE('CREATE TABLE t1 (c1 DATATYPE)', 'DATATYPE', datatype)); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', small_a, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', cap_a, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', small_a_with_tilde, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', cap_a_with_tilde, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', small_a_with_diaeresis, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', cap_a_with_diaeresis, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', small_a, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', cap_a, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', small_a_with_tilde, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', cap_a_with_tilde, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', small_a_with_diaeresis, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', cap_a_with_diaeresis, ''''))); +CALL exec('DROP TABLE t1'); +END; +$$ SET NAMES utf8; SET @datatype='VARCHAR(32) CHARACTER SET utf8 COLLATE utf8_general_ci'; CREATE TABLE t1 (c1 VARCHAR(32) CHARACTER SET utf8 COLLATE utf8_general_ci); @@ -1696,6 +1722,77 @@ c1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +DROP TABLE t1 +CALL test05_mcol4726(32, @datatype); + +CREATE TABLE t1 (c1 VARCHAR(32) CHARACTER SET utf8 COLLATE utf8_general_ci) + +INSERT INTO t1 VALUES('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa') + +INSERT INTO t1 VALUES('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA') + +INSERT INTO t1 VALUES('ãããããããããããããããããããããããããããããããã') + +INSERT INTO t1 VALUES('ÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃ') + +INSERT INTO t1 VALUES('ääääääääääääääääääääääääääääääää') + +INSERT INTO t1 VALUES('ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ') + +SELECT c1 FROM t1 WHERE c1='aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' ORDER BY BINARY c1 +c1 +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +ÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃ +ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ +ãããããããããããããããããããããããããããããããã +ääääääääääääääääääääääääääääääää + +SELECT c1 FROM t1 WHERE c1='AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' ORDER BY BINARY c1 +c1 +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +ÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃ +ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ +ãããããããããããããããããããããããããããããããã +ääääääääääääääääääääääääääääääää + +SELECT c1 FROM t1 WHERE c1='ãããããããããããããããããããããããããããããããã' ORDER BY BINARY c1 +c1 +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +ÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃ +ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ +ãããããããããããããããããããããããããããããããã +ääääääääääääääääääääääääääääääää + +SELECT c1 FROM t1 WHERE c1='ÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃ' ORDER BY BINARY c1 +c1 +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +ÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃ +ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ +ãããããããããããããããããããããããããããããããã +ääääääääääääääääääääääääääääääää + +SELECT c1 FROM t1 WHERE c1='ääääääääääääääääääääääääääääääää' ORDER BY BINARY c1 +c1 +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +ÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃ +ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ +ãããããããããããããããããããããããããããããããã +ääääääääääääääääääääääääääääääää + +SELECT c1 FROM t1 WHERE c1='ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ' ORDER BY BINARY c1 +c1 +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +ÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃ +ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ +ãããããããããããããããããããããããããããããããã +ääääääääääääääääääääääääääääääää + DROP TABLE t1 DROP PROCEDURE exec; DROP PROCEDURE test01_execval; @@ -1710,6 +1807,7 @@ DROP PROCEDURE test02_same_table_cmp_field_field_op; DROP PROCEDURE test02_same_table_cmp_field_field; DROP PROCEDURE test03; DROP PROCEDURE test04_like; +DROP PROCEDURE test05_mcol4726; EXECUTE IMMEDIATE CONCAT('DROP DATABASE ', @database); USE test; SET @@default_storage_engine=DEFAULT; diff --git a/mysql-test/columnstore/basic/r/ctype_cmp_varchar32_utf8_general_nopad_ci.result b/mysql-test/columnstore/basic/r/ctype_cmp_varchar32_utf8_general_nopad_ci.result index 41845f1c5..065f7a3bf 100644 --- a/mysql-test/columnstore/basic/r/ctype_cmp_varchar32_utf8_general_nopad_ci.result +++ b/mysql-test/columnstore/basic/r/ctype_cmp_varchar32_utf8_general_nopad_ci.result @@ -152,6 +152,32 @@ CALL exec(REPLACE('SELECT * FROM t1 WHERE c1 LIKE ''VAL%'' ORDER BY BINARY c1',' CALL exec('DROP TABLE t1'); END; $$ +CREATE PROCEDURE test05_mcol4726(len INT, datatype TEXT) +BEGIN +DECLARE small_a VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT('a',len); +DECLARE cap_a VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT('A',len); +DECLARE small_a_with_tilde VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xE3,len); +DECLARE cap_a_with_tilde VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xC3,len); +DECLARE small_a_with_diaeresis VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xE4,len); +DECLARE cap_a_with_diaeresis VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xC4,len); +DECLARE ins VARCHAR(64) CHARACTER SET utf8 DEFAULT 'INSERT INTO t1 VALUES(IVAL)'; +DECLARE sel VARCHAR(64) CHARACTER SET utf8 DEFAULT 'SELECT c1 FROM t1 WHERE c1=IVAL ORDER BY BINARY c1'; +CALL exec(REPLACE('CREATE TABLE t1 (c1 DATATYPE)', 'DATATYPE', datatype)); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', small_a, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', cap_a, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', small_a_with_tilde, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', cap_a_with_tilde, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', small_a_with_diaeresis, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', cap_a_with_diaeresis, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', small_a, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', cap_a, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', small_a_with_tilde, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', cap_a_with_tilde, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', small_a_with_diaeresis, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', cap_a_with_diaeresis, ''''))); +CALL exec('DROP TABLE t1'); +END; +$$ SET NAMES utf8; SET @datatype='VARCHAR(32) CHARACTER SET utf8 COLLATE utf8_general_nopad_ci'; CREATE TABLE t1 (c1 VARCHAR(32) CHARACTER SET utf8 COLLATE utf8_general_nopad_ci); @@ -1292,6 +1318,77 @@ c1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +DROP TABLE t1 +CALL test05_mcol4726(32, @datatype); + +CREATE TABLE t1 (c1 VARCHAR(32) CHARACTER SET utf8 COLLATE utf8_general_nopad_ci) + +INSERT INTO t1 VALUES('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa') + +INSERT INTO t1 VALUES('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA') + +INSERT INTO t1 VALUES('ãããããããããããããããããããããããããããããããã') + +INSERT INTO t1 VALUES('ÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃ') + +INSERT INTO t1 VALUES('ääääääääääääääääääääääääääääääää') + +INSERT INTO t1 VALUES('ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ') + +SELECT c1 FROM t1 WHERE c1='aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' ORDER BY BINARY c1 +c1 +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +ÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃ +ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ +ãããããããããããããããããããããããããããããããã +ääääääääääääääääääääääääääääääää + +SELECT c1 FROM t1 WHERE c1='AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' ORDER BY BINARY c1 +c1 +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +ÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃ +ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ +ãããããããããããããããããããããããããããããããã +ääääääääääääääääääääääääääääääää + +SELECT c1 FROM t1 WHERE c1='ãããããããããããããããããããããããããããããããã' ORDER BY BINARY c1 +c1 +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +ÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃ +ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ +ãããããããããããããããããããããããããããããããã +ääääääääääääääääääääääääääääääää + +SELECT c1 FROM t1 WHERE c1='ÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃ' ORDER BY BINARY c1 +c1 +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +ÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃ +ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ +ãããããããããããããããããããããããããããããããã +ääääääääääääääääääääääääääääääää + +SELECT c1 FROM t1 WHERE c1='ääääääääääääääääääääääääääääääää' ORDER BY BINARY c1 +c1 +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +ÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃ +ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ +ãããããããããããããããããããããããããããããããã +ääääääääääääääääääääääääääääääää + +SELECT c1 FROM t1 WHERE c1='ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ' ORDER BY BINARY c1 +c1 +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +ÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃ +ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ +ãããããããããããããããããããããããããããããããã +ääääääääääääääääääääääääääääääää + DROP TABLE t1 DROP PROCEDURE exec; DROP PROCEDURE test01_execval; @@ -1306,6 +1403,7 @@ DROP PROCEDURE test02_same_table_cmp_field_field_op; DROP PROCEDURE test02_same_table_cmp_field_field; DROP PROCEDURE test03; DROP PROCEDURE test04_like; +DROP PROCEDURE test05_mcol4726; EXECUTE IMMEDIATE CONCAT('DROP DATABASE ', @database); USE test; SET @@default_storage_engine=DEFAULT; diff --git a/mysql-test/columnstore/basic/r/ctype_cmp_varchar32_utf8_nopad_bin.result b/mysql-test/columnstore/basic/r/ctype_cmp_varchar32_utf8_nopad_bin.result index aafcb6f06..ee5afa25f 100644 --- a/mysql-test/columnstore/basic/r/ctype_cmp_varchar32_utf8_nopad_bin.result +++ b/mysql-test/columnstore/basic/r/ctype_cmp_varchar32_utf8_nopad_bin.result @@ -152,6 +152,32 @@ CALL exec(REPLACE('SELECT * FROM t1 WHERE c1 LIKE ''VAL%'' ORDER BY BINARY c1',' CALL exec('DROP TABLE t1'); END; $$ +CREATE PROCEDURE test05_mcol4726(len INT, datatype TEXT) +BEGIN +DECLARE small_a VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT('a',len); +DECLARE cap_a VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT('A',len); +DECLARE small_a_with_tilde VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xE3,len); +DECLARE cap_a_with_tilde VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xC3,len); +DECLARE small_a_with_diaeresis VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xE4,len); +DECLARE cap_a_with_diaeresis VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xC4,len); +DECLARE ins VARCHAR(64) CHARACTER SET utf8 DEFAULT 'INSERT INTO t1 VALUES(IVAL)'; +DECLARE sel VARCHAR(64) CHARACTER SET utf8 DEFAULT 'SELECT c1 FROM t1 WHERE c1=IVAL ORDER BY BINARY c1'; +CALL exec(REPLACE('CREATE TABLE t1 (c1 DATATYPE)', 'DATATYPE', datatype)); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', small_a, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', cap_a, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', small_a_with_tilde, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', cap_a_with_tilde, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', small_a_with_diaeresis, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', cap_a_with_diaeresis, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', small_a, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', cap_a, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', small_a_with_tilde, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', cap_a_with_tilde, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', small_a_with_diaeresis, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', cap_a_with_diaeresis, ''''))); +CALL exec('DROP TABLE t1'); +END; +$$ SET NAMES utf8; SET @datatype='VARCHAR(32) CHARACTER SET utf8 COLLATE utf8_nopad_bin'; CREATE TABLE t1 (c1 VARCHAR(32) CHARACTER SET utf8 COLLATE utf8_nopad_bin); @@ -1542,6 +1568,47 @@ SELECT * FROM t1 WHERE c1 LIKE 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%' ORDER BY BINA c1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +DROP TABLE t1 +CALL test05_mcol4726(32, @datatype); + +CREATE TABLE t1 (c1 VARCHAR(32) CHARACTER SET utf8 COLLATE utf8_nopad_bin) + +INSERT INTO t1 VALUES('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa') + +INSERT INTO t1 VALUES('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA') + +INSERT INTO t1 VALUES('ãããããããããããããããããããããããããããããããã') + +INSERT INTO t1 VALUES('ÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃ') + +INSERT INTO t1 VALUES('ääääääääääääääääääääääääääääääää') + +INSERT INTO t1 VALUES('ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ') + +SELECT c1 FROM t1 WHERE c1='aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' ORDER BY BINARY c1 +c1 +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + +SELECT c1 FROM t1 WHERE c1='AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' ORDER BY BINARY c1 +c1 +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + +SELECT c1 FROM t1 WHERE c1='ãããããããããããããããããããããããããããããããã' ORDER BY BINARY c1 +c1 +ãããããããããããããããããããããããããããããããã + +SELECT c1 FROM t1 WHERE c1='ÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃ' ORDER BY BINARY c1 +c1 +ÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃ + +SELECT c1 FROM t1 WHERE c1='ääääääääääääääääääääääääääääääää' ORDER BY BINARY c1 +c1 +ääääääääääääääääääääääääääääääää + +SELECT c1 FROM t1 WHERE c1='ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ' ORDER BY BINARY c1 +c1 +ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ + DROP TABLE t1 DROP PROCEDURE exec; DROP PROCEDURE test01_execval; @@ -1556,6 +1623,7 @@ DROP PROCEDURE test02_same_table_cmp_field_field_op; DROP PROCEDURE test02_same_table_cmp_field_field; DROP PROCEDURE test03; DROP PROCEDURE test04_like; +DROP PROCEDURE test05_mcol4726; EXECUTE IMMEDIATE CONCAT('DROP DATABASE ', @database); USE test; SET @@default_storage_engine=DEFAULT; diff --git a/mysql-test/columnstore/basic/r/ctype_cmp_varchar32_utf8_unicode_ci.result b/mysql-test/columnstore/basic/r/ctype_cmp_varchar32_utf8_unicode_ci.result index b99d0bf58..52513f126 100644 --- a/mysql-test/columnstore/basic/r/ctype_cmp_varchar32_utf8_unicode_ci.result +++ b/mysql-test/columnstore/basic/r/ctype_cmp_varchar32_utf8_unicode_ci.result @@ -152,6 +152,32 @@ CALL exec(REPLACE('SELECT * FROM t1 WHERE c1 LIKE ''VAL%'' ORDER BY BINARY c1',' CALL exec('DROP TABLE t1'); END; $$ +CREATE PROCEDURE test05_mcol4726(len INT, datatype TEXT) +BEGIN +DECLARE small_a VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT('a',len); +DECLARE cap_a VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT('A',len); +DECLARE small_a_with_tilde VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xE3,len); +DECLARE cap_a_with_tilde VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xC3,len); +DECLARE small_a_with_diaeresis VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xE4,len); +DECLARE cap_a_with_diaeresis VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xC4,len); +DECLARE ins VARCHAR(64) CHARACTER SET utf8 DEFAULT 'INSERT INTO t1 VALUES(IVAL)'; +DECLARE sel VARCHAR(64) CHARACTER SET utf8 DEFAULT 'SELECT c1 FROM t1 WHERE c1=IVAL ORDER BY BINARY c1'; +CALL exec(REPLACE('CREATE TABLE t1 (c1 DATATYPE)', 'DATATYPE', datatype)); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', small_a, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', cap_a, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', small_a_with_tilde, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', cap_a_with_tilde, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', small_a_with_diaeresis, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', cap_a_with_diaeresis, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', small_a, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', cap_a, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', small_a_with_tilde, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', cap_a_with_tilde, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', small_a_with_diaeresis, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', cap_a_with_diaeresis, ''''))); +CALL exec('DROP TABLE t1'); +END; +$$ SET NAMES utf8; SET @datatype='VARCHAR(32) CHARACTER SET utf8 COLLATE utf8_unicode_ci'; CREATE TABLE t1 (c1 VARCHAR(32) CHARACTER SET utf8 COLLATE utf8_unicode_ci); @@ -1696,6 +1722,77 @@ c1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +DROP TABLE t1 +CALL test05_mcol4726(32, @datatype); + +CREATE TABLE t1 (c1 VARCHAR(32) CHARACTER SET utf8 COLLATE utf8_unicode_ci) + +INSERT INTO t1 VALUES('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa') + +INSERT INTO t1 VALUES('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA') + +INSERT INTO t1 VALUES('ãããããããããããããããããããããããããããããããã') + +INSERT INTO t1 VALUES('ÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃ') + +INSERT INTO t1 VALUES('ääääääääääääääääääääääääääääääää') + +INSERT INTO t1 VALUES('ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ') + +SELECT c1 FROM t1 WHERE c1='aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' ORDER BY BINARY c1 +c1 +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +ÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃ +ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ +ãããããããããããããããããããããããããããããããã +ääääääääääääääääääääääääääääääää + +SELECT c1 FROM t1 WHERE c1='AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' ORDER BY BINARY c1 +c1 +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +ÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃ +ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ +ãããããããããããããããããããããããããããããããã +ääääääääääääääääääääääääääääääää + +SELECT c1 FROM t1 WHERE c1='ãããããããããããããããããããããããããããããããã' ORDER BY BINARY c1 +c1 +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +ÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃ +ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ +ãããããããããããããããããããããããããããããããã +ääääääääääääääääääääääääääääääää + +SELECT c1 FROM t1 WHERE c1='ÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃ' ORDER BY BINARY c1 +c1 +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +ÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃ +ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ +ãããããããããããããããããããããããããããããããã +ääääääääääääääääääääääääääääääää + +SELECT c1 FROM t1 WHERE c1='ääääääääääääääääääääääääääääääää' ORDER BY BINARY c1 +c1 +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +ÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃ +ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ +ãããããããããããããããããããããããããããããããã +ääääääääääääääääääääääääääääääää + +SELECT c1 FROM t1 WHERE c1='ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ' ORDER BY BINARY c1 +c1 +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +ÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃ +ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ +ãããããããããããããããããããããããããããããããã +ääääääääääääääääääääääääääääääää + DROP TABLE t1 DROP PROCEDURE exec; DROP PROCEDURE test01_execval; @@ -1710,6 +1807,7 @@ DROP PROCEDURE test02_same_table_cmp_field_field_op; DROP PROCEDURE test02_same_table_cmp_field_field; DROP PROCEDURE test03; DROP PROCEDURE test04_like; +DROP PROCEDURE test05_mcol4726; EXECUTE IMMEDIATE CONCAT('DROP DATABASE ', @database); USE test; SET @@default_storage_engine=DEFAULT; diff --git a/mysql-test/columnstore/basic/r/ctype_cmp_varchar32_utf8_unicode_nopad_ci.result b/mysql-test/columnstore/basic/r/ctype_cmp_varchar32_utf8_unicode_nopad_ci.result index 2d9fbe274..48eba6fb7 100644 --- a/mysql-test/columnstore/basic/r/ctype_cmp_varchar32_utf8_unicode_nopad_ci.result +++ b/mysql-test/columnstore/basic/r/ctype_cmp_varchar32_utf8_unicode_nopad_ci.result @@ -152,6 +152,32 @@ CALL exec(REPLACE('SELECT * FROM t1 WHERE c1 LIKE ''VAL%'' ORDER BY BINARY c1',' CALL exec('DROP TABLE t1'); END; $$ +CREATE PROCEDURE test05_mcol4726(len INT, datatype TEXT) +BEGIN +DECLARE small_a VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT('a',len); +DECLARE cap_a VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT('A',len); +DECLARE small_a_with_tilde VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xE3,len); +DECLARE cap_a_with_tilde VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xC3,len); +DECLARE small_a_with_diaeresis VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xE4,len); +DECLARE cap_a_with_diaeresis VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xC4,len); +DECLARE ins VARCHAR(64) CHARACTER SET utf8 DEFAULT 'INSERT INTO t1 VALUES(IVAL)'; +DECLARE sel VARCHAR(64) CHARACTER SET utf8 DEFAULT 'SELECT c1 FROM t1 WHERE c1=IVAL ORDER BY BINARY c1'; +CALL exec(REPLACE('CREATE TABLE t1 (c1 DATATYPE)', 'DATATYPE', datatype)); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', small_a, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', cap_a, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', small_a_with_tilde, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', cap_a_with_tilde, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', small_a_with_diaeresis, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', cap_a_with_diaeresis, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', small_a, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', cap_a, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', small_a_with_tilde, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', cap_a_with_tilde, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', small_a_with_diaeresis, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', cap_a_with_diaeresis, ''''))); +CALL exec('DROP TABLE t1'); +END; +$$ SET NAMES utf8; SET @datatype='VARCHAR(32) CHARACTER SET utf8 COLLATE utf8_unicode_nopad_ci'; CREATE TABLE t1 (c1 VARCHAR(32) CHARACTER SET utf8 COLLATE utf8_unicode_nopad_ci); @@ -1292,6 +1318,77 @@ c1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +DROP TABLE t1 +CALL test05_mcol4726(32, @datatype); + +CREATE TABLE t1 (c1 VARCHAR(32) CHARACTER SET utf8 COLLATE utf8_unicode_nopad_ci) + +INSERT INTO t1 VALUES('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa') + +INSERT INTO t1 VALUES('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA') + +INSERT INTO t1 VALUES('ãããããããããããããããããããããããããããããããã') + +INSERT INTO t1 VALUES('ÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃ') + +INSERT INTO t1 VALUES('ääääääääääääääääääääääääääääääää') + +INSERT INTO t1 VALUES('ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ') + +SELECT c1 FROM t1 WHERE c1='aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' ORDER BY BINARY c1 +c1 +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +ÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃ +ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ +ãããããããããããããããããããããããããããããããã +ääääääääääääääääääääääääääääääää + +SELECT c1 FROM t1 WHERE c1='AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' ORDER BY BINARY c1 +c1 +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +ÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃ +ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ +ãããããããããããããããããããããããããããããããã +ääääääääääääääääääääääääääääääää + +SELECT c1 FROM t1 WHERE c1='ãããããããããããããããããããããããããããããããã' ORDER BY BINARY c1 +c1 +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +ÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃ +ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ +ãããããããããããããããããããããããããããããããã +ääääääääääääääääääääääääääääääää + +SELECT c1 FROM t1 WHERE c1='ÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃ' ORDER BY BINARY c1 +c1 +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +ÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃ +ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ +ãããããããããããããããããããããããããããããããã +ääääääääääääääääääääääääääääääää + +SELECT c1 FROM t1 WHERE c1='ääääääääääääääääääääääääääääääää' ORDER BY BINARY c1 +c1 +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +ÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃ +ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ +ãããããããããããããããããããããããããããããããã +ääääääääääääääääääääääääääääääää + +SELECT c1 FROM t1 WHERE c1='ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ' ORDER BY BINARY c1 +c1 +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +ÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃ +ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ +ãããããããããããããããããããããããããããããããã +ääääääääääääääääääääääääääääääää + DROP TABLE t1 DROP PROCEDURE exec; DROP PROCEDURE test01_execval; @@ -1306,6 +1403,7 @@ DROP PROCEDURE test02_same_table_cmp_field_field_op; DROP PROCEDURE test02_same_table_cmp_field_field; DROP PROCEDURE test03; DROP PROCEDURE test04_like; +DROP PROCEDURE test05_mcol4726; EXECUTE IMMEDIATE CONCAT('DROP DATABASE ', @database); USE test; SET @@default_storage_engine=DEFAULT; diff --git a/mysql-test/columnstore/basic/r/ctype_cmp_varchar4_latin1_bin.result b/mysql-test/columnstore/basic/r/ctype_cmp_varchar4_latin1_bin.result index 5906d4969..e52ff47c5 100644 --- a/mysql-test/columnstore/basic/r/ctype_cmp_varchar4_latin1_bin.result +++ b/mysql-test/columnstore/basic/r/ctype_cmp_varchar4_latin1_bin.result @@ -152,6 +152,32 @@ CALL exec(REPLACE('SELECT * FROM t1 WHERE c1 LIKE ''VAL%'' ORDER BY BINARY c1',' CALL exec('DROP TABLE t1'); END; $$ +CREATE PROCEDURE test05_mcol4726(len INT, datatype TEXT) +BEGIN +DECLARE small_a VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT('a',len); +DECLARE cap_a VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT('A',len); +DECLARE small_a_with_tilde VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xE3,len); +DECLARE cap_a_with_tilde VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xC3,len); +DECLARE small_a_with_diaeresis VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xE4,len); +DECLARE cap_a_with_diaeresis VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xC4,len); +DECLARE ins VARCHAR(64) CHARACTER SET utf8 DEFAULT 'INSERT INTO t1 VALUES(IVAL)'; +DECLARE sel VARCHAR(64) CHARACTER SET utf8 DEFAULT 'SELECT c1 FROM t1 WHERE c1=IVAL ORDER BY BINARY c1'; +CALL exec(REPLACE('CREATE TABLE t1 (c1 DATATYPE)', 'DATATYPE', datatype)); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', small_a, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', cap_a, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', small_a_with_tilde, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', cap_a_with_tilde, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', small_a_with_diaeresis, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', cap_a_with_diaeresis, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', small_a, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', cap_a, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', small_a_with_tilde, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', cap_a_with_tilde, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', small_a_with_diaeresis, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', cap_a_with_diaeresis, ''''))); +CALL exec('DROP TABLE t1'); +END; +$$ SET NAMES utf8; SET @datatype='VARCHAR(4) CHARACTER SET latin1 COLLATE latin1_bin'; CREATE TABLE t1 (c1 VARCHAR(4) CHARACTER SET latin1 COLLATE latin1_bin); @@ -1566,6 +1592,47 @@ SELECT * FROM t1 WHERE c1 LIKE 'AAAA%' ORDER BY BINARY c1 c1 AAAA +DROP TABLE t1 +CALL test05_mcol4726(4, @datatype); + +CREATE TABLE t1 (c1 VARCHAR(4) CHARACTER SET latin1 COLLATE latin1_bin) + +INSERT INTO t1 VALUES('aaaa') + +INSERT INTO t1 VALUES('AAAA') + +INSERT INTO t1 VALUES('ãããã') + +INSERT INTO t1 VALUES('ÃÃÃÃ') + +INSERT INTO t1 VALUES('ääää') + +INSERT INTO t1 VALUES('ÄÄÄÄ') + +SELECT c1 FROM t1 WHERE c1='aaaa' ORDER BY BINARY c1 +c1 +aaaa + +SELECT c1 FROM t1 WHERE c1='AAAA' ORDER BY BINARY c1 +c1 +AAAA + +SELECT c1 FROM t1 WHERE c1='ãããã' ORDER BY BINARY c1 +c1 +ãããã + +SELECT c1 FROM t1 WHERE c1='ÃÃÃÃ' ORDER BY BINARY c1 +c1 +ÃÃÃÃ + +SELECT c1 FROM t1 WHERE c1='ääää' ORDER BY BINARY c1 +c1 +ääää + +SELECT c1 FROM t1 WHERE c1='ÄÄÄÄ' ORDER BY BINARY c1 +c1 +ÄÄÄÄ + DROP TABLE t1 DROP PROCEDURE exec; DROP PROCEDURE test01_execval; @@ -1580,6 +1647,7 @@ DROP PROCEDURE test02_same_table_cmp_field_field_op; DROP PROCEDURE test02_same_table_cmp_field_field; DROP PROCEDURE test03; DROP PROCEDURE test04_like; +DROP PROCEDURE test05_mcol4726; EXECUTE IMMEDIATE CONCAT('DROP DATABASE ', @database); USE test; SET @@default_storage_engine=DEFAULT; diff --git a/mysql-test/columnstore/basic/r/ctype_cmp_varchar4_latin1_nopad_bin.result b/mysql-test/columnstore/basic/r/ctype_cmp_varchar4_latin1_nopad_bin.result index e8fb70330..a30b1be1d 100644 --- a/mysql-test/columnstore/basic/r/ctype_cmp_varchar4_latin1_nopad_bin.result +++ b/mysql-test/columnstore/basic/r/ctype_cmp_varchar4_latin1_nopad_bin.result @@ -152,6 +152,32 @@ CALL exec(REPLACE('SELECT * FROM t1 WHERE c1 LIKE ''VAL%'' ORDER BY BINARY c1',' CALL exec('DROP TABLE t1'); END; $$ +CREATE PROCEDURE test05_mcol4726(len INT, datatype TEXT) +BEGIN +DECLARE small_a VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT('a',len); +DECLARE cap_a VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT('A',len); +DECLARE small_a_with_tilde VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xE3,len); +DECLARE cap_a_with_tilde VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xC3,len); +DECLARE small_a_with_diaeresis VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xE4,len); +DECLARE cap_a_with_diaeresis VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xC4,len); +DECLARE ins VARCHAR(64) CHARACTER SET utf8 DEFAULT 'INSERT INTO t1 VALUES(IVAL)'; +DECLARE sel VARCHAR(64) CHARACTER SET utf8 DEFAULT 'SELECT c1 FROM t1 WHERE c1=IVAL ORDER BY BINARY c1'; +CALL exec(REPLACE('CREATE TABLE t1 (c1 DATATYPE)', 'DATATYPE', datatype)); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', small_a, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', cap_a, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', small_a_with_tilde, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', cap_a_with_tilde, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', small_a_with_diaeresis, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', cap_a_with_diaeresis, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', small_a, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', cap_a, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', small_a_with_tilde, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', cap_a_with_tilde, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', small_a_with_diaeresis, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', cap_a_with_diaeresis, ''''))); +CALL exec('DROP TABLE t1'); +END; +$$ SET NAMES utf8; SET @datatype='VARCHAR(4) CHARACTER SET latin1 COLLATE latin1_nopad_bin'; CREATE TABLE t1 (c1 VARCHAR(4) CHARACTER SET latin1 COLLATE latin1_nopad_bin); @@ -1542,6 +1568,47 @@ SELECT * FROM t1 WHERE c1 LIKE 'AAAA%' ORDER BY BINARY c1 c1 AAAA +DROP TABLE t1 +CALL test05_mcol4726(4, @datatype); + +CREATE TABLE t1 (c1 VARCHAR(4) CHARACTER SET latin1 COLLATE latin1_nopad_bin) + +INSERT INTO t1 VALUES('aaaa') + +INSERT INTO t1 VALUES('AAAA') + +INSERT INTO t1 VALUES('ãããã') + +INSERT INTO t1 VALUES('ÃÃÃÃ') + +INSERT INTO t1 VALUES('ääää') + +INSERT INTO t1 VALUES('ÄÄÄÄ') + +SELECT c1 FROM t1 WHERE c1='aaaa' ORDER BY BINARY c1 +c1 +aaaa + +SELECT c1 FROM t1 WHERE c1='AAAA' ORDER BY BINARY c1 +c1 +AAAA + +SELECT c1 FROM t1 WHERE c1='ãããã' ORDER BY BINARY c1 +c1 +ãããã + +SELECT c1 FROM t1 WHERE c1='ÃÃÃÃ' ORDER BY BINARY c1 +c1 +ÃÃÃÃ + +SELECT c1 FROM t1 WHERE c1='ääää' ORDER BY BINARY c1 +c1 +ääää + +SELECT c1 FROM t1 WHERE c1='ÄÄÄÄ' ORDER BY BINARY c1 +c1 +ÄÄÄÄ + DROP TABLE t1 DROP PROCEDURE exec; DROP PROCEDURE test01_execval; @@ -1556,6 +1623,7 @@ DROP PROCEDURE test02_same_table_cmp_field_field_op; DROP PROCEDURE test02_same_table_cmp_field_field; DROP PROCEDURE test03; DROP PROCEDURE test04_like; +DROP PROCEDURE test05_mcol4726; EXECUTE IMMEDIATE CONCAT('DROP DATABASE ', @database); USE test; SET @@default_storage_engine=DEFAULT; diff --git a/mysql-test/columnstore/basic/r/ctype_cmp_varchar4_latin1_swedish_ci.result b/mysql-test/columnstore/basic/r/ctype_cmp_varchar4_latin1_swedish_ci.result index 558edd802..620068973 100644 --- a/mysql-test/columnstore/basic/r/ctype_cmp_varchar4_latin1_swedish_ci.result +++ b/mysql-test/columnstore/basic/r/ctype_cmp_varchar4_latin1_swedish_ci.result @@ -152,6 +152,32 @@ CALL exec(REPLACE('SELECT * FROM t1 WHERE c1 LIKE ''VAL%'' ORDER BY BINARY c1',' CALL exec('DROP TABLE t1'); END; $$ +CREATE PROCEDURE test05_mcol4726(len INT, datatype TEXT) +BEGIN +DECLARE small_a VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT('a',len); +DECLARE cap_a VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT('A',len); +DECLARE small_a_with_tilde VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xE3,len); +DECLARE cap_a_with_tilde VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xC3,len); +DECLARE small_a_with_diaeresis VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xE4,len); +DECLARE cap_a_with_diaeresis VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xC4,len); +DECLARE ins VARCHAR(64) CHARACTER SET utf8 DEFAULT 'INSERT INTO t1 VALUES(IVAL)'; +DECLARE sel VARCHAR(64) CHARACTER SET utf8 DEFAULT 'SELECT c1 FROM t1 WHERE c1=IVAL ORDER BY BINARY c1'; +CALL exec(REPLACE('CREATE TABLE t1 (c1 DATATYPE)', 'DATATYPE', datatype)); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', small_a, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', cap_a, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', small_a_with_tilde, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', cap_a_with_tilde, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', small_a_with_diaeresis, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', cap_a_with_diaeresis, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', small_a, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', cap_a, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', small_a_with_tilde, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', cap_a_with_tilde, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', small_a_with_diaeresis, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', cap_a_with_diaeresis, ''''))); +CALL exec('DROP TABLE t1'); +END; +$$ SET NAMES utf8; SET @datatype='VARCHAR(4) CHARACTER SET latin1 COLLATE latin1_swedish_ci'; CREATE TABLE t1 (c1 VARCHAR(4) CHARACTER SET latin1 COLLATE latin1_swedish_ci); @@ -1696,6 +1722,61 @@ c1 AAAA aaaa +DROP TABLE t1 +CALL test05_mcol4726(4, @datatype); + +CREATE TABLE t1 (c1 VARCHAR(4) CHARACTER SET latin1 COLLATE latin1_swedish_ci) + +INSERT INTO t1 VALUES('aaaa') + +INSERT INTO t1 VALUES('AAAA') + +INSERT INTO t1 VALUES('ãããã') + +INSERT INTO t1 VALUES('ÃÃÃÃ') + +INSERT INTO t1 VALUES('ääää') + +INSERT INTO t1 VALUES('ÄÄÄÄ') + +SELECT c1 FROM t1 WHERE c1='aaaa' ORDER BY BINARY c1 +c1 +AAAA +aaaa +ÃÃÃÃ +ãããã + +SELECT c1 FROM t1 WHERE c1='AAAA' ORDER BY BINARY c1 +c1 +AAAA +aaaa +ÃÃÃÃ +ãããã + +SELECT c1 FROM t1 WHERE c1='ãããã' ORDER BY BINARY c1 +c1 +AAAA +aaaa +ÃÃÃÃ +ãããã + +SELECT c1 FROM t1 WHERE c1='ÃÃÃÃ' ORDER BY BINARY c1 +c1 +AAAA +aaaa +ÃÃÃÃ +ãããã + +SELECT c1 FROM t1 WHERE c1='ääää' ORDER BY BINARY c1 +c1 +ÄÄÄÄ +ääää + +SELECT c1 FROM t1 WHERE c1='ÄÄÄÄ' ORDER BY BINARY c1 +c1 +ÄÄÄÄ +ääää + DROP TABLE t1 DROP PROCEDURE exec; DROP PROCEDURE test01_execval; @@ -1710,6 +1791,7 @@ DROP PROCEDURE test02_same_table_cmp_field_field_op; DROP PROCEDURE test02_same_table_cmp_field_field; DROP PROCEDURE test03; DROP PROCEDURE test04_like; +DROP PROCEDURE test05_mcol4726; EXECUTE IMMEDIATE CONCAT('DROP DATABASE ', @database); USE test; SET @@default_storage_engine=DEFAULT; diff --git a/mysql-test/columnstore/basic/r/ctype_cmp_varchar4_latin1_swedish_nopad_ci.result b/mysql-test/columnstore/basic/r/ctype_cmp_varchar4_latin1_swedish_nopad_ci.result index 3829439b8..669fbd2d9 100644 --- a/mysql-test/columnstore/basic/r/ctype_cmp_varchar4_latin1_swedish_nopad_ci.result +++ b/mysql-test/columnstore/basic/r/ctype_cmp_varchar4_latin1_swedish_nopad_ci.result @@ -152,6 +152,32 @@ CALL exec(REPLACE('SELECT * FROM t1 WHERE c1 LIKE ''VAL%'' ORDER BY BINARY c1',' CALL exec('DROP TABLE t1'); END; $$ +CREATE PROCEDURE test05_mcol4726(len INT, datatype TEXT) +BEGIN +DECLARE small_a VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT('a',len); +DECLARE cap_a VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT('A',len); +DECLARE small_a_with_tilde VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xE3,len); +DECLARE cap_a_with_tilde VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xC3,len); +DECLARE small_a_with_diaeresis VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xE4,len); +DECLARE cap_a_with_diaeresis VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xC4,len); +DECLARE ins VARCHAR(64) CHARACTER SET utf8 DEFAULT 'INSERT INTO t1 VALUES(IVAL)'; +DECLARE sel VARCHAR(64) CHARACTER SET utf8 DEFAULT 'SELECT c1 FROM t1 WHERE c1=IVAL ORDER BY BINARY c1'; +CALL exec(REPLACE('CREATE TABLE t1 (c1 DATATYPE)', 'DATATYPE', datatype)); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', small_a, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', cap_a, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', small_a_with_tilde, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', cap_a_with_tilde, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', small_a_with_diaeresis, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', cap_a_with_diaeresis, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', small_a, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', cap_a, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', small_a_with_tilde, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', cap_a_with_tilde, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', small_a_with_diaeresis, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', cap_a_with_diaeresis, ''''))); +CALL exec('DROP TABLE t1'); +END; +$$ SET NAMES utf8; SET @datatype='VARCHAR(4) CHARACTER SET latin1 COLLATE latin1_swedish_nopad_ci'; CREATE TABLE t1 (c1 VARCHAR(4) CHARACTER SET latin1 COLLATE latin1_swedish_nopad_ci); @@ -1580,6 +1606,61 @@ c1 AAAA aaaa +DROP TABLE t1 +CALL test05_mcol4726(4, @datatype); + +CREATE TABLE t1 (c1 VARCHAR(4) CHARACTER SET latin1 COLLATE latin1_swedish_nopad_ci) + +INSERT INTO t1 VALUES('aaaa') + +INSERT INTO t1 VALUES('AAAA') + +INSERT INTO t1 VALUES('ãããã') + +INSERT INTO t1 VALUES('ÃÃÃÃ') + +INSERT INTO t1 VALUES('ääää') + +INSERT INTO t1 VALUES('ÄÄÄÄ') + +SELECT c1 FROM t1 WHERE c1='aaaa' ORDER BY BINARY c1 +c1 +AAAA +aaaa +ÃÃÃÃ +ãããã + +SELECT c1 FROM t1 WHERE c1='AAAA' ORDER BY BINARY c1 +c1 +AAAA +aaaa +ÃÃÃÃ +ãããã + +SELECT c1 FROM t1 WHERE c1='ãããã' ORDER BY BINARY c1 +c1 +AAAA +aaaa +ÃÃÃÃ +ãããã + +SELECT c1 FROM t1 WHERE c1='ÃÃÃÃ' ORDER BY BINARY c1 +c1 +AAAA +aaaa +ÃÃÃÃ +ãããã + +SELECT c1 FROM t1 WHERE c1='ääää' ORDER BY BINARY c1 +c1 +ÄÄÄÄ +ääää + +SELECT c1 FROM t1 WHERE c1='ÄÄÄÄ' ORDER BY BINARY c1 +c1 +ÄÄÄÄ +ääää + DROP TABLE t1 DROP PROCEDURE exec; DROP PROCEDURE test01_execval; @@ -1594,6 +1675,7 @@ DROP PROCEDURE test02_same_table_cmp_field_field_op; DROP PROCEDURE test02_same_table_cmp_field_field; DROP PROCEDURE test03; DROP PROCEDURE test04_like; +DROP PROCEDURE test05_mcol4726; EXECUTE IMMEDIATE CONCAT('DROP DATABASE ', @database); USE test; SET @@default_storage_engine=DEFAULT; diff --git a/mysql-test/columnstore/basic/r/ctype_cmp_varchar4_utf8_bin.result b/mysql-test/columnstore/basic/r/ctype_cmp_varchar4_utf8_bin.result index 0534f7792..b12351c2f 100644 --- a/mysql-test/columnstore/basic/r/ctype_cmp_varchar4_utf8_bin.result +++ b/mysql-test/columnstore/basic/r/ctype_cmp_varchar4_utf8_bin.result @@ -152,6 +152,32 @@ CALL exec(REPLACE('SELECT * FROM t1 WHERE c1 LIKE ''VAL%'' ORDER BY BINARY c1',' CALL exec('DROP TABLE t1'); END; $$ +CREATE PROCEDURE test05_mcol4726(len INT, datatype TEXT) +BEGIN +DECLARE small_a VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT('a',len); +DECLARE cap_a VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT('A',len); +DECLARE small_a_with_tilde VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xE3,len); +DECLARE cap_a_with_tilde VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xC3,len); +DECLARE small_a_with_diaeresis VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xE4,len); +DECLARE cap_a_with_diaeresis VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xC4,len); +DECLARE ins VARCHAR(64) CHARACTER SET utf8 DEFAULT 'INSERT INTO t1 VALUES(IVAL)'; +DECLARE sel VARCHAR(64) CHARACTER SET utf8 DEFAULT 'SELECT c1 FROM t1 WHERE c1=IVAL ORDER BY BINARY c1'; +CALL exec(REPLACE('CREATE TABLE t1 (c1 DATATYPE)', 'DATATYPE', datatype)); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', small_a, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', cap_a, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', small_a_with_tilde, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', cap_a_with_tilde, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', small_a_with_diaeresis, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', cap_a_with_diaeresis, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', small_a, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', cap_a, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', small_a_with_tilde, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', cap_a_with_tilde, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', small_a_with_diaeresis, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', cap_a_with_diaeresis, ''''))); +CALL exec('DROP TABLE t1'); +END; +$$ SET NAMES utf8; SET @datatype='VARCHAR(4) CHARACTER SET utf8 COLLATE utf8_bin'; CREATE TABLE t1 (c1 VARCHAR(4) CHARACTER SET utf8 COLLATE utf8_bin); @@ -1566,6 +1592,47 @@ SELECT * FROM t1 WHERE c1 LIKE 'AAAA%' ORDER BY BINARY c1 c1 AAAA +DROP TABLE t1 +CALL test05_mcol4726(4, @datatype); + +CREATE TABLE t1 (c1 VARCHAR(4) CHARACTER SET utf8 COLLATE utf8_bin) + +INSERT INTO t1 VALUES('aaaa') + +INSERT INTO t1 VALUES('AAAA') + +INSERT INTO t1 VALUES('ãããã') + +INSERT INTO t1 VALUES('ÃÃÃÃ') + +INSERT INTO t1 VALUES('ääää') + +INSERT INTO t1 VALUES('ÄÄÄÄ') + +SELECT c1 FROM t1 WHERE c1='aaaa' ORDER BY BINARY c1 +c1 +aaaa + +SELECT c1 FROM t1 WHERE c1='AAAA' ORDER BY BINARY c1 +c1 +AAAA + +SELECT c1 FROM t1 WHERE c1='ãããã' ORDER BY BINARY c1 +c1 +ãããã + +SELECT c1 FROM t1 WHERE c1='ÃÃÃÃ' ORDER BY BINARY c1 +c1 +ÃÃÃÃ + +SELECT c1 FROM t1 WHERE c1='ääää' ORDER BY BINARY c1 +c1 +ääää + +SELECT c1 FROM t1 WHERE c1='ÄÄÄÄ' ORDER BY BINARY c1 +c1 +ÄÄÄÄ + DROP TABLE t1 DROP PROCEDURE exec; DROP PROCEDURE test01_execval; @@ -1580,6 +1647,7 @@ DROP PROCEDURE test02_same_table_cmp_field_field_op; DROP PROCEDURE test02_same_table_cmp_field_field; DROP PROCEDURE test03; DROP PROCEDURE test04_like; +DROP PROCEDURE test05_mcol4726; EXECUTE IMMEDIATE CONCAT('DROP DATABASE ', @database); USE test; SET @@default_storage_engine=DEFAULT; diff --git a/mysql-test/columnstore/basic/r/ctype_cmp_varchar4_utf8_general_ci.result b/mysql-test/columnstore/basic/r/ctype_cmp_varchar4_utf8_general_ci.result index d727aa611..f4e40e9b1 100644 --- a/mysql-test/columnstore/basic/r/ctype_cmp_varchar4_utf8_general_ci.result +++ b/mysql-test/columnstore/basic/r/ctype_cmp_varchar4_utf8_general_ci.result @@ -152,6 +152,32 @@ CALL exec(REPLACE('SELECT * FROM t1 WHERE c1 LIKE ''VAL%'' ORDER BY BINARY c1',' CALL exec('DROP TABLE t1'); END; $$ +CREATE PROCEDURE test05_mcol4726(len INT, datatype TEXT) +BEGIN +DECLARE small_a VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT('a',len); +DECLARE cap_a VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT('A',len); +DECLARE small_a_with_tilde VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xE3,len); +DECLARE cap_a_with_tilde VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xC3,len); +DECLARE small_a_with_diaeresis VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xE4,len); +DECLARE cap_a_with_diaeresis VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xC4,len); +DECLARE ins VARCHAR(64) CHARACTER SET utf8 DEFAULT 'INSERT INTO t1 VALUES(IVAL)'; +DECLARE sel VARCHAR(64) CHARACTER SET utf8 DEFAULT 'SELECT c1 FROM t1 WHERE c1=IVAL ORDER BY BINARY c1'; +CALL exec(REPLACE('CREATE TABLE t1 (c1 DATATYPE)', 'DATATYPE', datatype)); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', small_a, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', cap_a, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', small_a_with_tilde, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', cap_a_with_tilde, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', small_a_with_diaeresis, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', cap_a_with_diaeresis, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', small_a, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', cap_a, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', small_a_with_tilde, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', cap_a_with_tilde, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', small_a_with_diaeresis, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', cap_a_with_diaeresis, ''''))); +CALL exec('DROP TABLE t1'); +END; +$$ SET NAMES utf8; SET @datatype='VARCHAR(4) CHARACTER SET utf8 COLLATE utf8_general_ci'; CREATE TABLE t1 (c1 VARCHAR(4) CHARACTER SET utf8 COLLATE utf8_general_ci); @@ -1696,6 +1722,77 @@ c1 AAAA aaaa +DROP TABLE t1 +CALL test05_mcol4726(4, @datatype); + +CREATE TABLE t1 (c1 VARCHAR(4) CHARACTER SET utf8 COLLATE utf8_general_ci) + +INSERT INTO t1 VALUES('aaaa') + +INSERT INTO t1 VALUES('AAAA') + +INSERT INTO t1 VALUES('ãããã') + +INSERT INTO t1 VALUES('ÃÃÃÃ') + +INSERT INTO t1 VALUES('ääää') + +INSERT INTO t1 VALUES('ÄÄÄÄ') + +SELECT c1 FROM t1 WHERE c1='aaaa' ORDER BY BINARY c1 +c1 +AAAA +aaaa +ÃÃÃÃ +ÄÄÄÄ +ãããã +ääää + +SELECT c1 FROM t1 WHERE c1='AAAA' ORDER BY BINARY c1 +c1 +AAAA +aaaa +ÃÃÃÃ +ÄÄÄÄ +ãããã +ääää + +SELECT c1 FROM t1 WHERE c1='ãããã' ORDER BY BINARY c1 +c1 +AAAA +aaaa +ÃÃÃÃ +ÄÄÄÄ +ãããã +ääää + +SELECT c1 FROM t1 WHERE c1='ÃÃÃÃ' ORDER BY BINARY c1 +c1 +AAAA +aaaa +ÃÃÃÃ +ÄÄÄÄ +ãããã +ääää + +SELECT c1 FROM t1 WHERE c1='ääää' ORDER BY BINARY c1 +c1 +AAAA +aaaa +ÃÃÃÃ +ÄÄÄÄ +ãããã +ääää + +SELECT c1 FROM t1 WHERE c1='ÄÄÄÄ' ORDER BY BINARY c1 +c1 +AAAA +aaaa +ÃÃÃÃ +ÄÄÄÄ +ãããã +ääää + DROP TABLE t1 DROP PROCEDURE exec; DROP PROCEDURE test01_execval; @@ -1710,6 +1807,7 @@ DROP PROCEDURE test02_same_table_cmp_field_field_op; DROP PROCEDURE test02_same_table_cmp_field_field; DROP PROCEDURE test03; DROP PROCEDURE test04_like; +DROP PROCEDURE test05_mcol4726; EXECUTE IMMEDIATE CONCAT('DROP DATABASE ', @database); USE test; SET @@default_storage_engine=DEFAULT; diff --git a/mysql-test/columnstore/basic/r/ctype_cmp_varchar4_utf8_general_nopad_ci.result b/mysql-test/columnstore/basic/r/ctype_cmp_varchar4_utf8_general_nopad_ci.result index eb876d6fd..3d4546dc5 100644 --- a/mysql-test/columnstore/basic/r/ctype_cmp_varchar4_utf8_general_nopad_ci.result +++ b/mysql-test/columnstore/basic/r/ctype_cmp_varchar4_utf8_general_nopad_ci.result @@ -152,6 +152,32 @@ CALL exec(REPLACE('SELECT * FROM t1 WHERE c1 LIKE ''VAL%'' ORDER BY BINARY c1',' CALL exec('DROP TABLE t1'); END; $$ +CREATE PROCEDURE test05_mcol4726(len INT, datatype TEXT) +BEGIN +DECLARE small_a VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT('a',len); +DECLARE cap_a VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT('A',len); +DECLARE small_a_with_tilde VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xE3,len); +DECLARE cap_a_with_tilde VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xC3,len); +DECLARE small_a_with_diaeresis VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xE4,len); +DECLARE cap_a_with_diaeresis VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xC4,len); +DECLARE ins VARCHAR(64) CHARACTER SET utf8 DEFAULT 'INSERT INTO t1 VALUES(IVAL)'; +DECLARE sel VARCHAR(64) CHARACTER SET utf8 DEFAULT 'SELECT c1 FROM t1 WHERE c1=IVAL ORDER BY BINARY c1'; +CALL exec(REPLACE('CREATE TABLE t1 (c1 DATATYPE)', 'DATATYPE', datatype)); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', small_a, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', cap_a, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', small_a_with_tilde, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', cap_a_with_tilde, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', small_a_with_diaeresis, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', cap_a_with_diaeresis, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', small_a, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', cap_a, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', small_a_with_tilde, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', cap_a_with_tilde, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', small_a_with_diaeresis, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', cap_a_with_diaeresis, ''''))); +CALL exec('DROP TABLE t1'); +END; +$$ SET NAMES utf8; SET @datatype='VARCHAR(4) CHARACTER SET utf8 COLLATE utf8_general_nopad_ci'; CREATE TABLE t1 (c1 VARCHAR(4) CHARACTER SET utf8 COLLATE utf8_general_nopad_ci); @@ -1292,6 +1318,77 @@ c1 AAAA aaaa +DROP TABLE t1 +CALL test05_mcol4726(4, @datatype); + +CREATE TABLE t1 (c1 VARCHAR(4) CHARACTER SET utf8 COLLATE utf8_general_nopad_ci) + +INSERT INTO t1 VALUES('aaaa') + +INSERT INTO t1 VALUES('AAAA') + +INSERT INTO t1 VALUES('ãããã') + +INSERT INTO t1 VALUES('ÃÃÃÃ') + +INSERT INTO t1 VALUES('ääää') + +INSERT INTO t1 VALUES('ÄÄÄÄ') + +SELECT c1 FROM t1 WHERE c1='aaaa' ORDER BY BINARY c1 +c1 +AAAA +aaaa +ÃÃÃÃ +ÄÄÄÄ +ãããã +ääää + +SELECT c1 FROM t1 WHERE c1='AAAA' ORDER BY BINARY c1 +c1 +AAAA +aaaa +ÃÃÃÃ +ÄÄÄÄ +ãããã +ääää + +SELECT c1 FROM t1 WHERE c1='ãããã' ORDER BY BINARY c1 +c1 +AAAA +aaaa +ÃÃÃÃ +ÄÄÄÄ +ãããã +ääää + +SELECT c1 FROM t1 WHERE c1='ÃÃÃÃ' ORDER BY BINARY c1 +c1 +AAAA +aaaa +ÃÃÃÃ +ÄÄÄÄ +ãããã +ääää + +SELECT c1 FROM t1 WHERE c1='ääää' ORDER BY BINARY c1 +c1 +AAAA +aaaa +ÃÃÃÃ +ÄÄÄÄ +ãããã +ääää + +SELECT c1 FROM t1 WHERE c1='ÄÄÄÄ' ORDER BY BINARY c1 +c1 +AAAA +aaaa +ÃÃÃÃ +ÄÄÄÄ +ãããã +ääää + DROP TABLE t1 DROP PROCEDURE exec; DROP PROCEDURE test01_execval; @@ -1306,6 +1403,7 @@ DROP PROCEDURE test02_same_table_cmp_field_field_op; DROP PROCEDURE test02_same_table_cmp_field_field; DROP PROCEDURE test03; DROP PROCEDURE test04_like; +DROP PROCEDURE test05_mcol4726; EXECUTE IMMEDIATE CONCAT('DROP DATABASE ', @database); USE test; SET @@default_storage_engine=DEFAULT; diff --git a/mysql-test/columnstore/basic/r/ctype_cmp_varchar4_utf8_nopad_bin.result b/mysql-test/columnstore/basic/r/ctype_cmp_varchar4_utf8_nopad_bin.result index 3ae90794b..8db2cd04a 100644 --- a/mysql-test/columnstore/basic/r/ctype_cmp_varchar4_utf8_nopad_bin.result +++ b/mysql-test/columnstore/basic/r/ctype_cmp_varchar4_utf8_nopad_bin.result @@ -152,6 +152,32 @@ CALL exec(REPLACE('SELECT * FROM t1 WHERE c1 LIKE ''VAL%'' ORDER BY BINARY c1',' CALL exec('DROP TABLE t1'); END; $$ +CREATE PROCEDURE test05_mcol4726(len INT, datatype TEXT) +BEGIN +DECLARE small_a VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT('a',len); +DECLARE cap_a VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT('A',len); +DECLARE small_a_with_tilde VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xE3,len); +DECLARE cap_a_with_tilde VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xC3,len); +DECLARE small_a_with_diaeresis VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xE4,len); +DECLARE cap_a_with_diaeresis VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xC4,len); +DECLARE ins VARCHAR(64) CHARACTER SET utf8 DEFAULT 'INSERT INTO t1 VALUES(IVAL)'; +DECLARE sel VARCHAR(64) CHARACTER SET utf8 DEFAULT 'SELECT c1 FROM t1 WHERE c1=IVAL ORDER BY BINARY c1'; +CALL exec(REPLACE('CREATE TABLE t1 (c1 DATATYPE)', 'DATATYPE', datatype)); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', small_a, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', cap_a, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', small_a_with_tilde, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', cap_a_with_tilde, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', small_a_with_diaeresis, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', cap_a_with_diaeresis, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', small_a, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', cap_a, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', small_a_with_tilde, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', cap_a_with_tilde, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', small_a_with_diaeresis, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', cap_a_with_diaeresis, ''''))); +CALL exec('DROP TABLE t1'); +END; +$$ SET NAMES utf8; SET @datatype='VARCHAR(4) CHARACTER SET utf8 COLLATE utf8_nopad_bin'; CREATE TABLE t1 (c1 VARCHAR(4) CHARACTER SET utf8 COLLATE utf8_nopad_bin); @@ -1542,6 +1568,47 @@ SELECT * FROM t1 WHERE c1 LIKE 'AAAA%' ORDER BY BINARY c1 c1 AAAA +DROP TABLE t1 +CALL test05_mcol4726(4, @datatype); + +CREATE TABLE t1 (c1 VARCHAR(4) CHARACTER SET utf8 COLLATE utf8_nopad_bin) + +INSERT INTO t1 VALUES('aaaa') + +INSERT INTO t1 VALUES('AAAA') + +INSERT INTO t1 VALUES('ãããã') + +INSERT INTO t1 VALUES('ÃÃÃÃ') + +INSERT INTO t1 VALUES('ääää') + +INSERT INTO t1 VALUES('ÄÄÄÄ') + +SELECT c1 FROM t1 WHERE c1='aaaa' ORDER BY BINARY c1 +c1 +aaaa + +SELECT c1 FROM t1 WHERE c1='AAAA' ORDER BY BINARY c1 +c1 +AAAA + +SELECT c1 FROM t1 WHERE c1='ãããã' ORDER BY BINARY c1 +c1 +ãããã + +SELECT c1 FROM t1 WHERE c1='ÃÃÃÃ' ORDER BY BINARY c1 +c1 +ÃÃÃÃ + +SELECT c1 FROM t1 WHERE c1='ääää' ORDER BY BINARY c1 +c1 +ääää + +SELECT c1 FROM t1 WHERE c1='ÄÄÄÄ' ORDER BY BINARY c1 +c1 +ÄÄÄÄ + DROP TABLE t1 DROP PROCEDURE exec; DROP PROCEDURE test01_execval; @@ -1556,6 +1623,7 @@ DROP PROCEDURE test02_same_table_cmp_field_field_op; DROP PROCEDURE test02_same_table_cmp_field_field; DROP PROCEDURE test03; DROP PROCEDURE test04_like; +DROP PROCEDURE test05_mcol4726; EXECUTE IMMEDIATE CONCAT('DROP DATABASE ', @database); USE test; SET @@default_storage_engine=DEFAULT; diff --git a/mysql-test/columnstore/basic/r/ctype_cmp_varchar4_utf8_unicode_ci.result b/mysql-test/columnstore/basic/r/ctype_cmp_varchar4_utf8_unicode_ci.result index 5451c2d6b..00a9c9796 100644 --- a/mysql-test/columnstore/basic/r/ctype_cmp_varchar4_utf8_unicode_ci.result +++ b/mysql-test/columnstore/basic/r/ctype_cmp_varchar4_utf8_unicode_ci.result @@ -152,6 +152,32 @@ CALL exec(REPLACE('SELECT * FROM t1 WHERE c1 LIKE ''VAL%'' ORDER BY BINARY c1',' CALL exec('DROP TABLE t1'); END; $$ +CREATE PROCEDURE test05_mcol4726(len INT, datatype TEXT) +BEGIN +DECLARE small_a VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT('a',len); +DECLARE cap_a VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT('A',len); +DECLARE small_a_with_tilde VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xE3,len); +DECLARE cap_a_with_tilde VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xC3,len); +DECLARE small_a_with_diaeresis VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xE4,len); +DECLARE cap_a_with_diaeresis VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xC4,len); +DECLARE ins VARCHAR(64) CHARACTER SET utf8 DEFAULT 'INSERT INTO t1 VALUES(IVAL)'; +DECLARE sel VARCHAR(64) CHARACTER SET utf8 DEFAULT 'SELECT c1 FROM t1 WHERE c1=IVAL ORDER BY BINARY c1'; +CALL exec(REPLACE('CREATE TABLE t1 (c1 DATATYPE)', 'DATATYPE', datatype)); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', small_a, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', cap_a, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', small_a_with_tilde, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', cap_a_with_tilde, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', small_a_with_diaeresis, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', cap_a_with_diaeresis, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', small_a, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', cap_a, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', small_a_with_tilde, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', cap_a_with_tilde, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', small_a_with_diaeresis, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', cap_a_with_diaeresis, ''''))); +CALL exec('DROP TABLE t1'); +END; +$$ SET NAMES utf8; SET @datatype='VARCHAR(4) CHARACTER SET utf8 COLLATE utf8_unicode_ci'; CREATE TABLE t1 (c1 VARCHAR(4) CHARACTER SET utf8 COLLATE utf8_unicode_ci); @@ -1696,6 +1722,77 @@ c1 AAAA aaaa +DROP TABLE t1 +CALL test05_mcol4726(4, @datatype); + +CREATE TABLE t1 (c1 VARCHAR(4) CHARACTER SET utf8 COLLATE utf8_unicode_ci) + +INSERT INTO t1 VALUES('aaaa') + +INSERT INTO t1 VALUES('AAAA') + +INSERT INTO t1 VALUES('ãããã') + +INSERT INTO t1 VALUES('ÃÃÃÃ') + +INSERT INTO t1 VALUES('ääää') + +INSERT INTO t1 VALUES('ÄÄÄÄ') + +SELECT c1 FROM t1 WHERE c1='aaaa' ORDER BY BINARY c1 +c1 +AAAA +aaaa +ÃÃÃÃ +ÄÄÄÄ +ãããã +ääää + +SELECT c1 FROM t1 WHERE c1='AAAA' ORDER BY BINARY c1 +c1 +AAAA +aaaa +ÃÃÃÃ +ÄÄÄÄ +ãããã +ääää + +SELECT c1 FROM t1 WHERE c1='ãããã' ORDER BY BINARY c1 +c1 +AAAA +aaaa +ÃÃÃÃ +ÄÄÄÄ +ãããã +ääää + +SELECT c1 FROM t1 WHERE c1='ÃÃÃÃ' ORDER BY BINARY c1 +c1 +AAAA +aaaa +ÃÃÃÃ +ÄÄÄÄ +ãããã +ääää + +SELECT c1 FROM t1 WHERE c1='ääää' ORDER BY BINARY c1 +c1 +AAAA +aaaa +ÃÃÃÃ +ÄÄÄÄ +ãããã +ääää + +SELECT c1 FROM t1 WHERE c1='ÄÄÄÄ' ORDER BY BINARY c1 +c1 +AAAA +aaaa +ÃÃÃÃ +ÄÄÄÄ +ãããã +ääää + DROP TABLE t1 DROP PROCEDURE exec; DROP PROCEDURE test01_execval; @@ -1710,6 +1807,7 @@ DROP PROCEDURE test02_same_table_cmp_field_field_op; DROP PROCEDURE test02_same_table_cmp_field_field; DROP PROCEDURE test03; DROP PROCEDURE test04_like; +DROP PROCEDURE test05_mcol4726; EXECUTE IMMEDIATE CONCAT('DROP DATABASE ', @database); USE test; SET @@default_storage_engine=DEFAULT; diff --git a/mysql-test/columnstore/basic/r/ctype_cmp_varchar4_utf8_unicode_nopad_ci.result b/mysql-test/columnstore/basic/r/ctype_cmp_varchar4_utf8_unicode_nopad_ci.result index 4def5914b..5a90cc3dc 100644 --- a/mysql-test/columnstore/basic/r/ctype_cmp_varchar4_utf8_unicode_nopad_ci.result +++ b/mysql-test/columnstore/basic/r/ctype_cmp_varchar4_utf8_unicode_nopad_ci.result @@ -152,6 +152,32 @@ CALL exec(REPLACE('SELECT * FROM t1 WHERE c1 LIKE ''VAL%'' ORDER BY BINARY c1',' CALL exec('DROP TABLE t1'); END; $$ +CREATE PROCEDURE test05_mcol4726(len INT, datatype TEXT) +BEGIN +DECLARE small_a VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT('a',len); +DECLARE cap_a VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT('A',len); +DECLARE small_a_with_tilde VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xE3,len); +DECLARE cap_a_with_tilde VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xC3,len); +DECLARE small_a_with_diaeresis VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xE4,len); +DECLARE cap_a_with_diaeresis VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xC4,len); +DECLARE ins VARCHAR(64) CHARACTER SET utf8 DEFAULT 'INSERT INTO t1 VALUES(IVAL)'; +DECLARE sel VARCHAR(64) CHARACTER SET utf8 DEFAULT 'SELECT c1 FROM t1 WHERE c1=IVAL ORDER BY BINARY c1'; +CALL exec(REPLACE('CREATE TABLE t1 (c1 DATATYPE)', 'DATATYPE', datatype)); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', small_a, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', cap_a, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', small_a_with_tilde, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', cap_a_with_tilde, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', small_a_with_diaeresis, ''''))); +CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', cap_a_with_diaeresis, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', small_a, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', cap_a, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', small_a_with_tilde, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', cap_a_with_tilde, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', small_a_with_diaeresis, ''''))); +CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', cap_a_with_diaeresis, ''''))); +CALL exec('DROP TABLE t1'); +END; +$$ SET NAMES utf8; SET @datatype='VARCHAR(4) CHARACTER SET utf8 COLLATE utf8_unicode_nopad_ci'; CREATE TABLE t1 (c1 VARCHAR(4) CHARACTER SET utf8 COLLATE utf8_unicode_nopad_ci); @@ -1292,6 +1318,77 @@ c1 AAAA aaaa +DROP TABLE t1 +CALL test05_mcol4726(4, @datatype); + +CREATE TABLE t1 (c1 VARCHAR(4) CHARACTER SET utf8 COLLATE utf8_unicode_nopad_ci) + +INSERT INTO t1 VALUES('aaaa') + +INSERT INTO t1 VALUES('AAAA') + +INSERT INTO t1 VALUES('ãããã') + +INSERT INTO t1 VALUES('ÃÃÃÃ') + +INSERT INTO t1 VALUES('ääää') + +INSERT INTO t1 VALUES('ÄÄÄÄ') + +SELECT c1 FROM t1 WHERE c1='aaaa' ORDER BY BINARY c1 +c1 +AAAA +aaaa +ÃÃÃÃ +ÄÄÄÄ +ãããã +ääää + +SELECT c1 FROM t1 WHERE c1='AAAA' ORDER BY BINARY c1 +c1 +AAAA +aaaa +ÃÃÃÃ +ÄÄÄÄ +ãããã +ääää + +SELECT c1 FROM t1 WHERE c1='ãããã' ORDER BY BINARY c1 +c1 +AAAA +aaaa +ÃÃÃÃ +ÄÄÄÄ +ãããã +ääää + +SELECT c1 FROM t1 WHERE c1='ÃÃÃÃ' ORDER BY BINARY c1 +c1 +AAAA +aaaa +ÃÃÃÃ +ÄÄÄÄ +ãããã +ääää + +SELECT c1 FROM t1 WHERE c1='ääää' ORDER BY BINARY c1 +c1 +AAAA +aaaa +ÃÃÃÃ +ÄÄÄÄ +ãããã +ääää + +SELECT c1 FROM t1 WHERE c1='ÄÄÄÄ' ORDER BY BINARY c1 +c1 +AAAA +aaaa +ÃÃÃÃ +ÄÄÄÄ +ãããã +ääää + DROP TABLE t1 DROP PROCEDURE exec; DROP PROCEDURE test01_execval; @@ -1306,6 +1403,7 @@ DROP PROCEDURE test02_same_table_cmp_field_field_op; DROP PROCEDURE test02_same_table_cmp_field_field; DROP PROCEDURE test03; DROP PROCEDURE test04_like; +DROP PROCEDURE test05_mcol4726; EXECUTE IMMEDIATE CONCAT('DROP DATABASE ', @database); USE test; SET @@default_storage_engine=DEFAULT; diff --git a/mysql-test/columnstore/basic/t/ctype_cmp_char1_latin1_swedish_ci.test b/mysql-test/columnstore/basic/t/ctype_cmp_char1_latin1_swedish_ci.test index 59f3eea84..01d1ca583 100644 --- a/mysql-test/columnstore/basic/t/ctype_cmp_char1_latin1_swedish_ci.test +++ b/mysql-test/columnstore/basic/t/ctype_cmp_char1_latin1_swedish_ci.test @@ -1,8 +1,34 @@ --source ../include/have_columnstore.inc --source ctype_cmp_combinations.inc +--source ctype_cmp_create.inc SET NAMES utf8; + +SET @datatype='CHAR(1) CHARACTER SET latin1 COLLATE latin1_swedish_ci'; + +CREATE TABLE t1 (c1 CHAR(1) CHARACTER SET latin1 COLLATE latin1_swedish_ci); + +CALL test01_populate(1,1); +CALL test01_field_literal(1,2); +CALL test01_field_field(); +CALL test01_distinct(); +DROP TABLE t1; + +CALL test02_same_table_create_table(@datatype); +CALL test02_same_table_populate(); +CALL test02_same_table_cmp_field_field(); +DROP TABLE t1; + +CALL test03(1, @datatype); + +CALL test04_like(1, @datatype); + +CALL test05_mcol4726(1, @datatype); + +--source ctype_cmp_drop.inc + + --echo # --echo # MCOL-4721 CHAR(1) is not collation-aware for GROUP/DISTINCT --echo # @@ -15,3 +41,12 @@ INSERT INTO t1 VALUES ('ä'),('Ä'),('ã'),('Ã'); SELECT c1, COUNT(*) FROM t1 GROUP BY c1 ORDER BY c1; SELECT DISTINCT c1 FROM t1 ORDER BY c1; DROP TABLE t1; + +--echo # +--echo # MCOL-4726 Wrong result of WHERE char1_col='A' +--echo # + +CREATE TABLE t1 (a CHAR(1) CHARACTER SET latin1); +INSERT INTO t1 VALUES ('a'),('Ã'); +SELECT * FROM t1 WHERE a='A'; +DROP TABLE t1; diff --git a/mysql-test/columnstore/basic/t/ctype_cmp_char4_latin1_swedish_ci.test b/mysql-test/columnstore/basic/t/ctype_cmp_char4_latin1_swedish_ci.test index 4cfc4ff6c..86069a8ea 100644 --- a/mysql-test/columnstore/basic/t/ctype_cmp_char4_latin1_swedish_ci.test +++ b/mysql-test/columnstore/basic/t/ctype_cmp_char4_latin1_swedish_ci.test @@ -23,4 +23,6 @@ CALL test03(4, @datatype); CALL test04_like(4, @datatype); +CALL test05_mcol4726(4, @datatype); + --source ctype_cmp_drop.inc diff --git a/mysql-test/columnstore/basic/t/ctype_cmp_char5_latin1_swedish_ci.test b/mysql-test/columnstore/basic/t/ctype_cmp_char5_latin1_swedish_ci.test index 2b4a24b62..4e257dd02 100644 --- a/mysql-test/columnstore/basic/t/ctype_cmp_char5_latin1_swedish_ci.test +++ b/mysql-test/columnstore/basic/t/ctype_cmp_char5_latin1_swedish_ci.test @@ -23,4 +23,6 @@ CALL test03(5, @datatype); CALL test04_like(5, @datatype); +CALL test05_mcol4726(5, @datatype); + --source ctype_cmp_drop.inc diff --git a/mysql-test/columnstore/basic/t/ctype_cmp_create.inc b/mysql-test/columnstore/basic/t/ctype_cmp_create.inc index 389dfcd87..d4597beb7 100644 --- a/mysql-test/columnstore/basic/t/ctype_cmp_create.inc +++ b/mysql-test/columnstore/basic/t/ctype_cmp_create.inc @@ -227,3 +227,37 @@ BEGIN END; $$ DELIMITER ;$$ + + +DELIMITER $$; +CREATE PROCEDURE test05_mcol4726(len INT, datatype TEXT) +BEGIN + DECLARE small_a VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT('a',len); + DECLARE cap_a VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT('A',len); + DECLARE small_a_with_tilde VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xE3,len); + DECLARE cap_a_with_tilde VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xC3,len); + DECLARE small_a_with_diaeresis VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xE4,len); + DECLARE cap_a_with_diaeresis VARCHAR(64) CHARACTER SET utf8 DEFAULT REPEAT(_latin1 0xC4,len); + DECLARE ins VARCHAR(64) CHARACTER SET utf8 DEFAULT 'INSERT INTO t1 VALUES(IVAL)'; + DECLARE sel VARCHAR(64) CHARACTER SET utf8 DEFAULT 'SELECT c1 FROM t1 WHERE c1=IVAL ORDER BY BINARY c1'; + + CALL exec(REPLACE('CREATE TABLE t1 (c1 DATATYPE)', 'DATATYPE', datatype)); + CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', small_a, ''''))); + CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', cap_a, ''''))); + CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', small_a_with_tilde, ''''))); + CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', cap_a_with_tilde, ''''))); + CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', small_a_with_diaeresis, ''''))); + CALL exec(REPLACE(ins, 'IVAL', CONCAT('''', cap_a_with_diaeresis, ''''))); + + CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', small_a, ''''))); + CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', cap_a, ''''))); + CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', small_a_with_tilde, ''''))); + CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', cap_a_with_tilde, ''''))); + CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', small_a_with_diaeresis, ''''))); + CALL exec(REPLACE(sel, 'IVAL', CONCAT('''', cap_a_with_diaeresis, ''''))); + + CALL exec('DROP TABLE t1'); +END; +$$ +DELIMITER ;$$ + diff --git a/mysql-test/columnstore/basic/t/ctype_cmp_drop.inc b/mysql-test/columnstore/basic/t/ctype_cmp_drop.inc index 59ad5b3a2..740f39c09 100644 --- a/mysql-test/columnstore/basic/t/ctype_cmp_drop.inc +++ b/mysql-test/columnstore/basic/t/ctype_cmp_drop.inc @@ -11,6 +11,7 @@ DROP PROCEDURE test02_same_table_cmp_field_field_op; DROP PROCEDURE test02_same_table_cmp_field_field; DROP PROCEDURE test03; DROP PROCEDURE test04_like; +DROP PROCEDURE test05_mcol4726; EXECUTE IMMEDIATE CONCAT('DROP DATABASE ', @database); USE test; SET @@default_storage_engine=DEFAULT; diff --git a/mysql-test/columnstore/basic/t/ctype_cmp_varchar32_latin1_bin.test b/mysql-test/columnstore/basic/t/ctype_cmp_varchar32_latin1_bin.test index 107458fe0..68851baf1 100644 --- a/mysql-test/columnstore/basic/t/ctype_cmp_varchar32_latin1_bin.test +++ b/mysql-test/columnstore/basic/t/ctype_cmp_varchar32_latin1_bin.test @@ -24,4 +24,6 @@ CALL test03(32,@datatype); CALL test04_like(32,@datatype); +CALL test05_mcol4726(32, @datatype); + --source ctype_cmp_drop.inc diff --git a/mysql-test/columnstore/basic/t/ctype_cmp_varchar32_latin1_nopad_bin.test b/mysql-test/columnstore/basic/t/ctype_cmp_varchar32_latin1_nopad_bin.test index bd138bd75..cef4142cd 100644 --- a/mysql-test/columnstore/basic/t/ctype_cmp_varchar32_latin1_nopad_bin.test +++ b/mysql-test/columnstore/basic/t/ctype_cmp_varchar32_latin1_nopad_bin.test @@ -23,4 +23,6 @@ CALL test03(32,@datatype); CALL test04_like(32,@datatype); +CALL test05_mcol4726(32, @datatype); + --source ctype_cmp_drop.inc diff --git a/mysql-test/columnstore/basic/t/ctype_cmp_varchar32_latin1_swedish_ci.test b/mysql-test/columnstore/basic/t/ctype_cmp_varchar32_latin1_swedish_ci.test index d3754d147..5b2919f1a 100644 --- a/mysql-test/columnstore/basic/t/ctype_cmp_varchar32_latin1_swedish_ci.test +++ b/mysql-test/columnstore/basic/t/ctype_cmp_varchar32_latin1_swedish_ci.test @@ -23,4 +23,6 @@ CALL test03(32,@datatype); CALL test04_like(32,@datatype); +CALL test05_mcol4726(32, @datatype); + --source ctype_cmp_drop.inc diff --git a/mysql-test/columnstore/basic/t/ctype_cmp_varchar32_latin1_swedish_nopad_ci.test b/mysql-test/columnstore/basic/t/ctype_cmp_varchar32_latin1_swedish_nopad_ci.test index 33387efb4..6d3bdf7f1 100644 --- a/mysql-test/columnstore/basic/t/ctype_cmp_varchar32_latin1_swedish_nopad_ci.test +++ b/mysql-test/columnstore/basic/t/ctype_cmp_varchar32_latin1_swedish_nopad_ci.test @@ -23,4 +23,6 @@ CALL test03(32,@datatype); CALL test04_like(32,@datatype); +CALL test05_mcol4726(32, @datatype); + --source ctype_cmp_drop.inc diff --git a/mysql-test/columnstore/basic/t/ctype_cmp_varchar32_utf8_bin.test b/mysql-test/columnstore/basic/t/ctype_cmp_varchar32_utf8_bin.test index e297d41a1..7b397f410 100644 --- a/mysql-test/columnstore/basic/t/ctype_cmp_varchar32_utf8_bin.test +++ b/mysql-test/columnstore/basic/t/ctype_cmp_varchar32_utf8_bin.test @@ -23,4 +23,6 @@ CALL test03(32,@datatype); CALL test04_like(32,@datatype); +CALL test05_mcol4726(32, @datatype); + --source ctype_cmp_drop.inc diff --git a/mysql-test/columnstore/basic/t/ctype_cmp_varchar32_utf8_general_ci.test b/mysql-test/columnstore/basic/t/ctype_cmp_varchar32_utf8_general_ci.test index e4a65d24f..21ae9cfa4 100644 --- a/mysql-test/columnstore/basic/t/ctype_cmp_varchar32_utf8_general_ci.test +++ b/mysql-test/columnstore/basic/t/ctype_cmp_varchar32_utf8_general_ci.test @@ -22,4 +22,6 @@ CALL test03(32,@datatype); CALL test04_like(32,@datatype); +CALL test05_mcol4726(32, @datatype); + --source ctype_cmp_drop.inc diff --git a/mysql-test/columnstore/basic/t/ctype_cmp_varchar32_utf8_general_nopad_ci.test b/mysql-test/columnstore/basic/t/ctype_cmp_varchar32_utf8_general_nopad_ci.test index c9bfb4a49..dc0efb9d7 100644 --- a/mysql-test/columnstore/basic/t/ctype_cmp_varchar32_utf8_general_nopad_ci.test +++ b/mysql-test/columnstore/basic/t/ctype_cmp_varchar32_utf8_general_nopad_ci.test @@ -23,4 +23,6 @@ CALL test03(32,@datatype); CALL test04_like(32,@datatype); +CALL test05_mcol4726(32, @datatype); + --source ctype_cmp_drop.inc diff --git a/mysql-test/columnstore/basic/t/ctype_cmp_varchar32_utf8_nopad_bin.test b/mysql-test/columnstore/basic/t/ctype_cmp_varchar32_utf8_nopad_bin.test index ac048d047..db3b8cf1b 100644 --- a/mysql-test/columnstore/basic/t/ctype_cmp_varchar32_utf8_nopad_bin.test +++ b/mysql-test/columnstore/basic/t/ctype_cmp_varchar32_utf8_nopad_bin.test @@ -22,4 +22,6 @@ CALL test03(32,@datatype); CALL test04_like(32,@datatype); +CALL test05_mcol4726(32, @datatype); + --source ctype_cmp_drop.inc diff --git a/mysql-test/columnstore/basic/t/ctype_cmp_varchar32_utf8_unicode_ci.test b/mysql-test/columnstore/basic/t/ctype_cmp_varchar32_utf8_unicode_ci.test index f6693df1d..536a54789 100644 --- a/mysql-test/columnstore/basic/t/ctype_cmp_varchar32_utf8_unicode_ci.test +++ b/mysql-test/columnstore/basic/t/ctype_cmp_varchar32_utf8_unicode_ci.test @@ -22,4 +22,6 @@ CALL test03(32,@datatype); CALL test04_like(32,@datatype); +CALL test05_mcol4726(32, @datatype); + --source ctype_cmp_drop.inc diff --git a/mysql-test/columnstore/basic/t/ctype_cmp_varchar32_utf8_unicode_nopad_ci.test b/mysql-test/columnstore/basic/t/ctype_cmp_varchar32_utf8_unicode_nopad_ci.test index 4667bf6c8..f5b467e42 100644 --- a/mysql-test/columnstore/basic/t/ctype_cmp_varchar32_utf8_unicode_nopad_ci.test +++ b/mysql-test/columnstore/basic/t/ctype_cmp_varchar32_utf8_unicode_nopad_ci.test @@ -23,4 +23,6 @@ CALL test03(32,@datatype); CALL test04_like(32,@datatype); +CALL test05_mcol4726(32, @datatype); + --source ctype_cmp_drop.inc diff --git a/mysql-test/columnstore/basic/t/ctype_cmp_varchar4_latin1_bin.test b/mysql-test/columnstore/basic/t/ctype_cmp_varchar4_latin1_bin.test index a4b06e663..95e31c7d1 100644 --- a/mysql-test/columnstore/basic/t/ctype_cmp_varchar4_latin1_bin.test +++ b/mysql-test/columnstore/basic/t/ctype_cmp_varchar4_latin1_bin.test @@ -23,4 +23,6 @@ CALL test03(4,@datatype); CALL test04_like(4,@datatype); +CALL test05_mcol4726(4, @datatype); + --source ctype_cmp_drop.inc diff --git a/mysql-test/columnstore/basic/t/ctype_cmp_varchar4_latin1_nopad_bin.test b/mysql-test/columnstore/basic/t/ctype_cmp_varchar4_latin1_nopad_bin.test index 645ca7667..4b2b075b0 100644 --- a/mysql-test/columnstore/basic/t/ctype_cmp_varchar4_latin1_nopad_bin.test +++ b/mysql-test/columnstore/basic/t/ctype_cmp_varchar4_latin1_nopad_bin.test @@ -23,4 +23,6 @@ CALL test03(4,@datatype); CALL test04_like(4,@datatype); +CALL test05_mcol4726(4, @datatype); + --source ctype_cmp_drop.inc diff --git a/mysql-test/columnstore/basic/t/ctype_cmp_varchar4_latin1_swedish_ci.test b/mysql-test/columnstore/basic/t/ctype_cmp_varchar4_latin1_swedish_ci.test index e778dd05e..fed8582f6 100644 --- a/mysql-test/columnstore/basic/t/ctype_cmp_varchar4_latin1_swedish_ci.test +++ b/mysql-test/columnstore/basic/t/ctype_cmp_varchar4_latin1_swedish_ci.test @@ -23,4 +23,6 @@ CALL test03(4,@datatype); CALL test04_like(4,@datatype); +CALL test05_mcol4726(4, @datatype); + --source ctype_cmp_drop.inc diff --git a/mysql-test/columnstore/basic/t/ctype_cmp_varchar4_latin1_swedish_nopad_ci.test b/mysql-test/columnstore/basic/t/ctype_cmp_varchar4_latin1_swedish_nopad_ci.test index f996b6802..5609b6c18 100644 --- a/mysql-test/columnstore/basic/t/ctype_cmp_varchar4_latin1_swedish_nopad_ci.test +++ b/mysql-test/columnstore/basic/t/ctype_cmp_varchar4_latin1_swedish_nopad_ci.test @@ -23,4 +23,6 @@ CALL test03(4,@datatype); CALL test04_like(4,@datatype); +CALL test05_mcol4726(4, @datatype); + --source ctype_cmp_drop.inc diff --git a/mysql-test/columnstore/basic/t/ctype_cmp_varchar4_utf8_bin.test b/mysql-test/columnstore/basic/t/ctype_cmp_varchar4_utf8_bin.test index cfad6811b..ab3d99e4f 100644 --- a/mysql-test/columnstore/basic/t/ctype_cmp_varchar4_utf8_bin.test +++ b/mysql-test/columnstore/basic/t/ctype_cmp_varchar4_utf8_bin.test @@ -23,4 +23,6 @@ CALL test03(4,@datatype); CALL test04_like(4,@datatype); +CALL test05_mcol4726(4, @datatype); + --source ctype_cmp_drop.inc diff --git a/mysql-test/columnstore/basic/t/ctype_cmp_varchar4_utf8_general_ci.test b/mysql-test/columnstore/basic/t/ctype_cmp_varchar4_utf8_general_ci.test index 38f688896..fe8860329 100644 --- a/mysql-test/columnstore/basic/t/ctype_cmp_varchar4_utf8_general_ci.test +++ b/mysql-test/columnstore/basic/t/ctype_cmp_varchar4_utf8_general_ci.test @@ -22,4 +22,6 @@ CALL test03(4,@datatype); CALL test04_like(4,@datatype); +CALL test05_mcol4726(4, @datatype); + --source ctype_cmp_drop.inc diff --git a/mysql-test/columnstore/basic/t/ctype_cmp_varchar4_utf8_general_nopad_ci.test b/mysql-test/columnstore/basic/t/ctype_cmp_varchar4_utf8_general_nopad_ci.test index 32dc3511d..ae316e1ba 100644 --- a/mysql-test/columnstore/basic/t/ctype_cmp_varchar4_utf8_general_nopad_ci.test +++ b/mysql-test/columnstore/basic/t/ctype_cmp_varchar4_utf8_general_nopad_ci.test @@ -23,4 +23,6 @@ CALL test03(4,@datatype); CALL test04_like(4,@datatype); +CALL test05_mcol4726(4, @datatype); + --source ctype_cmp_drop.inc diff --git a/mysql-test/columnstore/basic/t/ctype_cmp_varchar4_utf8_nopad_bin.test b/mysql-test/columnstore/basic/t/ctype_cmp_varchar4_utf8_nopad_bin.test index 805b2484e..f7219e349 100644 --- a/mysql-test/columnstore/basic/t/ctype_cmp_varchar4_utf8_nopad_bin.test +++ b/mysql-test/columnstore/basic/t/ctype_cmp_varchar4_utf8_nopad_bin.test @@ -22,4 +22,6 @@ CALL test03(4,@datatype); CALL test04_like(4,@datatype); +CALL test05_mcol4726(4, @datatype); + --source ctype_cmp_drop.inc diff --git a/mysql-test/columnstore/basic/t/ctype_cmp_varchar4_utf8_unicode_ci.test b/mysql-test/columnstore/basic/t/ctype_cmp_varchar4_utf8_unicode_ci.test index d7ae694c9..e528f329e 100644 --- a/mysql-test/columnstore/basic/t/ctype_cmp_varchar4_utf8_unicode_ci.test +++ b/mysql-test/columnstore/basic/t/ctype_cmp_varchar4_utf8_unicode_ci.test @@ -22,4 +22,6 @@ CALL test03(4,@datatype); CALL test04_like(4,@datatype); +CALL test05_mcol4726(4, @datatype); + --source ctype_cmp_drop.inc diff --git a/mysql-test/columnstore/basic/t/ctype_cmp_varchar4_utf8_unicode_nopad_ci.test b/mysql-test/columnstore/basic/t/ctype_cmp_varchar4_utf8_unicode_nopad_ci.test index 93a4c9ff7..bdd4643f6 100644 --- a/mysql-test/columnstore/basic/t/ctype_cmp_varchar4_utf8_unicode_nopad_ci.test +++ b/mysql-test/columnstore/basic/t/ctype_cmp_varchar4_utf8_unicode_nopad_ci.test @@ -23,4 +23,6 @@ CALL test03(4,@datatype); CALL test04_like(4,@datatype); +CALL test05_mcol4726(4, @datatype); + --source ctype_cmp_drop.inc diff --git a/primitives/linux-port/column.cpp b/primitives/linux-port/column.cpp index 7dea1bb4e..ffe2c5fa3 100644 --- a/primitives/linux-port/column.cpp +++ b/primitives/linux-port/column.cpp @@ -604,8 +604,8 @@ inline bool colCompare(int64_t val1, int64_t val2, uint8_t COP, uint8_t rf, 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(&val1), 8}; - utils::ConstString s2 = {reinterpret_cast(&val2), 8}; + utils::ConstString s1 = {reinterpret_cast(&val1), width}; + utils::ConstString s2 = {reinterpret_cast(&val2), width}; return colCompareStr(typeHolder, COP, s1.rtrimZero(), s2.rtrimZero()); } else @@ -1303,10 +1303,10 @@ inline void p_Col_ridArray(NewColRequestHeader* in, if (out->ValidMinMax && !isNull && !isEmpty) { - if ((in->colType.DataType == CalpontSystemCatalog::CHAR || - in->colType.DataType == CalpontSystemCatalog::VARCHAR || - in->colType.DataType == CalpontSystemCatalog::BLOB || - in->colType.DataType == CalpontSystemCatalog::TEXT ) && 1 < W) + if (in->colType.DataType == CalpontSystemCatalog::CHAR || + in->colType.DataType == CalpontSystemCatalog::VARCHAR || + in->colType.DataType == CalpontSystemCatalog::BLOB || + in->colType.DataType == CalpontSystemCatalog::TEXT ) { if (colCompare(out->Min, val, COMPARE_GT, false, in->colType, W)) out->Min = val; diff --git a/primitives/primproc/filtercommand.cpp b/primitives/primproc/filtercommand.cpp index a64fc6875..f63cb4beb 100644 --- a/primitives/primproc/filtercommand.cpp +++ b/primitives/primproc/filtercommand.cpp @@ -620,8 +620,8 @@ bool StrFilterCmd::compare_cc(uint64_t i, uint64_t j) datatypes::Charset cs(leftColType.getCharset()); datatypes::TCharShort s0(bpp->fFiltCmdValues[0][i]); datatypes::TCharShort s1(bpp->fFiltCmdValues[1][j]); - return compareString(cs, static_cast(s0), - static_cast(s1), fBOP); + return compareString(cs, s0.toConstString(leftColType.colWidth), + s1.toConstString(rightColType.colWidth), fBOP); } @@ -647,7 +647,7 @@ bool StrFilterCmd::compare_cs(uint64_t i, uint64_t j) datatypes::Charset cs(leftColType.getCharset()); datatypes::TCharShort s0(bpp->fFiltCmdValues[0][i]); utils::ConstString s1(bpp->fFiltStrValues[1][j]); - return compareString(cs, static_cast(s0), s1, fBOP); + return compareString(cs, s0.toConstString(leftColType.colWidth), s1, fBOP); } @@ -660,7 +660,7 @@ bool StrFilterCmd::compare_sc(uint64_t i, uint64_t j) datatypes::Charset cs(leftColType.getCharset()); utils::ConstString s0(bpp->fFiltStrValues[0][i]); datatypes::TCharShort s1(bpp->fFiltCmdValues[1][j]); - return compareString(cs, s0, static_cast(s1), fBOP); + return compareString(cs, s0, s1.toConstString(rightColType.colWidth), fBOP); } diff --git a/utils/joiner/tuplejoiner.cpp b/utils/joiner/tuplejoiner.cpp index 2cc01ecd7..cc63ce922 100644 --- a/utils/joiner/tuplejoiner.cpp +++ b/utils/joiner/tuplejoiner.cpp @@ -1131,13 +1131,13 @@ void TupleJoiner::updateCPData(const Row& r) datatypes::Charset cs(r.getCharset(colIdx)); int64_t val = r.getIntField(colIdx); - if (datatypes::TCharShort::strnncollsp(cs, val, min) < 0 || + if (datatypes::TCharShort::strnncollsp(cs, val, min, r.getColumnWidth(smallKeyColumns[col])) < 0 || ((int64_t) min) == numeric_limits::max()) { min = val; } - if (datatypes::TCharShort::strnncollsp(cs, val, max) > 0 || + if (datatypes::TCharShort::strnncollsp(cs, val, max, r.getColumnWidth(smallKeyColumns[col])) > 0 || ((int64_t) max) == numeric_limits::min()) { max = val;