summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--BitKeeper/etc/logging_ok1
-rw-r--r--myisam/myisamchk.c4
-rw-r--r--mysql-test/t/func_str.test14
-rw-r--r--sql/item_func.h3
-rw-r--r--sql/item_strfunc.h4
5 files changed, 23 insertions, 3 deletions
diff --git a/BitKeeper/etc/logging_ok b/BitKeeper/etc/logging_ok
index 96cdd930e83..22808697471 100644
--- a/BitKeeper/etc/logging_ok
+++ b/BitKeeper/etc/logging_ok
@@ -25,6 +25,7 @@ bar@bar.intranet.mysql.r18.ru
bar@bar.mysql.r18.ru
bar@bar.udmsearch.izhnet.ru
bar@deer.(none)
+bar@eagle.intranet.mysql.r18.ru
bar@gw.udmsearch.izhnet.ru
bar@mysql.com
bar@noter.intranet.mysql.r18.ru
diff --git a/myisam/myisamchk.c b/myisam/myisamchk.c
index 09e2914bbaa..519e123e9da 100644
--- a/myisam/myisamchk.c
+++ b/myisam/myisamchk.c
@@ -427,8 +427,8 @@ static void usage(void)
can't fix the data file.\n\
--character-sets-dir=...\n\
Directory where character sets are.\n\
- --set-character-set=name\n\
- Change the character set used by the index.\n\
+ --set-collation=name\n\
+ Change the collation used by the index.\n\
-q, --quick Faster repair by not modifying the data file.\n\
One can give a second '-q' to force myisamchk to\n\
modify the original datafile in case of duplicate keys.\n\
diff --git a/mysql-test/t/func_str.test b/mysql-test/t/func_str.test
index 2041c776423..8bf36431587 100644
--- a/mysql-test/t/func_str.test
+++ b/mysql-test/t/func_str.test
@@ -377,6 +377,20 @@ insert into t1 values (null);
select charset(a), collation(a), coercibility(a) from t1;
drop table t1;
select charset(null), collation(null), coercibility(null);
+#
+# Make sure OUTER JOIN is not replaced with a regular joun
+#
+CREATE TABLE t1 (a int, b int);
+CREATE TABLE t2 (a int, b int);
+INSERT INTO t1 VALUES (1,1),(2,2);
+INSERT INTO t2 VALUES (2,2),(3,3);
+select t1.*,t2.* from t1 left join t2 on (t1.b=t2.b)
+where collation(t2.a) = _utf8'binary' order by t1.a,t2.a;
+select t1.*,t2.* from t1 left join t2 on (t1.b=t2.b)
+where charset(t2.a) = _utf8'binary' order by t1.a,t2.a;
+select t1.*,t2.* from t1 left join t2 on (t1.b=t2.b)
+where coercibility(t2.a) = 2 order by t1.a,t2.a;
+DROP TABLE t1, t2;
#
# test for SUBSTR
diff --git a/sql/item_func.h b/sql/item_func.h
index 93633e75619..9bf21fa1aa3 100644
--- a/sql/item_func.h
+++ b/sql/item_func.h
@@ -704,7 +704,8 @@ public:
Item_func_coercibility(Item *a) :Item_int_func(a) {}
longlong val_int();
const char *func_name() const { return "coercibility"; }
- void fix_length_and_dec() { max_length=10; }
+ void fix_length_and_dec() { max_length=10; maybe_null= 0; }
+ table_map not_null_tables() const { return 0; }
};
class Item_func_locate :public Item_int_func
diff --git a/sql/item_strfunc.h b/sql/item_strfunc.h
index ea8a78c528a..eec81f953fb 100644
--- a/sql/item_strfunc.h
+++ b/sql/item_strfunc.h
@@ -653,7 +653,9 @@ public:
{
collation.set(system_charset_info);
max_length= 64 * collation.collation->mbmaxlen; // should be enough
+ maybe_null= 0;
};
+ table_map not_null_tables() const { return 0; }
};
class Item_func_collation :public Item_str_func
@@ -666,7 +668,9 @@ public:
{
collation.set(system_charset_info);
max_length= 64 * collation.collation->mbmaxlen; // should be enough
+ maybe_null= 0;
};
+ table_map not_null_tables() const { return 0; }
};
class Item_func_crc32 :public Item_int_func