diff options
author | Alexander Barkov <bar@mariadb.org> | 2015-08-28 17:03:09 +0400 |
---|---|---|
committer | Alexander Barkov <bar@mariadb.org> | 2015-08-28 17:03:09 +0400 |
commit | 3ba2a958beaf8ce5b4db23739b310ebad606d993 (patch) | |
tree | 05e015a000e10fc9b755cbe37238dd01be2b5742 /strings | |
parent | 3bca8db4f90cd9a505b99009c44594c0fb1ec353 (diff) | |
download | mariadb-git-3ba2a958beaf8ce5b4db23739b310ebad606d993.tar.gz |
MDEV-8694 Wrong result for SELECT..WHERE a NOT LIKE 'a ' AND a='a'
Note, the patch for MDEV-8661 unintentionally fixed MDEV-8694 as well,
as a side effect. Adding a real clear fix: implementing
Item_func_like::propagate_equal_fields() with comments.
Diffstat (limited to 'strings')
-rw-r--r-- | strings/ctype-bin.c | 2 | ||||
-rw-r--r-- | strings/ctype-czech.c | 3 | ||||
-rw-r--r-- | strings/ctype-latin1.c | 2 | ||||
-rw-r--r-- | strings/ctype-tis620.c | 2 | ||||
-rw-r--r-- | strings/ctype-uca.c | 66 | ||||
-rw-r--r-- | strings/ctype-win1250ch.c | 3 |
6 files changed, 42 insertions, 36 deletions
diff --git a/strings/ctype-bin.c b/strings/ctype-bin.c index 4d42973f69f..0be6ae95577 100644 --- a/strings/ctype-bin.c +++ b/strings/ctype-bin.c @@ -557,7 +557,7 @@ static MY_CHARSET_HANDLER my_charset_handler= struct charset_info_st my_charset_bin = { 63,0,0, /* number */ - MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_PRIMARY,/* state */ + MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_PRIMARY|MY_CS_NOPAD,/* state */ "binary", /* cs name */ "binary", /* name */ "", /* comment */ diff --git a/strings/ctype-czech.c b/strings/ctype-czech.c index 6603bc7d3e5..e3abebad91d 100644 --- a/strings/ctype-czech.c +++ b/strings/ctype-czech.c @@ -625,7 +625,8 @@ static MY_COLLATION_HANDLER my_collation_latin2_czech_ci_handler = struct charset_info_st my_charset_latin2_czech_ci = { 2,0,0, /* number */ - MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_CSSORT|MY_CS_STRNXFRM_BAD_NWEIGHTS, /* state */ + MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_CSSORT| + MY_CS_STRNXFRM_BAD_NWEIGHTS|MY_CS_NON1TO1, /* state */ "latin2", /* cs name */ "latin2_czech_cs", /* name */ "", /* comment */ diff --git a/strings/ctype-latin1.c b/strings/ctype-latin1.c index 8bc3ac3365d..26c66d60071 100644 --- a/strings/ctype-latin1.c +++ b/strings/ctype-latin1.c @@ -736,7 +736,7 @@ static MY_COLLATION_HANDLER my_collation_german2_ci_handler= struct charset_info_st my_charset_latin1_german2_ci= { 31,0,0, /* number */ - MY_CS_COMPILED|MY_CS_STRNXFRM, /* state */ + MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_NON1TO1, /* state */ "latin1", /* cs name */ "latin1_german2_ci", /* name */ "", /* comment */ diff --git a/strings/ctype-tis620.c b/strings/ctype-tis620.c index c62e58846bb..a1ca320835d 100644 --- a/strings/ctype-tis620.c +++ b/strings/ctype-tis620.c @@ -897,7 +897,7 @@ static MY_CHARSET_HANDLER my_charset_handler= struct charset_info_st my_charset_tis620_thai_ci= { 18,0,0, /* number */ - MY_CS_COMPILED|MY_CS_PRIMARY|MY_CS_STRNXFRM, /* state */ + MY_CS_COMPILED|MY_CS_PRIMARY|MY_CS_STRNXFRM|MY_CS_NON1TO1, /* state */ "tis620", /* cs name */ "tis620_thai_ci", /* name */ "", /* comment */ diff --git a/strings/ctype-uca.c b/strings/ctype-uca.c index 60bd96e499d..b0728978e71 100644 --- a/strings/ctype-uca.c +++ b/strings/ctype-uca.c @@ -35,6 +35,8 @@ #include "strings_def.h" #include <m_ctype.h> +#define MY_CS_COMMON_UCA_FLAGS (MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NON1TO1) + #define MY_UCA_CNT_FLAG_SIZE 4096 #define MY_UCA_CNT_FLAG_MASK 4095 #define MY_UCA_CNT_HEAD 1 @@ -22926,10 +22928,12 @@ MY_COLLATION_HANDLER my_collation_ucs2_uca_handler = my_propagate_complex }; +#define MY_CS_UCS2_UCA_FLAGS (MY_CS_COMMON_UCA_FLAGS|MY_CS_NONASCII) + struct charset_info_st my_charset_ucs2_unicode_ci= { 128,0,0, /* number */ - MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII, + MY_CS_UCS2_UCA_FLAGS,/* state */ "ucs2", /* cs name */ "ucs2_unicode_ci", /* name */ "", /* comment */ @@ -22961,7 +22965,7 @@ struct charset_info_st my_charset_ucs2_unicode_ci= struct charset_info_st my_charset_ucs2_icelandic_uca_ci= { 129,0,0, /* number */ - MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII, + MY_CS_UCS2_UCA_FLAGS,/* state */ "ucs2", /* cs name */ "ucs2_icelandic_ci",/* name */ "", /* comment */ @@ -22993,7 +22997,7 @@ struct charset_info_st my_charset_ucs2_icelandic_uca_ci= struct charset_info_st my_charset_ucs2_latvian_uca_ci= { 130,0,0, /* number */ - MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII, + MY_CS_UCS2_UCA_FLAGS,/* state */ "ucs2", /* cs name */ "ucs2_latvian_ci", /* name */ "", /* comment */ @@ -23025,7 +23029,7 @@ struct charset_info_st my_charset_ucs2_latvian_uca_ci= struct charset_info_st my_charset_ucs2_romanian_uca_ci= { 131,0,0, /* number */ - MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII, + MY_CS_UCS2_UCA_FLAGS,/* state */ "ucs2", /* cs name */ "ucs2_romanian_ci", /* name */ "", /* comment */ @@ -23057,7 +23061,7 @@ struct charset_info_st my_charset_ucs2_romanian_uca_ci= struct charset_info_st my_charset_ucs2_slovenian_uca_ci= { 132,0,0, /* number */ - MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII, + MY_CS_UCS2_UCA_FLAGS,/* state */ "ucs2", /* cs name */ "ucs2_slovenian_ci",/* name */ "", /* comment */ @@ -23089,7 +23093,7 @@ struct charset_info_st my_charset_ucs2_slovenian_uca_ci= struct charset_info_st my_charset_ucs2_polish_uca_ci= { 133,0,0, /* number */ - MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII, + MY_CS_UCS2_UCA_FLAGS,/* state */ "ucs2", /* cs name */ "ucs2_polish_ci", /* name */ "", /* comment */ @@ -23121,7 +23125,7 @@ struct charset_info_st my_charset_ucs2_polish_uca_ci= struct charset_info_st my_charset_ucs2_estonian_uca_ci= { 134,0,0, /* number */ - MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII, + MY_CS_UCS2_UCA_FLAGS,/* state */ "ucs2", /* cs name */ "ucs2_estonian_ci", /* name */ "", /* comment */ @@ -23153,7 +23157,7 @@ struct charset_info_st my_charset_ucs2_estonian_uca_ci= struct charset_info_st my_charset_ucs2_spanish_uca_ci= { 135,0,0, /* number */ - MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII, + MY_CS_UCS2_UCA_FLAGS,/* state */ "ucs2", /* cs name */ "ucs2_spanish_ci", /* name */ "", /* comment */ @@ -23185,7 +23189,7 @@ struct charset_info_st my_charset_ucs2_spanish_uca_ci= struct charset_info_st my_charset_ucs2_swedish_uca_ci= { 136,0,0, /* number */ - MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII, + MY_CS_UCS2_UCA_FLAGS,/* state */ "ucs2", /* cs name */ "ucs2_swedish_ci", /* name */ "", /* comment */ @@ -23217,7 +23221,7 @@ struct charset_info_st my_charset_ucs2_swedish_uca_ci= struct charset_info_st my_charset_ucs2_turkish_uca_ci= { 137,0,0, /* number */ - MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII, + MY_CS_UCS2_UCA_FLAGS,/* state */ "ucs2", /* cs name */ "ucs2_turkish_ci", /* name */ "", /* comment */ @@ -23249,7 +23253,7 @@ struct charset_info_st my_charset_ucs2_turkish_uca_ci= struct charset_info_st my_charset_ucs2_czech_uca_ci= { 138,0,0, /* number */ - MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII, + MY_CS_UCS2_UCA_FLAGS,/* state */ "ucs2", /* cs name */ "ucs2_czech_ci", /* name */ "", /* comment */ @@ -23282,7 +23286,7 @@ struct charset_info_st my_charset_ucs2_czech_uca_ci= struct charset_info_st my_charset_ucs2_danish_uca_ci= { 139,0,0, /* number */ - MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII, + MY_CS_UCS2_UCA_FLAGS,/* state */ "ucs2", /* cs name */ "ucs2_danish_ci", /* name */ "", /* comment */ @@ -23314,7 +23318,7 @@ struct charset_info_st my_charset_ucs2_danish_uca_ci= struct charset_info_st my_charset_ucs2_lithuanian_uca_ci= { 140,0,0, /* number */ - MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII, + MY_CS_UCS2_UCA_FLAGS,/* state */ "ucs2", /* cs name */ "ucs2_lithuanian_ci",/* name */ "", /* comment */ @@ -23346,7 +23350,7 @@ struct charset_info_st my_charset_ucs2_lithuanian_uca_ci= struct charset_info_st my_charset_ucs2_slovak_uca_ci= { 141,0,0, /* number */ - MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII, + MY_CS_UCS2_UCA_FLAGS,/* state */ "ucs2", /* cs name */ "ucs2_slovak_ci", /* name */ "", /* comment */ @@ -23378,7 +23382,7 @@ struct charset_info_st my_charset_ucs2_slovak_uca_ci= struct charset_info_st my_charset_ucs2_spanish2_uca_ci= { 142,0,0, /* number */ - MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII, + MY_CS_UCS2_UCA_FLAGS,/* state */ "ucs2", /* cs name */ "ucs2_spanish2_ci", /* name */ "", /* comment */ @@ -23411,7 +23415,7 @@ struct charset_info_st my_charset_ucs2_spanish2_uca_ci= struct charset_info_st my_charset_ucs2_roman_uca_ci= { 143,0,0, /* number */ - MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII, + MY_CS_UCS2_UCA_FLAGS,/* state */ "ucs2", /* cs name */ "ucs2_roman_ci", /* name */ "", /* comment */ @@ -23444,7 +23448,7 @@ struct charset_info_st my_charset_ucs2_roman_uca_ci= struct charset_info_st my_charset_ucs2_persian_uca_ci= { 144,0,0, /* number */ - MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII, + MY_CS_UCS2_UCA_FLAGS,/* state */ "ucs2", /* cs name */ "ucs2_persian_ci", /* name */ "", /* comment */ @@ -23477,7 +23481,7 @@ struct charset_info_st my_charset_ucs2_persian_uca_ci= struct charset_info_st my_charset_ucs2_esperanto_uca_ci= { 145,0,0, /* number */ - MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII, + MY_CS_UCS2_UCA_FLAGS,/* state */ "ucs2", /* cs name */ "ucs2_esperanto_ci",/* name */ "", /* comment */ @@ -23510,7 +23514,7 @@ struct charset_info_st my_charset_ucs2_esperanto_uca_ci= struct charset_info_st my_charset_ucs2_hungarian_uca_ci= { 146,0,0, /* number */ - MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII, + MY_CS_UCS2_UCA_FLAGS,/* state */ "ucs2", /* cs name */ "ucs2_hungarian_ci",/* name */ "", /* comment */ @@ -23542,7 +23546,7 @@ struct charset_info_st my_charset_ucs2_hungarian_uca_ci= struct charset_info_st my_charset_ucs2_sinhala_uca_ci= { 147,0,0, /* number */ - MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII, + MY_CS_UCS2_UCA_FLAGS,/* state */ "ucs2", /* csname */ "ucs2_sinhala_ci", /* name */ "", /* comment */ @@ -23576,7 +23580,7 @@ struct charset_info_st my_charset_ucs2_sinhala_uca_ci= struct charset_info_st my_charset_ucs2_german2_uca_ci= { 148,0,0, /* number */ - MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII, + MY_CS_UCS2_UCA_FLAGS,/* state */ "ucs2", /* csname */ "ucs2_german2_ci", /* name */ "", /* comment */ @@ -23608,7 +23612,7 @@ struct charset_info_st my_charset_ucs2_german2_uca_ci= struct charset_info_st my_charset_ucs2_croatian_mysql561_uca_ci= { 149,0,0, /* number */ - MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII, + MY_CS_UCS2_UCA_FLAGS,/* state */ "ucs2", /* cs name */ "ucs2_croatian_mysql561_ci", /* name */ "", /* comment */ @@ -23641,7 +23645,7 @@ struct charset_info_st my_charset_ucs2_croatian_mysql561_uca_ci= struct charset_info_st my_charset_ucs2_croatian_uca_ci= { MY_PAGE2_COLLATION_ID_UCS2,0,0, /* number */ - MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII, + MY_CS_UCS2_UCA_FLAGS,/* state */ "ucs2", /* cs name */ "ucs2_croatian_ci", /* name */ "", /* comment */ @@ -23674,7 +23678,7 @@ struct charset_info_st my_charset_ucs2_croatian_uca_ci= struct charset_info_st my_charset_ucs2_myanmar_uca_ci= { MY_PAGE2_COLLATION_ID_UCS2+1,0,0, /* number */ - MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII, + MY_CS_UCS2_UCA_FLAGS,/* state */ "ucs2", /* cs name */ "ucs2_myanmar_ci", /* name */ "", /* comment */ @@ -23707,7 +23711,7 @@ struct charset_info_st my_charset_ucs2_myanmar_uca_ci= struct charset_info_st my_charset_ucs2_unicode_520_ci= { 150,0,0, /* number */ - MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII, + MY_CS_UCS2_UCA_FLAGS,/* state */ "ucs2", /* cs name */ "ucs2_unicode_520_ci",/* name */ "", /* comment */ @@ -23740,7 +23744,7 @@ struct charset_info_st my_charset_ucs2_unicode_520_ci= struct charset_info_st my_charset_ucs2_vietnamese_ci= { 151,0,0, /* number */ - MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII, + MY_CS_UCS2_UCA_FLAGS,/* state */ "ucs2", /* csname */ "ucs2_vietnamese_ci",/* name */ "", /* comment */ @@ -23817,7 +23821,7 @@ static uchar ctype_utf8[] = { extern MY_CHARSET_HANDLER my_charset_utf8_handler; -#define MY_CS_UTF8MB3_UCA_FLAGS (MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE) +#define MY_CS_UTF8MB3_UCA_FLAGS MY_CS_COMMON_UCA_FLAGS struct charset_info_st my_charset_utf8_unicode_ci= { @@ -24666,7 +24670,7 @@ struct charset_info_st my_charset_utf8_vietnamese_ci= extern MY_CHARSET_HANDLER my_charset_utf8mb4_handler; -#define MY_CS_UTF8MB4_UCA_FLAGS (MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_UNICODE_SUPPLEMENT) +#define MY_CS_UTF8MB4_UCA_FLAGS (MY_CS_COMMON_UCA_FLAGS|MY_CS_UNICODE_SUPPLEMENT) struct charset_info_st my_charset_utf8mb4_unicode_ci= { @@ -25529,7 +25533,7 @@ MY_COLLATION_HANDLER my_collation_utf32_uca_handler = extern MY_CHARSET_HANDLER my_charset_utf32_handler; -#define MY_CS_UTF32_UCA_FLAGS (MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII) +#define MY_CS_UTF32_UCA_FLAGS (MY_CS_COMMON_UCA_FLAGS|MY_CS_NONASCII) struct charset_info_st my_charset_utf32_unicode_ci= { @@ -26392,7 +26396,7 @@ MY_COLLATION_HANDLER my_collation_utf16_uca_handler = extern MY_CHARSET_HANDLER my_charset_utf16_handler; -#define MY_CS_UTF16_UCA_FLAGS (MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII) +#define MY_CS_UTF16_UCA_FLAGS (MY_CS_COMMON_UCA_FLAGS|MY_CS_NONASCII) struct charset_info_st my_charset_utf16_unicode_ci= { @@ -27171,7 +27175,7 @@ struct charset_info_st my_charset_utf16_myanmar_uca_ci= struct charset_info_st my_charset_utf16_unicode_520_ci= { 123,0,0, /* number */ - MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_NONASCII, + MY_CS_UTF16_UCA_FLAGS,/* state */ "utf16", /* csname */ "utf16_unicode_520_ci",/* name */ "", /* comment */ diff --git a/strings/ctype-win1250ch.c b/strings/ctype-win1250ch.c index 27e6a94f67b..8e3527f9ff1 100644 --- a/strings/ctype-win1250ch.c +++ b/strings/ctype-win1250ch.c @@ -690,7 +690,8 @@ static MY_COLLATION_HANDLER my_collation_czech_ci_handler = struct charset_info_st my_charset_cp1250_czech_ci = { 34,0,0, /* number */ - MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_CSSORT|MY_CS_STRNXFRM_BAD_NWEIGHTS, /* state */ + MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_CSSORT| + MY_CS_STRNXFRM_BAD_NWEIGHTS|MY_CS_NON1TO1, /* state */ "cp1250", /* cs name */ "cp1250_czech_cs", /* name */ "", /* comment */ |