mirror of
https://github.com/MariaDB/server.git
synced 2025-02-01 03:21:53 +01:00
auto-merge
This commit is contained in:
commit
7e0ec5c44a
28 changed files with 695 additions and 177 deletions
|
@ -1327,6 +1327,35 @@ static int run_tool(const char *tool_path, DYNAMIC_STRING *ds_res, ...)
|
|||
DBUG_RETURN(ret);
|
||||
}
|
||||
|
||||
/*
|
||||
Test if diff is present. This is needed on Windows systems
|
||||
as the OS returns 1 whether diff is successful or if it is
|
||||
not present.
|
||||
|
||||
We run diff -v and look for output in stdout.
|
||||
We don't redirect stderr to stdout to make for a simplified check
|
||||
Windows will output '"diff"' is not recognized... to stderr if it is
|
||||
not present.
|
||||
*/
|
||||
|
||||
int diff_check()
|
||||
{
|
||||
char buf[512]= {0};
|
||||
FILE *res_file;
|
||||
char *cmd = "diff -v";
|
||||
int have_diff = 0;
|
||||
|
||||
if (!(res_file= popen(cmd, "r")))
|
||||
die("popen(\"%s\", \"r\") failed", cmd);
|
||||
|
||||
/* if diff is not present, nothing will be in stdout to increment have_diff */
|
||||
if (fgets(buf, sizeof(buf), res_file))
|
||||
{
|
||||
have_diff += 1;
|
||||
}
|
||||
pclose(res_file);
|
||||
return have_diff;
|
||||
}
|
||||
|
||||
/*
|
||||
Show the diff of two files using the systems builtin diff
|
||||
|
@ -1346,34 +1375,51 @@ void show_diff(DYNAMIC_STRING* ds,
|
|||
{
|
||||
|
||||
DYNAMIC_STRING ds_tmp;
|
||||
int have_diff = 0;
|
||||
|
||||
if (init_dynamic_string(&ds_tmp, "", 256, 256))
|
||||
die("Out of memory");
|
||||
|
||||
/* determine if we have diff on Windows
|
||||
needs special processing due to return values
|
||||
on that OS
|
||||
*/
|
||||
have_diff = diff_check();
|
||||
|
||||
/* First try with unified diff */
|
||||
if (run_tool("diff",
|
||||
&ds_tmp, /* Get output from diff in ds_tmp */
|
||||
"-u",
|
||||
filename1,
|
||||
filename2,
|
||||
"2>&1",
|
||||
NULL) > 1) /* Most "diff" tools return >1 if error */
|
||||
if (have_diff)
|
||||
{
|
||||
dynstr_set(&ds_tmp, "");
|
||||
|
||||
/* Fallback to context diff with "diff -c" */
|
||||
/* First try with unified diff */
|
||||
if (run_tool("diff",
|
||||
&ds_tmp, /* Get output from diff in ds_tmp */
|
||||
"-c",
|
||||
"-u",
|
||||
filename1,
|
||||
filename2,
|
||||
"2>&1",
|
||||
NULL) > 1) /* Most "diff" tools return >1 if error */
|
||||
{
|
||||
/*
|
||||
Fallback to dump both files to result file and inform
|
||||
about installing "diff"
|
||||
*/
|
||||
dynstr_set(&ds_tmp, "");
|
||||
|
||||
/* Fallback to context diff with "diff -c" */
|
||||
if (run_tool("diff",
|
||||
&ds_tmp, /* Get output from diff in ds_tmp */
|
||||
"-c",
|
||||
filename1,
|
||||
filename2,
|
||||
"2>&1",
|
||||
NULL) > 1) /* Most "diff" tools return >1 if error */
|
||||
{
|
||||
have_diff= 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!(have_diff))
|
||||
{
|
||||
/*
|
||||
Fallback to dump both files to result file and inform
|
||||
about installing "diff"
|
||||
*/
|
||||
|
||||
dynstr_set(&ds_tmp, "");
|
||||
|
||||
dynstr_append(&ds_tmp,
|
||||
|
@ -1397,8 +1443,7 @@ void show_diff(DYNAMIC_STRING* ds,
|
|||
dynstr_append(&ds_tmp, " >>>\n");
|
||||
cat_file(&ds_tmp, filename2);
|
||||
dynstr_append(&ds_tmp, "<<<<\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (ds)
|
||||
{
|
||||
|
|
|
@ -617,10 +617,10 @@ call p_verify_status_increment(0, 0, 0, 0);
|
|||
--echo
|
||||
--echo # No test because of Bug#8729 "rename table fails on temporary table"
|
||||
|
||||
--echo # 24. DDL: TRUNCATE TEMPORARY TABLE, does not start a transaction
|
||||
--echo # 24. DDL: TRUNCATE TEMPORARY TABLE
|
||||
--echo
|
||||
truncate table t2;
|
||||
call p_verify_status_increment(2, 0, 2, 0);
|
||||
call p_verify_status_increment(4, 0, 4, 0);
|
||||
commit;
|
||||
--echo # There is nothing left to commit
|
||||
call p_verify_status_increment(0, 0, 0, 0);
|
||||
|
@ -733,7 +733,7 @@ call p_verify_status_increment(1, 0, 1, 0);
|
|||
rename table t4 to t3;
|
||||
call p_verify_status_increment(1, 0, 1, 0);
|
||||
truncate table t3;
|
||||
call p_verify_status_increment(2, 2, 2, 2);
|
||||
call p_verify_status_increment(4, 4, 2, 2);
|
||||
create view v1 as select * from t2;
|
||||
call p_verify_status_increment(1, 0, 1, 0);
|
||||
check table t1;
|
||||
|
|
|
@ -11,6 +11,6 @@ eval SET @@global.sort_buffer_size = $save;
|
|||
--enable_query_log
|
||||
if (!$mach32)
|
||||
{
|
||||
skip Need a 32 bit machine;
|
||||
skip Need a 32 bit machine/binary;
|
||||
}
|
||||
|
||||
|
|
|
@ -9,6 +9,6 @@ eval SET @@session.sort_buffer_size = $save;
|
|||
--enable_query_log
|
||||
if (!$mach64)
|
||||
{
|
||||
skip Need a 64 bit machine;
|
||||
skip Need a 64 binary ;
|
||||
}
|
||||
|
||||
|
|
|
@ -683,10 +683,10 @@ SUCCESS
|
|||
# 23. DDL: RENAME TEMPORARY TABLE, does not start a transaction
|
||||
|
||||
# No test because of Bug#8729 "rename table fails on temporary table"
|
||||
# 24. DDL: TRUNCATE TEMPORARY TABLE, does not start a transaction
|
||||
# 24. DDL: TRUNCATE TEMPORARY TABLE
|
||||
|
||||
truncate table t2;
|
||||
call p_verify_status_increment(2, 0, 2, 0);
|
||||
call p_verify_status_increment(4, 0, 4, 0);
|
||||
SUCCESS
|
||||
|
||||
commit;
|
||||
|
@ -853,7 +853,7 @@ call p_verify_status_increment(1, 0, 1, 0);
|
|||
SUCCESS
|
||||
|
||||
truncate table t3;
|
||||
call p_verify_status_increment(2, 2, 2, 2);
|
||||
call p_verify_status_increment(4, 4, 2, 2);
|
||||
SUCCESS
|
||||
|
||||
create view v1 as select * from t2;
|
||||
|
|
|
@ -1767,4 +1767,83 @@ ref NULL
|
|||
rows 6
|
||||
Extra Using where; Using index
|
||||
DROP TABLE foo, bar, foo2;
|
||||
DROP TABLE IF EXISTS t1,t3,t2;
|
||||
DROP FUNCTION IF EXISTS f1;
|
||||
CREATE FUNCTION f1() RETURNS VARCHAR(250)
|
||||
BEGIN
|
||||
return 'hhhhhhh' ;
|
||||
END|
|
||||
CREATE TABLE t1 (a VARCHAR(20), b VARCHAR(20), c VARCHAR(20)) ENGINE=INNODB;
|
||||
BEGIN WORK;
|
||||
CREATE TEMPORARY TABLE t2 (a VARCHAR(20), b VARCHAR(20), c varchar(20)) ENGINE=INNODB;
|
||||
CREATE TEMPORARY TABLE t3 LIKE t2;
|
||||
INSERT INTO t1 VALUES ('a','b',NULL),('c','d',NULL),('e','f',NULL);
|
||||
SET @stmt := CONCAT('INSERT INTO t2 SELECT tbl.a, tbl.b, f1()',' FROM t1 tbl');
|
||||
PREPARE stmt1 FROM @stmt;
|
||||
SET @stmt := CONCAT('INSERT INTO t3', ' SELECT * FROM t2');
|
||||
PREPARE stmt3 FROM @stmt;
|
||||
EXECUTE stmt1;
|
||||
COMMIT;
|
||||
DEALLOCATE PREPARE stmt1;
|
||||
DEALLOCATE PREPARE stmt3;
|
||||
DROP TABLE t1,t3,t2;
|
||||
DROP FUNCTION f1;
|
||||
DROP TABLE IF EXISTS t1,t2;
|
||||
CREATE TABLE t1 (id INT NOT NULL, PRIMARY KEY (id)) ENGINE=INNODB;
|
||||
CREATE TABLE t2 (id INT PRIMARY KEY,
|
||||
t1_id INT, INDEX par_ind (t1_id),
|
||||
FOREIGN KEY (t1_id) REFERENCES t1(id)) ENGINE=INNODB;
|
||||
INSERT INTO t1 VALUES (1),(2);
|
||||
INSERT INTO t2 VALUES (3,2);
|
||||
SET AUTOCOMMIT = 0;
|
||||
START TRANSACTION;
|
||||
TRUNCATE TABLE t1;
|
||||
ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`t1_id`) REFERENCES `t1` (`id`))
|
||||
SELECT * FROM t1;
|
||||
id
|
||||
1
|
||||
2
|
||||
COMMIT;
|
||||
SELECT * FROM t1;
|
||||
id
|
||||
1
|
||||
2
|
||||
START TRANSACTION;
|
||||
TRUNCATE TABLE t1;
|
||||
ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`t1_id`) REFERENCES `t1` (`id`))
|
||||
SELECT * FROM t1;
|
||||
id
|
||||
1
|
||||
2
|
||||
ROLLBACK;
|
||||
SELECT * FROM t1;
|
||||
id
|
||||
1
|
||||
2
|
||||
SET AUTOCOMMIT = 1;
|
||||
START TRANSACTION;
|
||||
SELECT * FROM t1;
|
||||
id
|
||||
1
|
||||
2
|
||||
COMMIT;
|
||||
TRUNCATE TABLE t1;
|
||||
ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`t1_id`) REFERENCES `t1` (`id`))
|
||||
SELECT * FROM t1;
|
||||
id
|
||||
1
|
||||
2
|
||||
DELETE FROM t2 WHERE id = 3;
|
||||
START TRANSACTION;
|
||||
SELECT * FROM t1;
|
||||
id
|
||||
1
|
||||
2
|
||||
TRUNCATE TABLE t1;
|
||||
ROLLBACK;
|
||||
SELECT * FROM t1;
|
||||
id
|
||||
TRUNCATE TABLE t2;
|
||||
DROP TABLE t2;
|
||||
DROP TABLE t1;
|
||||
End of 5.1 tests
|
||||
|
|
|
@ -1,4 +1,16 @@
|
|||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||
CREATE TABLE t1
|
||||
(a INT NOT NULL AUTO_INCREMENT,
|
||||
b DATETIME,
|
||||
PRIMARY KEY (a,b),
|
||||
KEY (b))
|
||||
PARTITION BY RANGE (to_days(b))
|
||||
(PARTITION p0 VALUES LESS THAN (733681) COMMENT = 'LESS THAN 2008-10-01',
|
||||
PARTITION p1 VALUES LESS THAN (733712) COMMENT = 'LESS THAN 2008-11-01',
|
||||
PARTITION pX VALUES LESS THAN MAXVALUE);
|
||||
SELECT a,b FROM t1 WHERE b >= '2008-12-01' AND b < '2009-12-00';
|
||||
a b
|
||||
DROP TABLE t1;
|
||||
create table t1 ( a int not null) partition by hash(a) partitions 2;
|
||||
insert into t1 values (1),(2),(3);
|
||||
explain select * from t1 where a=5 and a=6;
|
||||
|
|
|
@ -194,4 +194,20 @@ DELETE FROM t1;
|
|||
SELECT * FROM t1;
|
||||
a b
|
||||
DROP TABLE t1;
|
||||
DROP TABLE IF EXISTS t1,t2;
|
||||
DROP FUNCTION IF EXISTS f1;
|
||||
CREATE TEMPORARY TABLE t1 (a INT);
|
||||
CREATE TEMPORARY TABLE t2 LIKE t1;
|
||||
CREATE FUNCTION f1() RETURNS INT
|
||||
BEGIN
|
||||
return 1;
|
||||
END|
|
||||
INSERT INTO t2 SELECT * FROM t1;
|
||||
INSERT INTO t1 SELECT f1();
|
||||
CREATE TABLE t3 SELECT * FROM t1;
|
||||
INSERT INTO t1 SELECT f1();
|
||||
UPDATE t1,t2 SET t1.a = t2.a;
|
||||
INSERT INTO t2 SELECT f1();
|
||||
DROP TABLE t1,t2,t3;
|
||||
DROP FUNCTION f1;
|
||||
End of 5.1 tests
|
||||
|
|
|
@ -113,16 +113,17 @@ master-bin.000001 # Table_map # # table_id: # (test.t1)
|
|||
master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
|
||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||
DROP TABLE t1;
|
||||
flush status;
|
||||
show status like "binlog_cache_use";
|
||||
Variable_name Value
|
||||
Binlog_cache_use 13
|
||||
Binlog_cache_use 0
|
||||
show status like "binlog_cache_disk_use";
|
||||
Variable_name Value
|
||||
Binlog_cache_disk_use 0
|
||||
create table t1 (a int) engine=innodb;
|
||||
show status like "binlog_cache_use";
|
||||
Variable_name Value
|
||||
Binlog_cache_use 14
|
||||
Binlog_cache_use 1
|
||||
show status like "binlog_cache_disk_use";
|
||||
Variable_name Value
|
||||
Binlog_cache_disk_use 1
|
||||
|
@ -131,7 +132,7 @@ delete from t1;
|
|||
commit;
|
||||
show status like "binlog_cache_use";
|
||||
Variable_name Value
|
||||
Binlog_cache_use 15
|
||||
Binlog_cache_use 2
|
||||
show status like "binlog_cache_disk_use";
|
||||
Variable_name Value
|
||||
Binlog_cache_disk_use 1
|
||||
|
|
|
@ -101,6 +101,7 @@ DROP TABLE t1;
|
|||
# Actually this test has nothing to do with innodb per se, it just requires
|
||||
# transactional table.
|
||||
#
|
||||
flush status;
|
||||
show status like "binlog_cache_use";
|
||||
show status like "binlog_cache_disk_use";
|
||||
|
||||
|
|
|
@ -40,9 +40,12 @@
|
|||
# Save initial value #
|
||||
#############################################################
|
||||
|
||||
# due to differences when running on Windows (bug filed)
|
||||
# due to differences when running on Windows (Bug#36695)
|
||||
--source include/not_windows.inc
|
||||
|
||||
let $kbrange32 = BETWEEN 32776 AND 32999;
|
||||
let $mbrange2 = BETWEEN 2097116 AND 2100000;
|
||||
|
||||
--disable_warnings
|
||||
|
||||
SET @start_global_value = @@global.sort_buffer_size;
|
||||
|
@ -55,11 +58,13 @@ SET @start_session_value = @@session.sort_buffer_size;
|
|||
|
||||
SET @@global.sort_buffer_size = 1000;
|
||||
SET @@global.sort_buffer_size = DEFAULT;
|
||||
SELECT @@global.sort_buffer_size >= 2097116 AND @@global.sort_buffer_size < 3000000;
|
||||
eval
|
||||
SELECT @@global.sort_buffer_size $mbrange2;
|
||||
|
||||
SET @@session.sort_buffer_size = 2000;
|
||||
SET @@session.sort_buffer_size = DEFAULT;
|
||||
SELECT @@session.sort_buffer_size >= 2097116 AND @@session.sort_buffer_size < 3000000;
|
||||
eval
|
||||
SELECT @@session.sort_buffer_size $mbrange2;
|
||||
|
||||
|
||||
--echo '#--------------------FN_DYNVARS_151_02-------------------------#'
|
||||
|
@ -68,10 +73,12 @@ SELECT @@session.sort_buffer_size >= 2097116 AND @@session.sort_buffer_size < 30
|
|||
######################################################################
|
||||
|
||||
SET @@global.sort_buffer_size = DEFAULT;
|
||||
SELECT @@global.sort_buffer_size >= 2097116 AND @@global.sort_buffer_size < 3000000;
|
||||
eval
|
||||
SELECT @@global.sort_buffer_size $mbrange2;
|
||||
|
||||
SET @@session.sort_buffer_size = DEFAULT;
|
||||
SELECT @@session.sort_buffer_size >= 2097116 AND @@session.sort_buffer_size < 3000000;
|
||||
eval
|
||||
SELECT @@session.sort_buffer_size $mbrange2;
|
||||
|
||||
|
||||
--echo '#--------------------FN_DYNVARS_151_03-------------------------#'
|
||||
|
@ -80,9 +87,11 @@ SELECT @@session.sort_buffer_size >= 2097116 AND @@session.sort_buffer_size < 30
|
|||
################################################################################
|
||||
|
||||
SET @@global.sort_buffer_size = 32776;
|
||||
SELECT @@global.sort_buffer_size >= 32776 AND @@global.sort_buffer_size < 33000;
|
||||
eval
|
||||
SELECT @@global.sort_buffer_size $kbrange32;
|
||||
SET @@global.sort_buffer_size = 32777;
|
||||
SELECT @@global.sort_buffer_size >= 32776 AND @@global.sort_buffer_size < 33000;
|
||||
eval
|
||||
SELECT @@global.sort_buffer_size $kbrange32;
|
||||
SET @@global.sort_buffer_size = 4294967295;
|
||||
SELECT @@global.sort_buffer_size;
|
||||
SET @@global.sort_buffer_size = 4294967294;
|
||||
|
@ -94,9 +103,11 @@ SELECT @@global.sort_buffer_size;
|
|||
###################################################################################
|
||||
|
||||
SET @@session.sort_buffer_size = 32776;
|
||||
SELECT @@session.sort_buffer_size >= 32776 AND @@session.sort_buffer_size < 33000;
|
||||
eval
|
||||
SELECT @@session.sort_buffer_size $kbrange32;
|
||||
SET @@session.sort_buffer_size = 32777;
|
||||
SELECT @@session.sort_buffer_size >= 32776 AND @@session.sort_buffer_size < 33000;
|
||||
eval
|
||||
SELECT @@session.sort_buffer_size $kbrange32;
|
||||
SET @@session.sort_buffer_size = 4294967295;
|
||||
SELECT @@session.sort_buffer_size;
|
||||
SET @@session.sort_buffer_size = 4294967294;
|
||||
|
@ -109,9 +120,11 @@ SELECT @@session.sort_buffer_size;
|
|||
##################################################################
|
||||
|
||||
SET @@global.sort_buffer_size = 32775;
|
||||
SELECT @@global.sort_buffer_size >= 32776 AND @@global.sort_buffer_size < 33000;
|
||||
eval
|
||||
SELECT @@global.sort_buffer_size $kbrange32;
|
||||
SET @@global.sort_buffer_size = -1024;
|
||||
SELECT @@global.sort_buffer_size >= 32776 AND @@global.sort_buffer_size < 33000;
|
||||
eval
|
||||
SELECT @@global.sort_buffer_size $kbrange32;
|
||||
SET @@global.sort_buffer_size = 4294967296;
|
||||
SELECT @@global.sort_buffer_size;
|
||||
--Error ER_PARSE_ERROR
|
||||
|
@ -122,9 +135,11 @@ SET @@global.sort_buffer_size = test;
|
|||
SELECT @@global.sort_buffer_size;
|
||||
|
||||
SET @@session.sort_buffer_size = 32775;
|
||||
SELECT @@session.sort_buffer_size >= 32776 AND @@session.sort_buffer_size < 33000;
|
||||
eval
|
||||
SELECT @@session.sort_buffer_size $kbrange32;
|
||||
SET @@session.sort_buffer_size = -2;
|
||||
SELECT @@session.sort_buffer_size >= 32776 AND @@session.sort_buffer_size < 33000;
|
||||
eval
|
||||
SELECT @@session.sort_buffer_size $kbrange32;
|
||||
--Error ER_PARSE_ERROR
|
||||
SET @@session.sort_buffer_size = 65530.34.;
|
||||
SET @@session.sort_buffer_size = 4294967296;
|
||||
|
@ -148,7 +163,7 @@ SELECT @@global.sort_buffer_size = VARIABLE_VALUE FROM
|
|||
####################################################################
|
||||
|
||||
SELECT @@session.sort_buffer_size = VARIABLE_VALUE FROM
|
||||
INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='sort_buffer_size';
|
||||
INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='sort_buffer_size';
|
||||
|
||||
|
||||
--echo '#------------------FN_DYNVARS_151_08-----------------------#'
|
||||
|
@ -157,9 +172,11 @@ SELECT @@session.sort_buffer_size = VARIABLE_VALUE FROM
|
|||
####################################################################
|
||||
|
||||
SET @@global.sort_buffer_size = TRUE;
|
||||
SELECT @@global.sort_buffer_size >= 32776 AND @@global.sort_buffer_size < 33000;
|
||||
eval
|
||||
SELECT @@global.sort_buffer_size $kbrange32;
|
||||
SET @@global.sort_buffer_size = FALSE;
|
||||
SELECT @@global.sort_buffer_size >= 32776 AND @@global.sort_buffer_size < 33000;
|
||||
eval
|
||||
SELECT @@global.sort_buffer_size $kbrange32;
|
||||
|
||||
--echo '#---------------------FN_DYNVARS_151_09----------------------#'
|
||||
####################################################################################
|
||||
|
@ -185,7 +202,8 @@ SELECT @@local.sort_buffer_size = @@session.sort_buffer_size;
|
|||
###################################################################################
|
||||
|
||||
SET sort_buffer_size = 9100;
|
||||
SELECT @@sort_buffer_size >= 32776 AND @@sort_buffer_size < 33000;
|
||||
eval
|
||||
SELECT @@sort_buffer_size $kbrange32;
|
||||
--Error ER_UNKNOWN_TABLE
|
||||
SELECT local.sort_buffer_size;
|
||||
--Error ER_UNKNOWN_TABLE
|
||||
|
|
|
@ -3,31 +3,31 @@ SET @start_session_value = @@session.sort_buffer_size;
|
|||
'#--------------------FN_DYNVARS_151_01-------------------------#'
|
||||
SET @@global.sort_buffer_size = 1000;
|
||||
SET @@global.sort_buffer_size = DEFAULT;
|
||||
SELECT @@global.sort_buffer_size >= 2097116 AND @@global.sort_buffer_size < 3000000;
|
||||
@@global.sort_buffer_size >= 2097116 AND @@global.sort_buffer_size < 3000000
|
||||
SELECT @@global.sort_buffer_size BETWEEN 2097116 AND 2100000;
|
||||
@@global.sort_buffer_size BETWEEN 2097116 AND 2100000
|
||||
1
|
||||
SET @@session.sort_buffer_size = 2000;
|
||||
SET @@session.sort_buffer_size = DEFAULT;
|
||||
SELECT @@session.sort_buffer_size >= 2097116 AND @@session.sort_buffer_size < 3000000;
|
||||
@@session.sort_buffer_size >= 2097116 AND @@session.sort_buffer_size < 3000000
|
||||
SELECT @@session.sort_buffer_size BETWEEN 2097116 AND 2100000;
|
||||
@@session.sort_buffer_size BETWEEN 2097116 AND 2100000
|
||||
1
|
||||
'#--------------------FN_DYNVARS_151_02-------------------------#'
|
||||
SET @@global.sort_buffer_size = DEFAULT;
|
||||
SELECT @@global.sort_buffer_size >= 2097116 AND @@global.sort_buffer_size < 3000000;
|
||||
@@global.sort_buffer_size >= 2097116 AND @@global.sort_buffer_size < 3000000
|
||||
SELECT @@global.sort_buffer_size BETWEEN 2097116 AND 2100000;
|
||||
@@global.sort_buffer_size BETWEEN 2097116 AND 2100000
|
||||
1
|
||||
SET @@session.sort_buffer_size = DEFAULT;
|
||||
SELECT @@session.sort_buffer_size >= 2097116 AND @@session.sort_buffer_size < 3000000;
|
||||
@@session.sort_buffer_size >= 2097116 AND @@session.sort_buffer_size < 3000000
|
||||
SELECT @@session.sort_buffer_size BETWEEN 2097116 AND 2100000;
|
||||
@@session.sort_buffer_size BETWEEN 2097116 AND 2100000
|
||||
1
|
||||
'#--------------------FN_DYNVARS_151_03-------------------------#'
|
||||
SET @@global.sort_buffer_size = 32776;
|
||||
SELECT @@global.sort_buffer_size >= 32776 AND @@global.sort_buffer_size < 33000;
|
||||
@@global.sort_buffer_size >= 32776 AND @@global.sort_buffer_size < 33000
|
||||
SELECT @@global.sort_buffer_size BETWEEN 32776 AND 32999;
|
||||
@@global.sort_buffer_size BETWEEN 32776 AND 32999
|
||||
1
|
||||
SET @@global.sort_buffer_size = 32777;
|
||||
SELECT @@global.sort_buffer_size >= 32776 AND @@global.sort_buffer_size < 33000;
|
||||
@@global.sort_buffer_size >= 32776 AND @@global.sort_buffer_size < 33000
|
||||
SELECT @@global.sort_buffer_size BETWEEN 32776 AND 32999;
|
||||
@@global.sort_buffer_size BETWEEN 32776 AND 32999
|
||||
1
|
||||
SET @@global.sort_buffer_size = 4294967295;
|
||||
SELECT @@global.sort_buffer_size;
|
||||
|
@ -39,12 +39,12 @@ SELECT @@global.sort_buffer_size;
|
|||
4294967294
|
||||
'#--------------------FN_DYNVARS_151_04-------------------------#'
|
||||
SET @@session.sort_buffer_size = 32776;
|
||||
SELECT @@session.sort_buffer_size >= 32776 AND @@session.sort_buffer_size < 33000;
|
||||
@@session.sort_buffer_size >= 32776 AND @@session.sort_buffer_size < 33000
|
||||
SELECT @@session.sort_buffer_size BETWEEN 32776 AND 32999;
|
||||
@@session.sort_buffer_size BETWEEN 32776 AND 32999
|
||||
1
|
||||
SET @@session.sort_buffer_size = 32777;
|
||||
SELECT @@session.sort_buffer_size >= 32776 AND @@session.sort_buffer_size < 33000;
|
||||
@@session.sort_buffer_size >= 32776 AND @@session.sort_buffer_size < 33000
|
||||
SELECT @@session.sort_buffer_size BETWEEN 32776 AND 32999;
|
||||
@@session.sort_buffer_size BETWEEN 32776 AND 32999
|
||||
1
|
||||
SET @@session.sort_buffer_size = 4294967295;
|
||||
SELECT @@session.sort_buffer_size;
|
||||
|
@ -56,12 +56,12 @@ SELECT @@session.sort_buffer_size;
|
|||
4294967294
|
||||
'#------------------FN_DYNVARS_151_05-----------------------#'
|
||||
SET @@global.sort_buffer_size = 32775;
|
||||
SELECT @@global.sort_buffer_size >= 32776 AND @@global.sort_buffer_size < 33000;
|
||||
@@global.sort_buffer_size >= 32776 AND @@global.sort_buffer_size < 33000
|
||||
SELECT @@global.sort_buffer_size BETWEEN 32776 AND 32999;
|
||||
@@global.sort_buffer_size BETWEEN 32776 AND 32999
|
||||
1
|
||||
SET @@global.sort_buffer_size = -1024;
|
||||
SELECT @@global.sort_buffer_size >= 32776 AND @@global.sort_buffer_size < 33000;
|
||||
@@global.sort_buffer_size >= 32776 AND @@global.sort_buffer_size < 33000
|
||||
SELECT @@global.sort_buffer_size BETWEEN 32776 AND 32999;
|
||||
@@global.sort_buffer_size BETWEEN 32776 AND 32999
|
||||
1
|
||||
SET @@global.sort_buffer_size = 4294967296;
|
||||
SELECT @@global.sort_buffer_size;
|
||||
|
@ -78,12 +78,12 @@ SELECT @@global.sort_buffer_size;
|
|||
@@global.sort_buffer_size
|
||||
4294967295
|
||||
SET @@session.sort_buffer_size = 32775;
|
||||
SELECT @@session.sort_buffer_size >= 32776 AND @@session.sort_buffer_size < 33000;
|
||||
@@session.sort_buffer_size >= 32776 AND @@session.sort_buffer_size < 33000
|
||||
SELECT @@session.sort_buffer_size BETWEEN 32776 AND 32999;
|
||||
@@session.sort_buffer_size BETWEEN 32776 AND 32999
|
||||
1
|
||||
SET @@session.sort_buffer_size = -2;
|
||||
SELECT @@session.sort_buffer_size >= 32776 AND @@session.sort_buffer_size < 33000;
|
||||
@@session.sort_buffer_size >= 32776 AND @@session.sort_buffer_size < 33000
|
||||
SELECT @@session.sort_buffer_size BETWEEN 32776 AND 32999;
|
||||
@@session.sort_buffer_size BETWEEN 32776 AND 32999
|
||||
1
|
||||
SET @@session.sort_buffer_size = 65530.34.;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1
|
||||
|
@ -105,12 +105,12 @@ INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='sort_buffer_size';
|
|||
1
|
||||
'#------------------FN_DYNVARS_151_08-----------------------#'
|
||||
SET @@global.sort_buffer_size = TRUE;
|
||||
SELECT @@global.sort_buffer_size >= 32776 AND @@global.sort_buffer_size < 33000;
|
||||
@@global.sort_buffer_size >= 32776 AND @@global.sort_buffer_size < 33000
|
||||
SELECT @@global.sort_buffer_size BETWEEN 32776 AND 32999;
|
||||
@@global.sort_buffer_size BETWEEN 32776 AND 32999
|
||||
1
|
||||
SET @@global.sort_buffer_size = FALSE;
|
||||
SELECT @@global.sort_buffer_size >= 32776 AND @@global.sort_buffer_size < 33000;
|
||||
@@global.sort_buffer_size >= 32776 AND @@global.sort_buffer_size < 33000
|
||||
SELECT @@global.sort_buffer_size BETWEEN 32776 AND 32999;
|
||||
@@global.sort_buffer_size BETWEEN 32776 AND 32999
|
||||
1
|
||||
'#---------------------FN_DYNVARS_151_09----------------------#'
|
||||
SET @@global.sort_buffer_size = 9000;
|
||||
|
@ -127,8 +127,8 @@ SELECT @@local.sort_buffer_size = @@session.sort_buffer_size;
|
|||
1
|
||||
'#---------------------FN_DYNVARS_151_11----------------------#'
|
||||
SET sort_buffer_size = 9100;
|
||||
SELECT @@sort_buffer_size >= 32776 AND @@sort_buffer_size < 33000;
|
||||
@@sort_buffer_size >= 32776 AND @@sort_buffer_size < 33000
|
||||
SELECT @@sort_buffer_size BETWEEN 32776 AND 32999;
|
||||
@@sort_buffer_size BETWEEN 32776 AND 32999
|
||||
1
|
||||
SELECT local.sort_buffer_size;
|
||||
ERROR 42S02: Unknown table 'local' in field list
|
||||
|
|
|
@ -3,31 +3,31 @@ SET @start_session_value = @@session.sort_buffer_size;
|
|||
'#--------------------FN_DYNVARS_151_01-------------------------#'
|
||||
SET @@global.sort_buffer_size = 1000;
|
||||
SET @@global.sort_buffer_size = DEFAULT;
|
||||
SELECT @@global.sort_buffer_size >= 2097116 AND @@global.sort_buffer_size < 3000000;
|
||||
@@global.sort_buffer_size >= 2097116 AND @@global.sort_buffer_size < 3000000
|
||||
SELECT @@global.sort_buffer_size BETWEEN 2097116 AND 2100000;
|
||||
@@global.sort_buffer_size BETWEEN 2097116 AND 2100000
|
||||
1
|
||||
SET @@session.sort_buffer_size = 2000;
|
||||
SET @@session.sort_buffer_size = DEFAULT;
|
||||
SELECT @@session.sort_buffer_size >= 2097116 AND @@session.sort_buffer_size < 3000000;
|
||||
@@session.sort_buffer_size >= 2097116 AND @@session.sort_buffer_size < 3000000
|
||||
SELECT @@session.sort_buffer_size BETWEEN 2097116 AND 2100000;
|
||||
@@session.sort_buffer_size BETWEEN 2097116 AND 2100000
|
||||
1
|
||||
'#--------------------FN_DYNVARS_151_02-------------------------#'
|
||||
SET @@global.sort_buffer_size = DEFAULT;
|
||||
SELECT @@global.sort_buffer_size >= 2097116 AND @@global.sort_buffer_size < 3000000;
|
||||
@@global.sort_buffer_size >= 2097116 AND @@global.sort_buffer_size < 3000000
|
||||
SELECT @@global.sort_buffer_size BETWEEN 2097116 AND 2100000;
|
||||
@@global.sort_buffer_size BETWEEN 2097116 AND 2100000
|
||||
1
|
||||
SET @@session.sort_buffer_size = DEFAULT;
|
||||
SELECT @@session.sort_buffer_size >= 2097116 AND @@session.sort_buffer_size < 3000000;
|
||||
@@session.sort_buffer_size >= 2097116 AND @@session.sort_buffer_size < 3000000
|
||||
SELECT @@session.sort_buffer_size BETWEEN 2097116 AND 2100000;
|
||||
@@session.sort_buffer_size BETWEEN 2097116 AND 2100000
|
||||
1
|
||||
'#--------------------FN_DYNVARS_151_03-------------------------#'
|
||||
SET @@global.sort_buffer_size = 32776;
|
||||
SELECT @@global.sort_buffer_size >= 32776 AND @@global.sort_buffer_size < 33000;
|
||||
@@global.sort_buffer_size >= 32776 AND @@global.sort_buffer_size < 33000
|
||||
SELECT @@global.sort_buffer_size BETWEEN 32776 AND 32999;
|
||||
@@global.sort_buffer_size BETWEEN 32776 AND 32999
|
||||
1
|
||||
SET @@global.sort_buffer_size = 32777;
|
||||
SELECT @@global.sort_buffer_size >= 32776 AND @@global.sort_buffer_size < 33000;
|
||||
@@global.sort_buffer_size >= 32776 AND @@global.sort_buffer_size < 33000
|
||||
SELECT @@global.sort_buffer_size BETWEEN 32776 AND 32999;
|
||||
@@global.sort_buffer_size BETWEEN 32776 AND 32999
|
||||
1
|
||||
SET @@global.sort_buffer_size = 4294967295;
|
||||
SELECT @@global.sort_buffer_size;
|
||||
|
@ -39,12 +39,12 @@ SELECT @@global.sort_buffer_size;
|
|||
4294967294
|
||||
'#--------------------FN_DYNVARS_151_04-------------------------#'
|
||||
SET @@session.sort_buffer_size = 32776;
|
||||
SELECT @@session.sort_buffer_size >= 32776 AND @@session.sort_buffer_size < 33000;
|
||||
@@session.sort_buffer_size >= 32776 AND @@session.sort_buffer_size < 33000
|
||||
SELECT @@session.sort_buffer_size BETWEEN 32776 AND 32999;
|
||||
@@session.sort_buffer_size BETWEEN 32776 AND 32999
|
||||
1
|
||||
SET @@session.sort_buffer_size = 32777;
|
||||
SELECT @@session.sort_buffer_size >= 32776 AND @@session.sort_buffer_size < 33000;
|
||||
@@session.sort_buffer_size >= 32776 AND @@session.sort_buffer_size < 33000
|
||||
SELECT @@session.sort_buffer_size BETWEEN 32776 AND 32999;
|
||||
@@session.sort_buffer_size BETWEEN 32776 AND 32999
|
||||
1
|
||||
SET @@session.sort_buffer_size = 4294967295;
|
||||
SELECT @@session.sort_buffer_size;
|
||||
|
@ -56,12 +56,12 @@ SELECT @@session.sort_buffer_size;
|
|||
4294967294
|
||||
'#------------------FN_DYNVARS_151_05-----------------------#'
|
||||
SET @@global.sort_buffer_size = 32775;
|
||||
SELECT @@global.sort_buffer_size >= 32776 AND @@global.sort_buffer_size < 33000;
|
||||
@@global.sort_buffer_size >= 32776 AND @@global.sort_buffer_size < 33000
|
||||
SELECT @@global.sort_buffer_size BETWEEN 32776 AND 32999;
|
||||
@@global.sort_buffer_size BETWEEN 32776 AND 32999
|
||||
1
|
||||
SET @@global.sort_buffer_size = -1024;
|
||||
SELECT @@global.sort_buffer_size >= 32776 AND @@global.sort_buffer_size < 33000;
|
||||
@@global.sort_buffer_size >= 32776 AND @@global.sort_buffer_size < 33000
|
||||
SELECT @@global.sort_buffer_size BETWEEN 32776 AND 32999;
|
||||
@@global.sort_buffer_size BETWEEN 32776 AND 32999
|
||||
1
|
||||
SET @@global.sort_buffer_size = 4294967296;
|
||||
SELECT @@global.sort_buffer_size;
|
||||
|
@ -78,12 +78,12 @@ SELECT @@global.sort_buffer_size;
|
|||
@@global.sort_buffer_size
|
||||
4294967296
|
||||
SET @@session.sort_buffer_size = 32775;
|
||||
SELECT @@session.sort_buffer_size >= 32776 AND @@session.sort_buffer_size < 33000;
|
||||
@@session.sort_buffer_size >= 32776 AND @@session.sort_buffer_size < 33000
|
||||
SELECT @@session.sort_buffer_size BETWEEN 32776 AND 32999;
|
||||
@@session.sort_buffer_size BETWEEN 32776 AND 32999
|
||||
1
|
||||
SET @@session.sort_buffer_size = -2;
|
||||
SELECT @@session.sort_buffer_size >= 32776 AND @@session.sort_buffer_size < 33000;
|
||||
@@session.sort_buffer_size >= 32776 AND @@session.sort_buffer_size < 33000
|
||||
SELECT @@session.sort_buffer_size BETWEEN 32776 AND 32999;
|
||||
@@session.sort_buffer_size BETWEEN 32776 AND 32999
|
||||
1
|
||||
SET @@session.sort_buffer_size = 65530.34.;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1
|
||||
|
@ -105,12 +105,12 @@ INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='sort_buffer_size';
|
|||
1
|
||||
'#------------------FN_DYNVARS_151_08-----------------------#'
|
||||
SET @@global.sort_buffer_size = TRUE;
|
||||
SELECT @@global.sort_buffer_size >= 32776 AND @@global.sort_buffer_size < 33000;
|
||||
@@global.sort_buffer_size >= 32776 AND @@global.sort_buffer_size < 33000
|
||||
SELECT @@global.sort_buffer_size BETWEEN 32776 AND 32999;
|
||||
@@global.sort_buffer_size BETWEEN 32776 AND 32999
|
||||
1
|
||||
SET @@global.sort_buffer_size = FALSE;
|
||||
SELECT @@global.sort_buffer_size >= 32776 AND @@global.sort_buffer_size < 33000;
|
||||
@@global.sort_buffer_size >= 32776 AND @@global.sort_buffer_size < 33000
|
||||
SELECT @@global.sort_buffer_size BETWEEN 32776 AND 32999;
|
||||
@@global.sort_buffer_size BETWEEN 32776 AND 32999
|
||||
1
|
||||
'#---------------------FN_DYNVARS_151_09----------------------#'
|
||||
SET @@global.sort_buffer_size = 9000;
|
||||
|
@ -127,8 +127,8 @@ SELECT @@local.sort_buffer_size = @@session.sort_buffer_size;
|
|||
1
|
||||
'#---------------------FN_DYNVARS_151_11----------------------#'
|
||||
SET sort_buffer_size = 9100;
|
||||
SELECT @@sort_buffer_size >= 32776 AND @@sort_buffer_size < 33000;
|
||||
@@sort_buffer_size >= 32776 AND @@sort_buffer_size < 33000
|
||||
SELECT @@sort_buffer_size BETWEEN 32776 AND 32999;
|
||||
@@sort_buffer_size BETWEEN 32776 AND 32999
|
||||
1
|
||||
SELECT local.sort_buffer_size;
|
||||
ERROR 42S02: Unknown table 'local' in field list
|
||||
|
|
|
@ -91,4 +91,97 @@ INSERT INTO foo2 SELECT * FROM foo;
|
|||
|
||||
DROP TABLE foo, bar, foo2;
|
||||
|
||||
#
|
||||
# Bug#41348: INSERT INTO tbl SELECT * FROM temp_tbl overwrites locking type of temp table
|
||||
#
|
||||
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS t1,t3,t2;
|
||||
DROP FUNCTION IF EXISTS f1;
|
||||
--enable_warnings
|
||||
|
||||
DELIMITER |;
|
||||
CREATE FUNCTION f1() RETURNS VARCHAR(250)
|
||||
BEGIN
|
||||
return 'hhhhhhh' ;
|
||||
END|
|
||||
DELIMITER ;|
|
||||
|
||||
CREATE TABLE t1 (a VARCHAR(20), b VARCHAR(20), c VARCHAR(20)) ENGINE=INNODB;
|
||||
|
||||
BEGIN WORK;
|
||||
|
||||
CREATE TEMPORARY TABLE t2 (a VARCHAR(20), b VARCHAR(20), c varchar(20)) ENGINE=INNODB;
|
||||
CREATE TEMPORARY TABLE t3 LIKE t2;
|
||||
|
||||
INSERT INTO t1 VALUES ('a','b',NULL),('c','d',NULL),('e','f',NULL);
|
||||
|
||||
SET @stmt := CONCAT('INSERT INTO t2 SELECT tbl.a, tbl.b, f1()',' FROM t1 tbl');
|
||||
PREPARE stmt1 FROM @stmt;
|
||||
|
||||
SET @stmt := CONCAT('INSERT INTO t3', ' SELECT * FROM t2');
|
||||
PREPARE stmt3 FROM @stmt;
|
||||
|
||||
EXECUTE stmt1;
|
||||
|
||||
COMMIT;
|
||||
|
||||
DEALLOCATE PREPARE stmt1;
|
||||
DEALLOCATE PREPARE stmt3;
|
||||
|
||||
DROP TABLE t1,t3,t2;
|
||||
DROP FUNCTION f1;
|
||||
|
||||
#
|
||||
# Bug#37016: TRUNCATE TABLE removes some rows but not all
|
||||
#
|
||||
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS t1,t2;
|
||||
--enable_warnings
|
||||
|
||||
CREATE TABLE t1 (id INT NOT NULL, PRIMARY KEY (id)) ENGINE=INNODB;
|
||||
CREATE TABLE t2 (id INT PRIMARY KEY,
|
||||
t1_id INT, INDEX par_ind (t1_id),
|
||||
FOREIGN KEY (t1_id) REFERENCES t1(id)) ENGINE=INNODB;
|
||||
INSERT INTO t1 VALUES (1),(2);
|
||||
INSERT INTO t2 VALUES (3,2);
|
||||
|
||||
SET AUTOCOMMIT = 0;
|
||||
|
||||
START TRANSACTION;
|
||||
--error ER_ROW_IS_REFERENCED_2
|
||||
TRUNCATE TABLE t1;
|
||||
SELECT * FROM t1;
|
||||
COMMIT;
|
||||
SELECT * FROM t1;
|
||||
|
||||
START TRANSACTION;
|
||||
--error ER_ROW_IS_REFERENCED_2
|
||||
TRUNCATE TABLE t1;
|
||||
SELECT * FROM t1;
|
||||
ROLLBACK;
|
||||
SELECT * FROM t1;
|
||||
|
||||
SET AUTOCOMMIT = 1;
|
||||
|
||||
START TRANSACTION;
|
||||
SELECT * FROM t1;
|
||||
COMMIT;
|
||||
|
||||
--error ER_ROW_IS_REFERENCED_2
|
||||
TRUNCATE TABLE t1;
|
||||
SELECT * FROM t1;
|
||||
DELETE FROM t2 WHERE id = 3;
|
||||
|
||||
START TRANSACTION;
|
||||
SELECT * FROM t1;
|
||||
TRUNCATE TABLE t1;
|
||||
ROLLBACK;
|
||||
SELECT * FROM t1;
|
||||
TRUNCATE TABLE t2;
|
||||
|
||||
DROP TABLE t2;
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo End of 5.1 tests
|
||||
|
|
|
@ -8,6 +8,22 @@
|
|||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||
--enable_warnings
|
||||
|
||||
#
|
||||
# Bug#40972: some sql execution lead the whole database crashing
|
||||
#
|
||||
# Setup so the start is at partition pX and end is at p1
|
||||
# Pruning does handle 'bad' dates differently.
|
||||
CREATE TABLE t1
|
||||
(a INT NOT NULL AUTO_INCREMENT,
|
||||
b DATETIME,
|
||||
PRIMARY KEY (a,b),
|
||||
KEY (b))
|
||||
PARTITION BY RANGE (to_days(b))
|
||||
(PARTITION p0 VALUES LESS THAN (733681) COMMENT = 'LESS THAN 2008-10-01',
|
||||
PARTITION p1 VALUES LESS THAN (733712) COMMENT = 'LESS THAN 2008-11-01',
|
||||
PARTITION pX VALUES LESS THAN MAXVALUE);
|
||||
SELECT a,b FROM t1 WHERE b >= '2008-12-01' AND b < '2009-12-00';
|
||||
DROP TABLE t1;
|
||||
|
||||
# Check if we can infer from condition on partition fields that
|
||||
# no records will match.
|
||||
|
|
|
@ -204,4 +204,35 @@ DELETE FROM t1;
|
|||
SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Bug#41348: INSERT INTO tbl SELECT * FROM temp_tbl overwrites locking type of temp table
|
||||
#
|
||||
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS t1,t2;
|
||||
DROP FUNCTION IF EXISTS f1;
|
||||
--enable_warnings
|
||||
|
||||
CREATE TEMPORARY TABLE t1 (a INT);
|
||||
CREATE TEMPORARY TABLE t2 LIKE t1;
|
||||
|
||||
DELIMITER |;
|
||||
CREATE FUNCTION f1() RETURNS INT
|
||||
BEGIN
|
||||
return 1;
|
||||
END|
|
||||
DELIMITER ;|
|
||||
|
||||
INSERT INTO t2 SELECT * FROM t1;
|
||||
INSERT INTO t1 SELECT f1();
|
||||
|
||||
CREATE TABLE t3 SELECT * FROM t1;
|
||||
INSERT INTO t1 SELECT f1();
|
||||
|
||||
UPDATE t1,t2 SET t1.a = t2.a;
|
||||
INSERT INTO t2 SELECT f1();
|
||||
|
||||
DROP TABLE t1,t2,t3;
|
||||
DROP FUNCTION f1;
|
||||
|
||||
--echo End of 5.1 tests
|
||||
|
|
|
@ -4815,7 +4815,7 @@ int ha_partition::info(uint flag)
|
|||
/*
|
||||
Calculates statistical variables
|
||||
records: Estimate of number records in table
|
||||
We report sum (always at least 2)
|
||||
We report sum (always at least 2 if not empty)
|
||||
deleted: Estimate of number holes in the table due to
|
||||
deletes
|
||||
We report sum
|
||||
|
@ -4854,13 +4854,13 @@ int ha_partition::info(uint flag)
|
|||
stats.check_time= file->stats.check_time;
|
||||
}
|
||||
} while (*(++file_array));
|
||||
if (stats.records < 2 &&
|
||||
if (stats.records && stats.records < 2 &&
|
||||
!(m_file[0]->ha_table_flags() & HA_STATS_RECORDS_IS_EXACT))
|
||||
stats.records= 2;
|
||||
if (stats.records > 0)
|
||||
stats.mean_rec_length= (ulong) (stats.data_file_length / stats.records);
|
||||
else
|
||||
stats.mean_rec_length= 1; //? What should we set here
|
||||
stats.mean_rec_length= 0;
|
||||
}
|
||||
if (flag & HA_STATUS_CONST)
|
||||
{
|
||||
|
|
|
@ -3425,7 +3425,8 @@ Format_description_log_event(uint8 binlog_ver, const char* server_ver)
|
|||
number_of_event_types= LOG_EVENT_TYPES;
|
||||
/* we'll catch my_malloc() error in is_valid() */
|
||||
post_header_len=(uint8*) my_malloc(number_of_event_types*sizeof(uint8),
|
||||
MYF(MY_ZEROFILL));
|
||||
MYF(0));
|
||||
|
||||
/*
|
||||
This long list of assignments is not beautiful, but I see no way to
|
||||
make it nicer, as the right members are #defines, not array members, so
|
||||
|
@ -3433,16 +3434,40 @@ Format_description_log_event(uint8 binlog_ver, const char* server_ver)
|
|||
*/
|
||||
if (post_header_len)
|
||||
{
|
||||
// Allows us to sanity-check that all events initialized their
|
||||
// events (see the end of this 'if' block).
|
||||
IF_DBUG(memset(post_header_len, 255,
|
||||
number_of_event_types*sizeof(uint8)););
|
||||
|
||||
/* Note: all event types must explicitly fill in their lengths here. */
|
||||
post_header_len[START_EVENT_V3-1]= START_V3_HEADER_LEN;
|
||||
post_header_len[QUERY_EVENT-1]= QUERY_HEADER_LEN;
|
||||
post_header_len[STOP_EVENT-1]= STOP_HEADER_LEN;
|
||||
post_header_len[ROTATE_EVENT-1]= ROTATE_HEADER_LEN;
|
||||
post_header_len[INTVAR_EVENT-1]= INTVAR_HEADER_LEN;
|
||||
post_header_len[LOAD_EVENT-1]= LOAD_HEADER_LEN;
|
||||
post_header_len[SLAVE_EVENT-1]= SLAVE_HEADER_LEN;
|
||||
post_header_len[CREATE_FILE_EVENT-1]= CREATE_FILE_HEADER_LEN;
|
||||
post_header_len[APPEND_BLOCK_EVENT-1]= APPEND_BLOCK_HEADER_LEN;
|
||||
post_header_len[EXEC_LOAD_EVENT-1]= EXEC_LOAD_HEADER_LEN;
|
||||
post_header_len[DELETE_FILE_EVENT-1]= DELETE_FILE_HEADER_LEN;
|
||||
post_header_len[NEW_LOAD_EVENT-1]= post_header_len[LOAD_EVENT-1];
|
||||
post_header_len[NEW_LOAD_EVENT-1]= NEW_LOAD_HEADER_LEN;
|
||||
post_header_len[RAND_EVENT-1]= RAND_HEADER_LEN;
|
||||
post_header_len[USER_VAR_EVENT-1]= USER_VAR_HEADER_LEN;
|
||||
post_header_len[FORMAT_DESCRIPTION_EVENT-1]= FORMAT_DESCRIPTION_HEADER_LEN;
|
||||
post_header_len[XID_EVENT-1]= XID_HEADER_LEN;
|
||||
post_header_len[BEGIN_LOAD_QUERY_EVENT-1]= BEGIN_LOAD_QUERY_HEADER_LEN;
|
||||
post_header_len[EXECUTE_LOAD_QUERY_EVENT-1]= EXECUTE_LOAD_QUERY_HEADER_LEN;
|
||||
/*
|
||||
The PRE_GA events are never be written to any binlog, but
|
||||
their lengths are included in Format_description_log_event.
|
||||
Hence, we need to be assign some value here, to avoid reading
|
||||
uninitialized memory when the array is written to disk.
|
||||
*/
|
||||
post_header_len[PRE_GA_WRITE_ROWS_EVENT-1] = 0;
|
||||
post_header_len[PRE_GA_UPDATE_ROWS_EVENT-1] = 0;
|
||||
post_header_len[PRE_GA_DELETE_ROWS_EVENT-1] = 0;
|
||||
|
||||
post_header_len[TABLE_MAP_EVENT-1]= TABLE_MAP_HEADER_LEN;
|
||||
post_header_len[WRITE_ROWS_EVENT-1]= ROWS_HEADER_LEN;
|
||||
post_header_len[UPDATE_ROWS_EVENT-1]= ROWS_HEADER_LEN;
|
||||
|
@ -3462,9 +3487,14 @@ Format_description_log_event(uint8 binlog_ver, const char* server_ver)
|
|||
post_header_len[WRITE_ROWS_EVENT-1]=
|
||||
post_header_len[UPDATE_ROWS_EVENT-1]=
|
||||
post_header_len[DELETE_ROWS_EVENT-1]= 6;);
|
||||
post_header_len[BEGIN_LOAD_QUERY_EVENT-1]= post_header_len[APPEND_BLOCK_EVENT-1];
|
||||
post_header_len[EXECUTE_LOAD_QUERY_EVENT-1]= EXECUTE_LOAD_QUERY_HEADER_LEN;
|
||||
post_header_len[INCIDENT_EVENT-1]= INCIDENT_HEADER_LEN;
|
||||
|
||||
// Sanity-check that all post header lengths are initialized.
|
||||
IF_DBUG({
|
||||
int i;
|
||||
for (i=0; i<number_of_event_types; i++)
|
||||
assert(post_header_len[i] != 255);
|
||||
});
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -4813,7 +4843,9 @@ Intvar_log_event::Intvar_log_event(const char* buf,
|
|||
const Format_description_log_event* description_event)
|
||||
:Log_event(buf, description_event)
|
||||
{
|
||||
buf+= description_event->common_header_len;
|
||||
/* The Post-Header is empty. The Varible Data part begins immediately. */
|
||||
buf+= description_event->common_header_len +
|
||||
description_event->post_header_len[INTVAR_EVENT-1];
|
||||
type= buf[I_TYPE_OFFSET];
|
||||
val= uint8korr(buf+I_VAL_OFFSET);
|
||||
}
|
||||
|
@ -4957,7 +4989,9 @@ Rand_log_event::Rand_log_event(const char* buf,
|
|||
const Format_description_log_event* description_event)
|
||||
:Log_event(buf, description_event)
|
||||
{
|
||||
buf+= description_event->common_header_len;
|
||||
/* The Post-Header is empty. The Variable Data part begins immediately. */
|
||||
buf+= description_event->common_header_len +
|
||||
description_event->post_header_len[RAND_EVENT-1];
|
||||
seed1= uint8korr(buf+RAND_SEED1_OFFSET);
|
||||
seed2= uint8korr(buf+RAND_SEED2_OFFSET);
|
||||
}
|
||||
|
@ -5061,7 +5095,9 @@ Xid_log_event(const char* buf,
|
|||
const Format_description_log_event *description_event)
|
||||
:Log_event(buf, description_event)
|
||||
{
|
||||
buf+= description_event->common_header_len;
|
||||
/* The Post-Header is empty. The Variable Data part begins immediately. */
|
||||
buf+= description_event->common_header_len +
|
||||
description_event->post_header_len[XID_EVENT-1];
|
||||
memcpy((char*) &xid, buf, sizeof(xid));
|
||||
}
|
||||
|
||||
|
@ -5207,7 +5243,9 @@ User_var_log_event(const char* buf,
|
|||
const Format_description_log_event* description_event)
|
||||
:Log_event(buf, description_event)
|
||||
{
|
||||
buf+= description_event->common_header_len;
|
||||
/* The Post-Header is empty. The Variable Data part begins immediately. */
|
||||
buf+= description_event->common_header_len +
|
||||
description_event->post_header_len[USER_VAR_EVENT-1];
|
||||
name_len= uint4korr(buf);
|
||||
name= (char *) buf + UV_NAME_LEN_SIZE;
|
||||
buf+= UV_NAME_LEN_SIZE + name_len;
|
||||
|
|
|
@ -227,14 +227,22 @@ struct sql_ex_info
|
|||
#define QUERY_HEADER_MINIMAL_LEN (4 + 4 + 1 + 2)
|
||||
// where 5.0 differs: 2 for len of N-bytes vars.
|
||||
#define QUERY_HEADER_LEN (QUERY_HEADER_MINIMAL_LEN + 2)
|
||||
#define STOP_HEADER_LEN 0
|
||||
#define LOAD_HEADER_LEN (4 + 4 + 4 + 1 +1 + 4)
|
||||
#define SLAVE_HEADER_LEN 0
|
||||
#define START_V3_HEADER_LEN (2 + ST_SERVER_VER_LEN + 4)
|
||||
#define ROTATE_HEADER_LEN 8 // this is FROZEN (the Rotate post-header is frozen)
|
||||
#define INTVAR_HEADER_LEN 0
|
||||
#define CREATE_FILE_HEADER_LEN 4
|
||||
#define APPEND_BLOCK_HEADER_LEN 4
|
||||
#define EXEC_LOAD_HEADER_LEN 4
|
||||
#define DELETE_FILE_HEADER_LEN 4
|
||||
#define NEW_LOAD_HEADER_LEN LOAD_HEADER_LEN
|
||||
#define RAND_HEADER_LEN 0
|
||||
#define USER_VAR_HEADER_LEN 0
|
||||
#define FORMAT_DESCRIPTION_HEADER_LEN (START_V3_HEADER_LEN+1+LOG_EVENT_TYPES)
|
||||
#define XID_HEADER_LEN 0
|
||||
#define BEGIN_LOAD_QUERY_HEADER_LEN APPEND_BLOCK_HEADER_LEN
|
||||
#define ROWS_HEADER_LEN 8
|
||||
#define TABLE_MAP_HEADER_LEN 8
|
||||
#define EXECUTE_LOAD_QUERY_EXTRA_HEADER_LEN (4 + 4 + 4 + 1)
|
||||
|
@ -319,18 +327,16 @@ struct sql_ex_info
|
|||
#define Q_CHARSET_DATABASE_CODE 8
|
||||
|
||||
#define Q_TABLE_MAP_FOR_UPDATE_CODE 9
|
||||
/* Intvar event post-header */
|
||||
|
||||
/* Intvar event data */
|
||||
#define I_TYPE_OFFSET 0
|
||||
#define I_VAL_OFFSET 1
|
||||
|
||||
/* Rand event post-header */
|
||||
|
||||
/* Rand event data */
|
||||
#define RAND_SEED1_OFFSET 0
|
||||
#define RAND_SEED2_OFFSET 8
|
||||
|
||||
/* User_var event post-header */
|
||||
|
||||
/* User_var event data */
|
||||
#define UV_VAL_LEN_SIZE 4
|
||||
#define UV_VAL_IS_NULL 1
|
||||
#define UV_VAL_TYPE_SIZE 1
|
||||
|
@ -338,7 +344,6 @@ struct sql_ex_info
|
|||
#define UV_CHARSET_NUMBER_SIZE 4
|
||||
|
||||
/* Load event post-header */
|
||||
|
||||
#define L_THREAD_ID_OFFSET 0
|
||||
#define L_EXEC_TIME_OFFSET 4
|
||||
#define L_SKIP_LINES_OFFSET 8
|
||||
|
@ -349,7 +354,6 @@ struct sql_ex_info
|
|||
#define L_DATA_OFFSET LOAD_HEADER_LEN
|
||||
|
||||
/* Rotate event post-header */
|
||||
|
||||
#define R_POS_OFFSET 0
|
||||
#define R_IDENT_OFFSET 8
|
||||
|
||||
|
@ -2206,10 +2210,11 @@ protected:
|
|||
|
||||
@section Intvar_log_event_binary_format Binary Format
|
||||
|
||||
The Post-Header has two components:
|
||||
The Post-Header for this event type is empty. The Body has two
|
||||
components:
|
||||
|
||||
<table>
|
||||
<caption>Post-Header for Intvar_log_event</caption>
|
||||
<caption>Body for Intvar_log_event</caption>
|
||||
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
|
@ -2283,11 +2288,12 @@ private:
|
|||
which are stored internally as two 64-bit numbers.
|
||||
|
||||
@section Rand_log_event_binary_format Binary Format
|
||||
This event type has no Post-Header. The Body of this event type has
|
||||
two components:
|
||||
|
||||
The Post-Header for this event type is empty. The Body has two
|
||||
components:
|
||||
|
||||
<table>
|
||||
<caption>Post-Header for Intvar_log_event</caption>
|
||||
<caption>Body for Rand_log_event</caption>
|
||||
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
|
|
|
@ -644,6 +644,16 @@ err:
|
|||
}
|
||||
#endif
|
||||
|
||||
|
||||
/**
|
||||
Execute a SHOW SLAVE HOSTS statement.
|
||||
|
||||
@param thd Pointer to THD object for the client thread executing the
|
||||
statement.
|
||||
|
||||
@retval FALSE success
|
||||
@retval TRUE failure
|
||||
*/
|
||||
bool show_slave_hosts(THD* thd)
|
||||
{
|
||||
List<Item> field_list;
|
||||
|
|
|
@ -1527,14 +1527,14 @@ bool sys_var_thd_ulong::update(THD *thd, set_var *var)
|
|||
ulonglong tmp= var->save_result.ulonglong_value;
|
||||
|
||||
/* Don't use bigger value than given with --maximum-variable-name=.. */
|
||||
if ((ulong) tmp > max_system_variables.*offset)
|
||||
if (tmp > max_system_variables.*offset)
|
||||
{
|
||||
throw_bounds_warning(thd, TRUE, TRUE, name, (longlong) tmp);
|
||||
tmp= max_system_variables.*offset;
|
||||
}
|
||||
|
||||
if (option_limits)
|
||||
tmp= (ulong) fix_unsigned(thd, tmp, option_limits);
|
||||
tmp= fix_unsigned(thd, tmp, option_limits);
|
||||
#if SIZEOF_LONG < SIZEOF_LONG_LONG
|
||||
else if (tmp > ULONG_MAX)
|
||||
{
|
||||
|
@ -1543,6 +1543,7 @@ bool sys_var_thd_ulong::update(THD *thd, set_var *var)
|
|||
}
|
||||
#endif
|
||||
|
||||
DBUG_ASSERT(tmp <= ULONG_MAX);
|
||||
if (var->type == OPT_GLOBAL)
|
||||
global_system_variables.*offset= (ulong) tmp;
|
||||
else
|
||||
|
|
39
sql/slave.cc
39
sql/slave.cc
|
@ -1357,6 +1357,17 @@ int register_slave_on_master(MYSQL* mysql, Master_info *mi,
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
Execute a SHOW SLAVE STATUS statement.
|
||||
|
||||
@param thd Pointer to THD object for the client thread executing the
|
||||
statement.
|
||||
|
||||
@param mi Pointer to Master_info object for the IO thread.
|
||||
|
||||
@retval FALSE success
|
||||
@retval TRUE failure
|
||||
*/
|
||||
bool show_master_info(THD* thd, Master_info* mi)
|
||||
{
|
||||
// TODO: fix this for multi-master
|
||||
|
@ -2062,7 +2073,7 @@ int apply_event_and_update_pos(Log_event* ev, THD* thd, Relay_log_info* rli,
|
|||
fewer times, 0 is returned.
|
||||
|
||||
- init_master_info or init_relay_log_pos failed. (These are called
|
||||
if a failure occurs when applying the event.)</li>
|
||||
if a failure occurs when applying the event.)
|
||||
|
||||
- An error occurred when updating the binlog position.
|
||||
|
||||
|
@ -2307,8 +2318,14 @@ static int try_to_reconnect(THD *thd, MYSQL *mysql, Master_info *mi,
|
|||
}
|
||||
|
||||
|
||||
/* Slave I/O Thread entry point */
|
||||
/**
|
||||
Slave IO thread entry point.
|
||||
|
||||
@param arg Pointer to Master_info struct that holds information for
|
||||
the IO thread.
|
||||
|
||||
@return Always 0.
|
||||
*/
|
||||
pthread_handler_t handle_slave_io(void *arg)
|
||||
{
|
||||
THD *thd; // needs to be first for thread_stack
|
||||
|
@ -2616,8 +2633,14 @@ err:
|
|||
}
|
||||
|
||||
|
||||
/* Slave SQL Thread entry point */
|
||||
/**
|
||||
Slave SQL thread entry point.
|
||||
|
||||
@param arg Pointer to Relay_log_info object that holds information
|
||||
for the SQL thread.
|
||||
|
||||
@return Always 0.
|
||||
*/
|
||||
pthread_handler_t handle_slave_sql(void *arg)
|
||||
{
|
||||
THD *thd; /* needs to be first for thread_stack */
|
||||
|
@ -3710,6 +3733,16 @@ static IO_CACHE *reopen_relay_log(Relay_log_info *rli, const char **errmsg)
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
Reads next event from the relay log. Should be called from the
|
||||
slave IO thread.
|
||||
|
||||
@param rli Relay_log_info structure for the slave IO thread.
|
||||
|
||||
@return The event read, or NULL on error. If an error occurs, the
|
||||
error is reported through the sql_print_information() or
|
||||
sql_print_error() functions.
|
||||
*/
|
||||
static Log_event* next_event(Relay_log_info* rli)
|
||||
{
|
||||
Log_event* ev;
|
||||
|
|
|
@ -1111,6 +1111,27 @@ static void mark_temp_tables_as_free_for_reuse(THD *thd)
|
|||
*/
|
||||
if (table->child_l || table->parent)
|
||||
detach_merge_children(table, TRUE);
|
||||
/*
|
||||
Reset temporary table lock type to it's default value (TL_WRITE).
|
||||
|
||||
Statements such as INSERT INTO .. SELECT FROM tmp, CREATE TABLE
|
||||
.. SELECT FROM tmp and UPDATE may under some circumstances modify
|
||||
the lock type of the tables participating in the statement. This
|
||||
isn't a problem for non-temporary tables since their lock type is
|
||||
reset at every open, but the same does not occur for temporary
|
||||
tables for historical reasons.
|
||||
|
||||
Furthermore, the lock type of temporary tables is not really that
|
||||
important because they can only be used by one query at a time and
|
||||
not even twice in a query -- a temporary table is represented by
|
||||
only one TABLE object. Nonetheless, it's safer from a maintenance
|
||||
point of view to reset the lock type of this singleton TABLE object
|
||||
as to not cause problems when the table is reused.
|
||||
|
||||
Even under LOCK TABLES mode its okay to reset the lock type as
|
||||
LOCK TABLES is allowed (but ignored) for a temporary table.
|
||||
*/
|
||||
table->reginfo.lock_type= TL_WRITE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -4681,7 +4702,7 @@ int open_tables(THD *thd, TABLE_LIST **start, uint *counter, uint flags)
|
|||
else if (tables->lock_type == TL_READ_DEFAULT)
|
||||
tables->table->reginfo.lock_type=
|
||||
read_lock_type_for_table(thd, tables->table);
|
||||
else if (tables->table->s->tmp_table == NO_TMP_TABLE)
|
||||
else
|
||||
tables->table->reginfo.lock_type= tables->lock_type;
|
||||
}
|
||||
tables->table->grant= tables->grant;
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
#include "base64.h"
|
||||
|
||||
/**
|
||||
Execute a BINLOG statement
|
||||
Execute a BINLOG statement.
|
||||
|
||||
To execute the BINLOG command properly the server needs to know
|
||||
which format the BINLOG command's event is in. Therefore, the first
|
||||
|
@ -26,6 +26,9 @@
|
|||
Format_description_log_event, as outputted by mysqlbinlog. This
|
||||
Format_description_log_event is cached in
|
||||
rli->description_event_for_exec.
|
||||
|
||||
@param thd Pointer to THD object for the client thread executing the
|
||||
statement.
|
||||
*/
|
||||
|
||||
void mysql_client_binlog_statement(THD* thd)
|
||||
|
|
|
@ -950,6 +950,26 @@ bool multi_delete::send_eof()
|
|||
TRUNCATE TABLE
|
||||
****************************************************************************/
|
||||
|
||||
/*
|
||||
Row-by-row truncation if the engine does not support table recreation.
|
||||
Probably a InnoDB table.
|
||||
*/
|
||||
|
||||
static bool mysql_truncate_by_delete(THD *thd, TABLE_LIST *table_list)
|
||||
{
|
||||
bool error, save_binlog_row_based= thd->current_stmt_binlog_row_based;
|
||||
DBUG_ENTER("mysql_truncate_by_delete");
|
||||
table_list->lock_type= TL_WRITE;
|
||||
mysql_init_select(thd->lex);
|
||||
thd->clear_current_stmt_binlog_row_based();
|
||||
error= mysql_delete(thd, table_list, NULL, NULL, HA_POS_ERROR, LL(0), TRUE);
|
||||
ha_autocommit_or_rollback(thd, error);
|
||||
end_trans(thd, error ? ROLLBACK : COMMIT);
|
||||
thd->current_stmt_binlog_row_based= save_binlog_row_based;
|
||||
DBUG_RETURN(error);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Optimize delete of all rows by doing a full generate of the table
|
||||
This will work even if the .ISM and .ISD tables are destroyed
|
||||
|
@ -1055,24 +1075,6 @@ end:
|
|||
DBUG_RETURN(error);
|
||||
|
||||
trunc_by_del:
|
||||
/* Probably InnoDB table */
|
||||
ulonglong save_options= thd->options;
|
||||
table_list->lock_type= TL_WRITE;
|
||||
thd->options&= ~(OPTION_BEGIN | OPTION_NOT_AUTOCOMMIT);
|
||||
ha_enable_transaction(thd, FALSE);
|
||||
mysql_init_select(thd->lex);
|
||||
bool save_binlog_row_based= thd->current_stmt_binlog_row_based;
|
||||
thd->clear_current_stmt_binlog_row_based();
|
||||
error= mysql_delete(thd, table_list, (COND*) 0, (SQL_LIST*) 0,
|
||||
HA_POS_ERROR, LL(0), TRUE);
|
||||
ha_enable_transaction(thd, TRUE);
|
||||
/*
|
||||
Safety, in case the engine ignored ha_enable_transaction(FALSE)
|
||||
above. Also clears thd->transaction.*.
|
||||
*/
|
||||
error= ha_autocommit_or_rollback(thd, error);
|
||||
ha_commit(thd);
|
||||
thd->options= save_options;
|
||||
thd->current_stmt_binlog_row_based= save_binlog_row_based;
|
||||
error= mysql_truncate_by_delete(thd, table_list);
|
||||
DBUG_RETURN(error);
|
||||
}
|
||||
|
|
|
@ -190,6 +190,15 @@ typedef struct st_lex_server_options
|
|||
char *server_name, *host, *db, *username, *password, *scheme, *socket, *owner;
|
||||
} LEX_SERVER_OPTIONS;
|
||||
|
||||
|
||||
/**
|
||||
Structure to hold parameters for CHANGE MASTER or START/STOP SLAVE
|
||||
or SHOW NEW MASTER.
|
||||
|
||||
Remark: this should not be confused with Master_info (and perhaps
|
||||
would better be renamed to st_lex_replication_info). Some fields,
|
||||
e.g., delay, are saved in Relay_log_info, not in Master_info.
|
||||
*/
|
||||
typedef struct st_lex_master_info
|
||||
{
|
||||
char *host, *user, *password, *log_file_name;
|
||||
|
|
|
@ -6760,7 +6760,7 @@ int get_part_iter_for_interval_via_mapping(partition_info *part_info,
|
|||
store_key_image_to_rec(field, max_value, field_len);
|
||||
bool include_endp= !test(flags & NEAR_MAX);
|
||||
part_iter->part_nums.end= get_endpoint(part_info, 0, include_endp);
|
||||
if (part_iter->part_nums.start == part_iter->part_nums.end &&
|
||||
if (part_iter->part_nums.start >= part_iter->part_nums.end &&
|
||||
!part_iter->ret_null_part)
|
||||
return 0; /* No partitions */
|
||||
}
|
||||
|
@ -6938,7 +6938,7 @@ int get_part_iter_for_interval_via_walking(partition_info *part_info,
|
|||
|
||||
uint32 get_next_partition_id_range(PARTITION_ITERATOR* part_iter)
|
||||
{
|
||||
if (part_iter->part_nums.cur == part_iter->part_nums.end)
|
||||
if (part_iter->part_nums.cur >= part_iter->part_nums.end)
|
||||
{
|
||||
part_iter->part_nums.cur= part_iter->part_nums.start;
|
||||
return NOT_A_PARTITION_ID;
|
||||
|
|
123
sql/sql_repl.cc
123
sql/sql_repl.cc
|
@ -257,6 +257,17 @@ bool purge_error_message(THD* thd, int res)
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
Execute a PURGE BINARY LOGS TO <log> command.
|
||||
|
||||
@param thd Pointer to THD object for the client thread executing the
|
||||
statement.
|
||||
|
||||
@param to_log Name of the last log to purge.
|
||||
|
||||
@retval FALSE success
|
||||
@retval TRUE failure
|
||||
*/
|
||||
bool purge_master_logs(THD* thd, const char* to_log)
|
||||
{
|
||||
char search_file_name[FN_REFLEN];
|
||||
|
@ -273,6 +284,17 @@ bool purge_master_logs(THD* thd, const char* to_log)
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
Execute a PURGE BINARY LOGS BEFORE <date> command.
|
||||
|
||||
@param thd Pointer to THD object for the client thread executing the
|
||||
statement.
|
||||
|
||||
@param purge_time Date before which logs should be purged.
|
||||
|
||||
@retval FALSE success
|
||||
@retval TRUE failure
|
||||
*/
|
||||
bool purge_master_logs_before_date(THD* thd, time_t purge_time)
|
||||
{
|
||||
if (!mysql_bin_log.is_open())
|
||||
|
@ -765,6 +787,20 @@ err:
|
|||
DBUG_VOID_RETURN;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Execute a START SLAVE statement.
|
||||
|
||||
@param thd Pointer to THD object for the client thread executing the
|
||||
statement.
|
||||
|
||||
@param mi Pointer to Master_info object for the slave's IO thread.
|
||||
|
||||
@param net_report If true, saves the exit status into thd->main_da.
|
||||
|
||||
@retval 0 success
|
||||
@retval 1 error
|
||||
*/
|
||||
int start_slave(THD* thd , Master_info* mi, bool net_report)
|
||||
{
|
||||
int slave_errno= 0;
|
||||
|
@ -890,6 +926,19 @@ int start_slave(THD* thd , Master_info* mi, bool net_report)
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
Execute a STOP SLAVE statement.
|
||||
|
||||
@param thd Pointer to THD object for the client thread executing the
|
||||
statement.
|
||||
|
||||
@param mi Pointer to Master_info object for the slave's IO thread.
|
||||
|
||||
@param net_report If true, saves the exit status into thd->main_da.
|
||||
|
||||
@retval 0 success
|
||||
@retval 1 error
|
||||
*/
|
||||
int stop_slave(THD* thd, Master_info* mi, bool net_report )
|
||||
{
|
||||
DBUG_ENTER("stop_slave");
|
||||
|
@ -942,20 +991,17 @@ int stop_slave(THD* thd, Master_info* mi, bool net_report )
|
|||
}
|
||||
|
||||
|
||||
/*
|
||||
Remove all relay logs and start replication from the start
|
||||
/**
|
||||
Execute a RESET SLAVE statement.
|
||||
|
||||
SYNOPSIS
|
||||
reset_slave()
|
||||
thd Thread handler
|
||||
mi Master info for the slave
|
||||
@param thd Pointer to THD object of the client thread executing the
|
||||
statement.
|
||||
|
||||
RETURN
|
||||
0 ok
|
||||
1 error
|
||||
@param mi Pointer to Master_info object for the slave.
|
||||
|
||||
@retval 0 success
|
||||
@retval 1 error
|
||||
*/
|
||||
|
||||
|
||||
int reset_slave(THD *thd, Master_info* mi)
|
||||
{
|
||||
MY_STAT stat_area;
|
||||
|
@ -1070,6 +1116,18 @@ void kill_zombie_dump_threads(uint32 slave_server_id)
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
Execute a CHANGE MASTER statement.
|
||||
|
||||
@param thd Pointer to THD object for the client thread executing the
|
||||
statement.
|
||||
|
||||
@param mi Pointer to Master_info object belonging to the slave's IO
|
||||
thread.
|
||||
|
||||
@retval FALSE success
|
||||
@retval TRUE error
|
||||
*/
|
||||
bool change_master(THD* thd, Master_info* mi)
|
||||
{
|
||||
int thread_mask;
|
||||
|
@ -1283,6 +1341,16 @@ bool change_master(THD* thd, Master_info* mi)
|
|||
DBUG_RETURN(FALSE);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Execute a RESET MASTER statement.
|
||||
|
||||
@param thd Pointer to THD object of the client thread executing the
|
||||
statement.
|
||||
|
||||
@retval 0 success
|
||||
@retval 1 error
|
||||
*/
|
||||
int reset_master(THD* thd)
|
||||
{
|
||||
if (!mysql_bin_log.is_open())
|
||||
|
@ -1312,6 +1380,15 @@ int cmp_master_pos(const char* log_file_name1, ulonglong log_pos1,
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
Execute a SHOW BINLOG EVENTS statement.
|
||||
|
||||
@param thd Pointer to THD object for the client thread executing the
|
||||
statement.
|
||||
|
||||
@retval FALSE success
|
||||
@retval TRUE failure
|
||||
*/
|
||||
bool mysql_show_binlog_events(THD* thd)
|
||||
{
|
||||
Protocol *protocol= thd->protocol;
|
||||
|
@ -1462,6 +1539,15 @@ err:
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
Execute a SHOW MASTER STATUS statement.
|
||||
|
||||
@param thd Pointer to THD object for the client thread executing the
|
||||
statement.
|
||||
|
||||
@retval FALSE success
|
||||
@retval TRUE failure
|
||||
*/
|
||||
bool show_binlog_info(THD* thd)
|
||||
{
|
||||
Protocol *protocol= thd->protocol;
|
||||
|
@ -1495,18 +1581,15 @@ bool show_binlog_info(THD* thd)
|
|||
}
|
||||
|
||||
|
||||
/*
|
||||
Send a list of all binary logs to client
|
||||
/**
|
||||
Execute a SHOW BINARY LOGS statement.
|
||||
|
||||
SYNOPSIS
|
||||
show_binlogs()
|
||||
thd Thread specific variable
|
||||
@param thd Pointer to THD object for the client thread executing the
|
||||
statement.
|
||||
|
||||
RETURN VALUES
|
||||
FALSE OK
|
||||
TRUE error
|
||||
@retval FALSE success
|
||||
@retval TRUE failure
|
||||
*/
|
||||
|
||||
bool show_binlogs(THD* thd)
|
||||
{
|
||||
IO_CACHE *index_file;
|
||||
|
|
Loading…
Add table
Reference in a new issue