Loading client/mysql.cc +22 −2 Original line number Diff line number Diff line Loading @@ -953,6 +953,7 @@ static int read_lines(bool execute_commands) { #if defined( __WIN__) || defined(OS2) || defined(__NETWARE__) char linebuffer[254]; String buffer; #endif char *line; char in_string=0; Loading Loading @@ -994,8 +995,24 @@ static int read_lines(bool execute_commands) *p = '\0'; } #else linebuffer[0]= (char) sizeof(linebuffer); buffer.length(0); /* _cgets() expects the buffer size - 3 as the first byte */ linebuffer[0]= (char) sizeof(linebuffer) - 3; do { line= _cgets(linebuffer); buffer.append(line, (unsigned char)linebuffer[1]); /* If _cgets() gets an input line that is linebuffer[0] bytes long, the next call to _cgets() will return immediately with linebuffer[1] == 0, and it does the same thing for input that is linebuffer[0]-1 bytes long. So it appears that even though _cgets() replaces the newline (which is two bytes on Window) with a nil, it still needs the space in the linebuffer for it. This is, naturally, undocumented. */ } while (linebuffer[0] <= linebuffer[1] + 1); line= buffer.c_ptr(); #endif /* __NETWARE__ */ #else if (opt_outfile) Loading Loading @@ -1052,6 +1069,9 @@ static int read_lines(bool execute_commands) status.exit_status=0; } } #if defined( __WIN__) || defined(OS2) || defined(__NETWARE__) buffer.free(); #endif return status.exit_status; } Loading mysql-test/r/lowercase_table2.result +6 −1 Original line number Diff line number Diff line 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); Loading Loading @@ -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; mysql-test/t/lowercase_table2.test +9 −1 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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; sql/mysqld.cc +5 −3 Original line number Diff line number Diff line Loading @@ -3095,6 +3095,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(); Loading Loading @@ -6795,9 +6800,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; Loading Loading
client/mysql.cc +22 −2 Original line number Diff line number Diff line Loading @@ -953,6 +953,7 @@ static int read_lines(bool execute_commands) { #if defined( __WIN__) || defined(OS2) || defined(__NETWARE__) char linebuffer[254]; String buffer; #endif char *line; char in_string=0; Loading Loading @@ -994,8 +995,24 @@ static int read_lines(bool execute_commands) *p = '\0'; } #else linebuffer[0]= (char) sizeof(linebuffer); buffer.length(0); /* _cgets() expects the buffer size - 3 as the first byte */ linebuffer[0]= (char) sizeof(linebuffer) - 3; do { line= _cgets(linebuffer); buffer.append(line, (unsigned char)linebuffer[1]); /* If _cgets() gets an input line that is linebuffer[0] bytes long, the next call to _cgets() will return immediately with linebuffer[1] == 0, and it does the same thing for input that is linebuffer[0]-1 bytes long. So it appears that even though _cgets() replaces the newline (which is two bytes on Window) with a nil, it still needs the space in the linebuffer for it. This is, naturally, undocumented. */ } while (linebuffer[0] <= linebuffer[1] + 1); line= buffer.c_ptr(); #endif /* __NETWARE__ */ #else if (opt_outfile) Loading Loading @@ -1052,6 +1069,9 @@ static int read_lines(bool execute_commands) status.exit_status=0; } } #if defined( __WIN__) || defined(OS2) || defined(__NETWARE__) buffer.free(); #endif return status.exit_status; } Loading
mysql-test/r/lowercase_table2.result +6 −1 Original line number Diff line number Diff line 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); Loading Loading @@ -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;
mysql-test/t/lowercase_table2.test +9 −1 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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;
sql/mysqld.cc +5 −3 Original line number Diff line number Diff line Loading @@ -3095,6 +3095,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(); Loading Loading @@ -6795,9 +6800,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; Loading