Merge tnurnberg@bk-internal.mysql.com:/home/bk/mysql-5.1-maint

into  mysql.com:/scratch/tnurnberg/20901/51-20901
parents e9229319 017ba8da
...@@ -190,6 +190,12 @@ ERROR 21000: Operand should contain 1 column(s) ...@@ -190,6 +190,12 @@ ERROR 21000: Operand should contain 1 column(s)
drop table table_26093; drop table table_26093;
drop function func_26093_a; drop function func_26093_a;
drop function func_26093_b; drop function func_26093_b;
create table t1 (a int not null);
insert into t1 values (-1), (-2);
select min(a) from t1 group by inet_ntoa(a);
min(a)
-2
drop table t1;
End of 5.0 tests End of 5.0 tests
select connection_id() > 0; select connection_id() > 0;
connection_id() > 0 connection_id() > 0
......
...@@ -499,4 +499,18 @@ i ...@@ -499,4 +499,18 @@ i
2 2
2 2
DROP TABLE t1, t2; DROP TABLE t1, t2;
CREATE TABLE t1 (c1 INT NOT NULL);
INSERT INTO t1 VALUES(4188.32999999999992724042385816574096679687500),
('4188.32999999999992724042385816574096679687500'), (4188);
SELECT * FROM t1;
c1
4188
4188
4188
CREATE TABLE t2 (c1 BIGINT);
INSERT INTO t2 VALUES('15449237462.0000000000');
SELECT * FROM t2;
c1
15449237462
DROP TABLE t1, t2;
End of 5.0 tests. End of 5.0 tests.
...@@ -175,3 +175,16 @@ SET GLOBAL slow_query_log = ON; ...@@ -175,3 +175,16 @@ SET GLOBAL slow_query_log = ON;
SET GLOBAL READ_ONLY = OFF; SET GLOBAL READ_ONLY = OFF;
SET GLOBAL general_log = @old_general_log_state; SET GLOBAL general_log = @old_general_log_state;
SET GLOBAL slow_query_log = @old_slow_log_state; SET GLOBAL slow_query_log = @old_slow_log_state;
set @old_general_log_file= @@global.general_log_file;
set @old_slow_query_log_file= @@global.slow_query_log_file;
set global general_log_file= concat('/not exiting path/log.maste', 'r');
ERROR 42000: Variable 'general_log_file' can't be set to the value of '/not exiting path/log.master'
set global general_log_file= NULL;
ERROR 42000: Variable 'general_log_file' can't be set to the value of 'NULL'
set global slow_query_log_file= concat('/not exiting path/log.maste', 'r');
ERROR 42000: Variable 'slow_query_log_file' can't be set to the value of '/not exiting path/log.master'
set global slow_query_log_file= NULL;
ERROR 42000: Variable 'slow_query_log_file' can't be set to the value of 'NULL'
set global general_log_file= @old_general_log_file;
set global slow_query_log_file= @old_slow_query_log_file;
End of 5.1 tests
...@@ -8,6 +8,8 @@ VARIABLE_NAME VARIABLE_VALUE ...@@ -8,6 +8,8 @@ VARIABLE_NAME VARIABLE_VALUE
TABLE_LOCKS_IMMEDIATE 2 TABLE_LOCKS_IMMEDIATE 2
TABLE_LOCKS_WAITED 0 TABLE_LOCKS_WAITED 0
SET SQL_LOG_BIN=0; SET SQL_LOG_BIN=0;
set @old_general_log = @@global.general_log;
set global general_log = 'OFF';
drop table if exists t1; drop table if exists t1;
create table t1(n int) engine=myisam; create table t1(n int) engine=myisam;
insert into t1 values(1); insert into t1 values(1);
...@@ -20,6 +22,7 @@ show status like 'Table_locks_waited'; ...@@ -20,6 +22,7 @@ show status like 'Table_locks_waited';
Variable_name Value Variable_name Value
Table_locks_waited 1 Table_locks_waited 1
drop table t1; drop table t1;
set global general_log = @old_general_log;
select 1; select 1;
1 1
1 1
......
...@@ -198,6 +198,14 @@ drop table table_26093; ...@@ -198,6 +198,14 @@ drop table table_26093;
drop function func_26093_a; drop function func_26093_a;
drop function func_26093_b; drop function func_26093_b;
#
# Bug #31349: ERROR 1062 (23000): Duplicate entry '' for key 'group_key'
#
create table t1 (a int not null);
insert into t1 values (-1), (-2);
select min(a) from t1 group by inet_ntoa(a);
drop table t1;
--echo End of 5.0 tests --echo End of 5.0 tests
# #
......
...@@ -387,5 +387,20 @@ SELECT * FROM t2; ...@@ -387,5 +387,20 @@ SELECT * FROM t2;
DROP TABLE t1, t2; DROP TABLE t1, t2;
#
# Bug #30453: String not cast to int correctly
#
CREATE TABLE t1 (c1 INT NOT NULL);
INSERT INTO t1 VALUES(4188.32999999999992724042385816574096679687500),
('4188.32999999999992724042385816574096679687500'), (4188);
SELECT * FROM t1;
CREATE TABLE t2 (c1 BIGINT);
INSERT INTO t2 VALUES('15449237462.0000000000');
SELECT * FROM t2;
DROP TABLE t1, t2;
--echo End of 5.0 tests. --echo End of 5.0 tests.
...@@ -189,3 +189,23 @@ disconnect con1; ...@@ -189,3 +189,23 @@ disconnect con1;
# Remove the log files that was created in the "default location" # Remove the log files that was created in the "default location"
# i.e var/run # i.e var/run
--remove_file $MYSQLTEST_VARDIR/run/master.log --remove_file $MYSQLTEST_VARDIR/run/master.log
#
# Bug #31604: server crash when setting slow_query_log_file/general_log_file
#
set @old_general_log_file= @@global.general_log_file;
set @old_slow_query_log_file= @@global.slow_query_log_file;
--error 1231
set global general_log_file= concat('/not exiting path/log.maste', 'r');
--error 1231
set global general_log_file= NULL;
--error 1231
set global slow_query_log_file= concat('/not exiting path/log.maste', 'r');
--error 1231
set global slow_query_log_file= NULL;
set global general_log_file= @old_general_log_file;
set global slow_query_log_file= @old_slow_query_log_file;
--echo End of 5.1 tests
...@@ -21,6 +21,8 @@ select * from information_schema.session_status where variable_name like 'Table_ ...@@ -21,6 +21,8 @@ select * from information_schema.session_status where variable_name like 'Table_
connection con1; connection con1;
# ++Immediate = 3 # ++Immediate = 3
SET SQL_LOG_BIN=0; SET SQL_LOG_BIN=0;
set @old_general_log = @@global.general_log;
set global general_log = 'OFF';
--disable_warnings --disable_warnings
# ++Immediate = 4 # ++Immediate = 4
drop table if exists t1; drop table if exists t1;
...@@ -60,6 +62,7 @@ reap; ...@@ -60,6 +62,7 @@ reap;
# ++Immediate = 16 + $wait_condition_reps # ++Immediate = 16 + $wait_condition_reps
show status like 'Table_locks_waited'; show status like 'Table_locks_waited';
drop table t1; drop table t1;
set global general_log = @old_general_log;
disconnect con2; disconnect con2;
disconnect con1; disconnect con1;
......
...@@ -657,7 +657,12 @@ public: ...@@ -657,7 +657,12 @@ public:
} }
String* val_str(String* str); String* val_str(String* str);
const char *func_name() const { return "inet_ntoa"; } const char *func_name() const { return "inet_ntoa"; }
void fix_length_and_dec() { decimals = 0; max_length=3*8+7; } void fix_length_and_dec()
{
decimals= 0;
max_length= 3 * 8 + 7;
maybe_null= 1;
}
}; };
class Item_func_quote :public Item_str_func class Item_func_quote :public Item_str_func
......
...@@ -2102,18 +2102,24 @@ void sys_var_log_state::set_default(THD *thd, enum_var_type type) ...@@ -2102,18 +2102,24 @@ void sys_var_log_state::set_default(THD *thd, enum_var_type type)
static int sys_check_log_path(THD *thd, set_var *var) static int sys_check_log_path(THD *thd, set_var *var)
{ {
char path[FN_REFLEN]; char path[FN_REFLEN], buff[FN_REFLEN];
MY_STAT f_stat; MY_STAT f_stat;
const char *var_path= var->value->str_value.ptr(); String str(buff, sizeof(buff), system_charset_info), *res;
const char *log_file_str;
if (!(res= var->value->val_str(&str)))
goto err;
log_file_str= res->c_ptr();
bzero(&f_stat, sizeof(MY_STAT)); bzero(&f_stat, sizeof(MY_STAT));
(void) unpack_filename(path, var_path); (void) unpack_filename(path, log_file_str);
if (my_stat(path, &f_stat, MYF(0))) if (my_stat(path, &f_stat, MYF(0)))
{ {
/* Check if argument is a file and we have 'write' permission */ /* Check if argument is a file and we have 'write' permission */
if (!MY_S_ISREG(f_stat.st_mode) || if (!MY_S_ISREG(f_stat.st_mode) ||
!(f_stat.st_mode & MY_S_IWRITE)) !(f_stat.st_mode & MY_S_IWRITE))
return -1; goto err;
} }
else else
{ {
...@@ -2122,11 +2128,16 @@ static int sys_check_log_path(THD *thd, set_var *var) ...@@ -2122,11 +2128,16 @@ static int sys_check_log_path(THD *thd, set_var *var)
Check if directory exists and Check if directory exists and
we have permission to create file & write to file we have permission to create file & write to file
*/ */
(void) dirname_part(path, var_path, &path_length); (void) dirname_part(path, log_file_str, &path_length);
if (my_access(path, (F_OK|W_OK))) if (my_access(path, (F_OK|W_OK)))
return -1; goto err;
} }
return 0; return 0;
err:
my_error(ER_WRONG_VALUE_FOR_VAR, MYF(0), var->var->name,
res ? log_file_str : "NULL");
return 1;
} }
......
...@@ -1561,16 +1561,20 @@ my_strntoull10rnd_8bit(CHARSET_INFO *cs __attribute__((unused)), ...@@ -1561,16 +1561,20 @@ my_strntoull10rnd_8bit(CHARSET_INFO *cs __attribute__((unused)),
} }
else else
addon= (*str >= '5'); addon= (*str >= '5');
for ( ; str < end && (ch= (uchar) (*str - '0')) < 10; str++)
{
if (!dot) if (!dot)
shift++; {
} for ( ; str < end && (ch= (uchar) (*str - '0')) < 10; shift++, str++);
if (str < end && *str == '.' && !dot) if (str < end && *str == '.')
{ {
str++; str++;
for ( ; str < end && (ch= (uchar) (*str - '0')) < 10; str++); for ( ; str < end && (ch= (uchar) (*str - '0')) < 10; str++);
} }
}
else
{
shift= dot - str;
for ( ; str < end && (ch= (uchar) (*str - '0')) < 10; str++);
}
goto exp; goto exp;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment