summaryrefslogtreecommitdiff
path: root/strings
diff options
context:
space:
mode:
authorAlexander Barkov <bar@mariadb.org>2015-08-28 17:03:09 +0400
committerAlexander Barkov <bar@mariadb.org>2015-08-28 17:03:09 +0400
commit3ba2a958beaf8ce5b4db23739b310ebad606d993 (patch)
tree05e015a000e10fc9b755cbe37238dd01be2b5742 /strings
parent3bca8db4f90cd9a505b99009c44594c0fb1ec353 (diff)
downloadmariadb-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.c2
-rw-r--r--strings/ctype-czech.c3
-rw-r--r--strings/ctype-latin1.c2
-rw-r--r--strings/ctype-tis620.c2
-rw-r--r--strings/ctype-uca.c66
-rw-r--r--strings/ctype-win1250ch.c3
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 */