From c23ef5e1f301c7184ba4c66352569402012d2569 Mon Sep 17 00:00:00 2001
From: unknown <jimw@mysql.com>
Date: Wed, 8 Jun 2005 14:35:16 -0700
Subject: [PATCH] Fix problem with handling of lower_case_table_name == 2 when
 the case in the FROM and WHERE clauses didn't agree. (Bug #9500)

mysql-test/r/lowercase_table2.result:
  Update results
mysql-test/t/lowercase_table2.test:
  Fix 'DROP TABLE' to not drop tables with the same name.
sql/mysqld.cc:
  Move initialization of table_alias_charset to after we
  have decided what lower_case_table_names should be.
---
 mysql-test/r/lowercase_table2.result |  7 ++++++-
 mysql-test/t/lowercase_table2.test   | 10 +++++++++-
 sql/mysqld.cc                        |  8 +++++---
 3 files changed, 20 insertions(+), 5 deletions(-)

diff --git a/mysql-test/r/lowercase_table2.result b/mysql-test/r/lowercase_table2.result
index 1015990df9..db833bcd97 100644
--- a/mysql-test/r/lowercase_table2.result
+++ b/mysql-test/r/lowercase_table2.result
@@ -1,4 +1,4 @@
-DROP TABLE IF EXISTS t1,t2,T1,T2,t3,T3;
+DROP TABLE IF EXISTS t1,t2,t3;
 DROP DATABASE IF EXISTS `TEST_$1`;
 DROP DATABASE IF EXISTS `test_$1`;
 CREATE TABLE T1 (a int);
@@ -159,3 +159,8 @@ select * from myUC;
 i
 use test;
 drop database mysqltest_LC2;
+create table t2aA (col1 int);
+create table t1Aa (col1 int);
+select t1Aa.col1 from t1aA,t2Aa where t1Aa.col1 = t2aA.col1;
+col1
+drop table t2aA, t1Aa;
diff --git a/mysql-test/t/lowercase_table2.test b/mysql-test/t/lowercase_table2.test
index eff5f2a99e..51c6f6b5ac 100644
--- a/mysql-test/t/lowercase_table2.test
+++ b/mysql-test/t/lowercase_table2.test
@@ -10,7 +10,7 @@ show variables like "lower_case_table_names";
 enable_query_log;
 
 --disable_warnings
-DROP TABLE IF EXISTS t1,t2,T1,T2,t3,T3;
+DROP TABLE IF EXISTS t1,t2,t3;
 DROP DATABASE IF EXISTS `TEST_$1`;
 DROP DATABASE IF EXISTS `test_$1`;
 --enable_warnings
@@ -128,3 +128,11 @@ create table myUC (i int);
 select * from myUC;
 use test;
 drop database mysqltest_LC2;
+
+#
+# Bug #9500: Problem with WHERE clause
+#
+create table t2aA (col1 int);
+create table t1Aa (col1 int);
+select t1Aa.col1 from t1aA,t2Aa where t1Aa.col1 = t2aA.col1;
+drop table t2aA, t1Aa;
diff --git a/sql/mysqld.cc b/sql/mysqld.cc
index 44b91fd353..67a80c4ca2 100644
--- a/sql/mysqld.cc
+++ b/sql/mysqld.cc
@@ -2988,6 +2988,11 @@ You should consider changing lower_case_table_names to 1 or 2",
     lower_case_table_names= 0;
   }
 
+  /* Reset table_alias_charset, now that lower_case_table_names is set. */
+  table_alias_charset= (lower_case_table_names ?
+			files_charset_info :
+			&my_charset_bin);
+
   select_thread=pthread_self();
   select_thread_in_use=1;
   init_ssl();
@@ -6509,9 +6514,6 @@ static void get_options(int argc,char **argv)
 
   /* Set global variables based on startup options */
   myisam_block_size=(uint) 1 << my_bit_log2(opt_myisam_block_size);
-  table_alias_charset= (lower_case_table_names ?
-			files_charset_info :
-			&my_charset_bin);
 
   if (opt_short_log_format)
     opt_specialflag|= SPECIAL_SHORT_LOG_FORMAT;
-- 
2.30.9