mirror of
https://github.com/MariaDB/server.git
synced 2025-10-30 04:26:45 +03:00
Merge tnurnberg@bk-internal.mysql.com:/home/bk/mysql-5.1-maint
into mysql.com:/scratch/tnurnberg/20901/51-20901
This commit is contained in:
@@ -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
|
|||||||
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;
|
|||||||
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
|
|||||||
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';
|
|||||||
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;
|
|||||||
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;
|
|||||||
|
|
||||||
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;
|
|||||||
# 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_
|
|||||||
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;
|
|||||||
# ++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:
|
|||||||
}
|
}
|
||||||
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)
|
|||||||
|
|
||||||
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)
|
|||||||
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,14 +1561,18 @@ 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)
|
for ( ; str < end && (ch= (uchar) (*str - '0')) < 10; shift++, str++);
|
||||||
shift++;
|
if (str < end && *str == '.')
|
||||||
|
{
|
||||||
|
str++;
|
||||||
|
for ( ; str < end && (ch= (uchar) (*str - '0')) < 10; str++);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (str < end && *str == '.' && !dot)
|
else
|
||||||
{
|
{
|
||||||
str++;
|
shift= dot - str;
|
||||||
for ( ; str < end && (ch= (uchar) (*str - '0')) < 10; str++);
|
for ( ; str < end && (ch= (uchar) (*str - '0')) < 10; str++);
|
||||||
}
|
}
|
||||||
goto exp;
|
goto exp;
|
||||||
|
|||||||
Reference in New Issue
Block a user