Commit 5ffa5a45 authored by Alfranio Correia's avatar Alfranio Correia

merge mysql-5.5-bugteam(local) --> mysql-5.5-bugteam

parents 0b3f3e80 e5e71f88
......@@ -456,7 +456,8 @@ typedef struct st_io_cache /* Used when cacheing files */
IO_CACHE_CALLBACK pre_close;
/*
Counts the number of times, when we were forced to use disk. We use it to
increase the binlog_cache_disk_use status variable.
increase the binlog_cache_disk_use and binlog_stmt_cache_disk_use status
variables.
*/
ulong disk_writes;
void* arg; /* for use by pre/post_read */
......
This diff is collapsed.
# Embedded server doesn't support binlog
-- source include/not_embedded.inc
-- source include/have_innodb.inc
#
# Let us test binlog_cache_use and binlog_cache_disk_use status vars.
# 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";
--disable_warnings
drop table if exists t1;
--enable_warnings
create table t1 (a int) engine=innodb;
# Now we are going to create transaction which is long enough so its
# transaction binlog will be flushed to disk...
let $1=2000;
disable_query_log;
begin;
while ($1)
{
eval insert into t1 values( $1 );
dec $1;
}
commit;
enable_query_log;
show status like "binlog_cache_use";
show status like "binlog_cache_disk_use";
# Transaction which should not be flushed to disk and so should not
# increase binlog_cache_disk_use.
begin;
delete from t1;
commit;
show status like "binlog_cache_use";
show status like "binlog_cache_disk_use";
drop table t1;
......@@ -25,11 +25,13 @@ call mtr.add_suppression("Unsafe statement written to the binary log using state
let $old_max_binlog_cache_size= query_get_value(SHOW VARIABLES LIKE "max_binlog_cache_size", Value, 1);
let $old_binlog_cache_size= query_get_value(SHOW VARIABLES LIKE "binlog_cache_size", Value, 1);
let $old_max_binlog_stmt_cache_size= query_get_value(SHOW VARIABLES LIKE "max_binlog_stmt_cache_size", Value, 1);
let $old_binlog_stmt_cache_size= query_get_value(SHOW VARIABLES LIKE "binlog_stmt_cache_size", Value, 1);
SET GLOBAL max_binlog_cache_size = 4096;
# Becuase of bug#55377, we have to set binlog_cache_size until the bug is
# fixed.
SET GLOBAL binlog_cache_size = 4096;
SET GLOBAL max_binlog_stmt_cache_size = 4096;
SET GLOBAL binlog_stmt_cache_size = 4096;
disconnect master;
connect (master,127.0.0.1,root,,test,$MASTER_MYPORT,);
......@@ -47,14 +49,14 @@ connection master;
--echo *** Single statement on transactional table ***
--disable_query_log
--error ER_TRANS_CACHE_FULL, ER_ERROR_ON_WRITE
--error ER_TRANS_CACHE_FULL, ER_STMT_CACHE_FULL, ER_ERROR_ON_WRITE
eval INSERT INTO t1 (a, data) VALUES (1,
CONCAT($data, $data, $data, $data, $data));
--enable_query_log
--echo *** Single statement on non-transactional table ***
--disable_query_log
--error ER_TRANS_CACHE_FULL, ER_ERROR_ON_WRITE
--error ER_TRANS_CACHE_FULL, ER_STMT_CACHE_FULL, ER_ERROR_ON_WRITE
eval INSERT INTO t2 (a, data) VALUES (2,
CONCAT($data, $data, $data, $data, $data, $data));
--enable_query_log
......@@ -74,7 +76,7 @@ eval INSERT INTO t2 (a, data) VALUES (5, $data);
--echo *** Single statement on both transactional and non-transactional tables. ***
--disable_query_log
--error ER_TRANS_CACHE_FULL, ER_ERROR_ON_WRITE
--error ER_TRANS_CACHE_FULL, ER_STMT_CACHE_FULL, ER_ERROR_ON_WRITE
eval UPDATE t2, t1 SET t2.data = CONCAT($data, $data, $data, $data),
t1.data = CONCAT($data, $data, $data, $data);
--enable_query_log
......@@ -103,11 +105,11 @@ BEGIN;
--eval INSERT INTO t1 (a, data) VALUES (1, $data);
--eval INSERT INTO t1 (a, data) VALUES (2, $data);
--eval INSERT INTO t1 (a, data) VALUES (3, $data);
--error ER_TRANS_CACHE_FULL, ER_ERROR_ON_WRITE
--error ER_TRANS_CACHE_FULL, ER_STMT_CACHE_FULL, ER_ERROR_ON_WRITE
--eval INSERT INTO t1 (a, data) VALUES (4, $data);
--error ER_TRANS_CACHE_FULL, ER_ERROR_ON_WRITE
--error ER_TRANS_CACHE_FULL, ER_STMT_CACHE_FULL, ER_ERROR_ON_WRITE
--eval INSERT INTO t1 (a, data) VALUES (5, $data);
--error ER_TRANS_CACHE_FULL, ER_ERROR_ON_WRITE
--error ER_TRANS_CACHE_FULL, ER_STMT_CACHE_FULL, ER_ERROR_ON_WRITE
--eval INSERT INTO t1 (a, data) VALUES (6, $data);
--eval INSERT INTO t1 (a, data) VALUES (7, 's');
--eval INSERT INTO t2 (a, data) VALUES (8, 's');
......@@ -130,9 +132,9 @@ BEGIN;
--eval INSERT INTO t1 (a, data) VALUES (14, $data);
--eval INSERT INTO t1 (a, data) VALUES (15, $data);
--eval INSERT INTO t1 (a, data) VALUES (16, $data);
--error ER_TRANS_CACHE_FULL, ER_ERROR_ON_WRITE
--error ER_TRANS_CACHE_FULL, ER_STMT_CACHE_FULL, ER_ERROR_ON_WRITE
--eval INSERT INTO t1 (a, data) VALUES (17, $data);
--error ER_TRANS_CACHE_FULL, ER_ERROR_ON_WRITE
--error ER_TRANS_CACHE_FULL, ER_STMT_CACHE_FULL, ER_ERROR_ON_WRITE
--eval INSERT INTO t1 (a, data) VALUES (18, $data);
--eval INSERT INTO t1 (a, data) VALUES (19, 's');
--eval INSERT INTO t2 (a, data) VALUES (20, 's');
......@@ -148,7 +150,7 @@ if (`SELECT @@binlog_format = 'STATEMENT' || @@binlog_format = 'MIXED'`)
if (`SELECT @@binlog_format = 'ROW'`)
{
--disable_query_log
--error ER_TRANS_CACHE_FULL, ER_ERROR_ON_WRITE
--error ER_TRANS_CACHE_FULL, ER_STMT_CACHE_FULL, ER_ERROR_ON_WRITE
CREATE TABLE t4 SELECT * FROM t1;
--enable_query_log
}
......@@ -162,9 +164,9 @@ BEGIN;
--eval INSERT INTO t1 (a, data) VALUES (22, $data);
--eval INSERT INTO t1 (a, data) VALUES (23, $data);
--eval INSERT INTO t1 (a, data) VALUES (24, $data);
--error ER_TRANS_CACHE_FULL, ER_ERROR_ON_WRITE
--error ER_TRANS_CACHE_FULL, ER_STMT_CACHE_FULL, ER_ERROR_ON_WRITE
--eval INSERT INTO t1 (a, data) VALUES (25, $data);
--error ER_TRANS_CACHE_FULL, ER_ERROR_ON_WRITE
--error ER_TRANS_CACHE_FULL, ER_STMT_CACHE_FULL, ER_ERROR_ON_WRITE
--eval INSERT INTO t1 (a, data) VALUES (26, $data);
--eval INSERT INTO t1 (a, data) VALUES (27, 's');
--eval INSERT INTO t2 (a, data) VALUES (28, 's');
......@@ -192,11 +194,11 @@ BEGIN;
--eval INSERT INTO t1 (a, data) VALUES (1, $data);
--eval INSERT INTO t1 (a, data) VALUES (2, $data);
--eval INSERT INTO t1 (a, data) VALUES (3, $data);
--error ER_TRANS_CACHE_FULL, ER_ERROR_ON_WRITE
--error ER_TRANS_CACHE_FULL, ER_STMT_CACHE_FULL, ER_ERROR_ON_WRITE
--eval INSERT INTO t1 (a, data) VALUES (4, $data);
--error ER_TRANS_CACHE_FULL, ER_ERROR_ON_WRITE
--error ER_TRANS_CACHE_FULL, ER_STMT_CACHE_FULL, ER_ERROR_ON_WRITE
--eval INSERT INTO t1 (a, data) VALUES (5, $data);
--error ER_TRANS_CACHE_FULL, ER_ERROR_ON_WRITE
--error ER_TRANS_CACHE_FULL, ER_STMT_CACHE_FULL, ER_ERROR_ON_WRITE
--eval INSERT INTO t1 (a, data) VALUES (6, $data);
--eval INSERT INTO t1 (a, data) VALUES (7, 's');
--eval INSERT INTO t2 (a, data) VALUES (8, 's');
......@@ -221,11 +223,11 @@ BEGIN;
--eval INSERT INTO t1 (a, data) VALUES (1, $data);
--eval INSERT INTO t1 (a, data) VALUES (2, $data);
--eval INSERT INTO t1 (a, data) VALUES (3, $data);
--error ER_TRANS_CACHE_FULL, ER_ERROR_ON_WRITE
--error ER_TRANS_CACHE_FULL, ER_STMT_CACHE_FULL, ER_ERROR_ON_WRITE
--eval INSERT INTO t1 (a, data) VALUES (4, $data);
--error ER_TRANS_CACHE_FULL, ER_ERROR_ON_WRITE
--error ER_TRANS_CACHE_FULL, ER_STMT_CACHE_FULL, ER_ERROR_ON_WRITE
--eval INSERT INTO t1 (a, data) VALUES (5, $data);
--error ER_TRANS_CACHE_FULL, ER_ERROR_ON_WRITE
--error ER_TRANS_CACHE_FULL, ER_STMT_CACHE_FULL, ER_ERROR_ON_WRITE
--eval INSERT INTO t1 (a, data) VALUES (6, $data);
--eval INSERT INTO t1 (a, data) VALUES (7, 's');
--eval INSERT INTO t2 (a, data) VALUES (8, 's');
......@@ -268,7 +270,7 @@ TRUNCATE TABLE t1;
BEGIN;
--disable_query_log
--error ER_TRANS_CACHE_FULL, ER_ERROR_ON_WRITE
--error ER_TRANS_CACHE_FULL, ER_STMT_CACHE_FULL, ER_ERROR_ON_WRITE
eval CALL p1($data);
--enable_query_log
COMMIT;
......@@ -277,7 +279,7 @@ TRUNCATE TABLE t1;
BEGIN;
--disable_query_log
--error ER_TRANS_CACHE_FULL, ER_ERROR_ON_WRITE
--error ER_TRANS_CACHE_FULL, ER_STMT_CACHE_FULL, ER_ERROR_ON_WRITE
eval CALL p1($data);
--enable_query_log
ROLLBACK;
......@@ -299,12 +301,12 @@ BEGIN;
--eval INSERT INTO t1 (a, data) VALUES (1, $data);
--eval INSERT INTO t1 (a, data) VALUES (2, $data);
--eval INSERT INTO t1 (a, data) VALUES (3, $data);
--error ER_TRANS_CACHE_FULL, ER_ERROR_ON_WRITE
--error ER_TRANS_CACHE_FULL, ER_STMT_CACHE_FULL, ER_ERROR_ON_WRITE
--eval INSERT INTO t1 (a, data) VALUES (4, $data);
SAVEPOINT sv;
--error ER_TRANS_CACHE_FULL, ER_ERROR_ON_WRITE
--error ER_TRANS_CACHE_FULL, ER_STMT_CACHE_FULL, ER_ERROR_ON_WRITE
--eval INSERT INTO t1 (a, data) VALUES (5, $data);
--error ER_TRANS_CACHE_FULL, ER_ERROR_ON_WRITE
--error ER_TRANS_CACHE_FULL, ER_STMT_CACHE_FULL, ER_ERROR_ON_WRITE
--eval INSERT INTO t1 (a, data) VALUES (6, $data);
--eval INSERT INTO t1 (a, data) VALUES (7, 's');
--eval INSERT INTO t2 (a, data) VALUES (8, 's');
......@@ -331,11 +333,11 @@ BEGIN;
--eval INSERT INTO t1 (a, data) VALUES (2, $data);
--eval INSERT INTO t2 (a, data) VALUES (3, $data);
--eval INSERT INTO t1 (a, data) VALUES (4, $data);
--error ER_TRANS_CACHE_FULL, ER_ERROR_ON_WRITE
--error ER_TRANS_CACHE_FULL, ER_STMT_CACHE_FULL, ER_ERROR_ON_WRITE
--eval INSERT INTO t1 (a, data) VALUES (5, $data);
--error ER_TRANS_CACHE_FULL, ER_ERROR_ON_WRITE
--error ER_TRANS_CACHE_FULL, ER_STMT_CACHE_FULL, ER_ERROR_ON_WRITE
--eval INSERT INTO t1 (a, data) VALUES (6, $data);
--error ER_TRANS_CACHE_FULL, ER_ERROR_ON_WRITE
--error ER_TRANS_CACHE_FULL, ER_STMT_CACHE_FULL, ER_ERROR_ON_WRITE
--eval INSERT INTO t1 (a, data) VALUES (7, $data);
--eval UPDATE t2 SET data= CONCAT($data, $data);
--eval INSERT INTO t1 (a, data) VALUES (8, 's');
......@@ -351,7 +353,7 @@ BEGIN;
--eval INSERT INTO t1 (a, data) VALUES (16, $data);
--eval INSERT INTO t2 (a, data) VALUES (17, $data);
--eval INSERT INTO t1 (a, data) VALUES (18, $data);
--error ER_TRANS_CACHE_FULL, ER_ERROR_ON_WRITE
--error ER_TRANS_CACHE_FULL, ER_STMT_CACHE_FULL, ER_ERROR_ON_WRITE
--eval INSERT INTO t1 (a, data) VALUES (19, $data);
--enable_query_log
COMMIT;
......@@ -367,10 +369,13 @@ let $diff_statement= SELECT * FROM t1;
--echo # [ On Slave ]
SET GLOBAL max_binlog_cache_size = 4096;
SET GLOBAL binlog_cache_size = 4096;
SET GLOBAL max_binlog_stmt_cache_size = 4096;
SET GLOBAL binlog_stmt_cache_size = 4096;
source include/stop_slave.inc;
source include/start_slave.inc;
CALL mtr.add_suppression("Multi-statement transaction required more than 'max_binlog_cache_size' bytes of storage.*");
CALL mtr.add_suppression("Multi-statement transaction required more than 'max_binlog_stmt_cache_size' bytes of storage.*");
CALL mtr.add_suppression("Writing one row to the row-based binary log failed.*");
connection master;
......@@ -385,6 +390,10 @@ connection master;
--eval SET GLOBAL max_binlog_cache_size= $old_max_binlog_cache_size
--replace_result $old_binlog_cache_size ORIGINAL_VALUE
--eval SET GLOBAL binlog_cache_size= $old_binlog_cache_size
--replace_result $old_max_binlog_stmt_cache_size ORIGINAL_VALUE
--eval SET GLOBAL max_binlog_stmt_cache_size= $old_max_binlog_stmt_cache_size
--replace_result $old_binlog_stmt_cache_size ORIGINAL_VALUE
--eval SET GLOBAL binlog_stmt_cache_size= $old_binlog_stmt_cache_size
disconnect master;
connect (master,127.0.0.1,root,,test,$MASTER_MYPORT,);
......@@ -415,6 +424,10 @@ source include/show_binlog_events.inc;
--eval SET GLOBAL max_binlog_cache_size= $old_max_binlog_cache_size
--replace_result $old_binlog_cache_size ORIGINAL_VALUE
--eval SET GLOBAL binlog_cache_size= $old_binlog_cache_size
--replace_result $old_max_binlog_stmt_cache_size ORIGINAL_VALUE
--eval SET GLOBAL max_binlog_stmt_cache_size= $old_max_binlog_stmt_cache_size
--replace_result $old_binlog_stmt_cache_size ORIGINAL_VALUE
--eval SET GLOBAL binlog_stmt_cache_size= $old_binlog_stmt_cache_size
source include/stop_slave.inc;
source include/start_slave.inc;
......
......@@ -32,10 +32,10 @@ The following options may be given as the first argument:
file (Solves most 'table full' errors)
--bind-address=name IP address to bind to.
--binlog-cache-size=#
The size of the cache to hold the SQL statements for the
binary log during a transaction. If you often use big,
multi-statement transactions you can increase this to get
more performance
The size of the transactional cache for updates to
transactional engines for the binary log. If you often
use transactions containing many statements, you can
increase this to get more performance
--binlog-direct-non-transactional-updates
Causes updates to non-transactional engines using
statement format to be written directly to binary log.
......@@ -66,6 +66,11 @@ The following options may be given as the first argument:
The maximum size of a row-based binary log event in
bytes. Rows will be grouped into events smaller than this
size if possible. The value has to be a multiple of 256.
--binlog-stmt-cache-size=#
The size of the statement cache for updates to
non-transactional engines for the binary log. If you
often use statements updating a great number of rows, you
can increase this to get more performance
--bootstrap Used by mysql installation scripts.
--bulk-insert-buffer-size=#
Size of tree cache used in bulk insert optimisation. Note
......@@ -278,14 +283,15 @@ The following options may be given as the first argument:
--max-allowed-packet=#
Max packet length to send to or receive from the server
--max-binlog-cache-size=#
Can be used to restrict the total size used to cache a
multi-transaction query
Sets the total size of the transactional cache
--max-binlog-dump-events=#
Option used by mysql-test for debugging and testing of
replication.
--max-binlog-size=# Binary log will be rotated automatically when the size
exceeds this value. Will also apply to relay logs if
max_relay_log_size is 0
--max-binlog-stmt-cache-size=#
Sets the total size of the statement cache
--max-connect-errors=#
If there is more than this number of interrupted
connections from a host this host will be blocked from
......@@ -734,6 +740,7 @@ binlog-cache-size 32768
binlog-direct-non-transactional-updates FALSE
binlog-format STATEMENT
binlog-row-event-max-size 1024
binlog-stmt-cache-size 32768
bulk-insert-buffer-size 8388608
character-set-client-handshake TRUE
character-set-filesystem binary
......@@ -813,6 +820,7 @@ max-allowed-packet 1048576
max-binlog-cache-size 18446744073709547520
max-binlog-dump-events 0
max-binlog-size 1073741824
max-binlog-stmt-cache-size 18446744073709547520
max-connect-errors 10
max-connections 151
max-delayed-threads 20
......
......@@ -123,7 +123,7 @@ Binlog_cache_disk_use 0
create table t1 (a int) engine=innodb;
show status like "binlog_cache_use";
Variable_name Value
Binlog_cache_use 2
Binlog_cache_use 1
show status like "binlog_cache_disk_use";
Variable_name Value
Binlog_cache_disk_use 1
......@@ -132,7 +132,7 @@ delete from t1;
commit;
show status like "binlog_cache_use";
Variable_name Value
Binlog_cache_use 4
Binlog_cache_use 2
show status like "binlog_cache_disk_use";
Variable_name Value
Binlog_cache_disk_use 1
......
flush status;
show status like "binlog_cache_use";
Variable_name Value
Binlog_cache_use 0
show status like "binlog_cache_disk_use";
Variable_name Value
Binlog_cache_disk_use 0
drop table if exists t1;
create table t1 (a int) engine=innodb;
show status like "binlog_cache_use";
Variable_name Value
Binlog_cache_use 2
show status like "binlog_cache_disk_use";
Variable_name Value
Binlog_cache_disk_use 1
begin;
delete from t1;
commit;
show status like "binlog_cache_use";
Variable_name Value
Binlog_cache_use 4
show status like "binlog_cache_disk_use";
Variable_name Value
Binlog_cache_disk_use 1
drop table t1;
drop table if exists t1, t2;
create table t1 (a int) engine=innodb;
create table t2 (a int) engine=myisam;
**** Preparing the enviroment to check commit and its effect on status variables.
**** Expected: binlog_cache_use = 0, binlog_cache_disk_use = 0.
**** Expected: binlog_stmt_cache_use = 0, binlog_stmt_cache_disk_use = 0.
flush status;
**** Transactional changes which are long enough so they will be flushed to disk...
**** Expected: binlog_cache_use = 1, binlog_cache_disk_use = 1.
**** Expected: binlog_stmt_cache_use = 0, binlog_stmt_cache_disk_use = 0.
**** Transactional changes which should not be flushed to disk and so should not
**** increase either binlog_cache_disk_use or binlog_stmt_cache_disk_use.
**** Expected: binlog_cache_use = 2, binlog_cache_disk_use = 1.
**** Expected: binlog_stmt_cache_use = 0, binlog_stmt_cache_disk_use = 0.
begin;
insert into t1 values( 1 );
commit;
**** Non-Transactional changes which should not be flushed to disk and so should not
**** increase either binlog_cache_disk_use or binlog_stmt_cache_disk_use.
**** Expected: binlog_cache_use = 2, binlog_cache_disk_use = 1.
**** Expected: binlog_stmt_cache_use = 1, binlog_stmt_cache_disk_use = 0.
begin;
insert into t2 values( 1 );
commit;
**** Mixed changes which should not be flushed to disk and so should not
**** increase either binlog_cache_disk_use or binlog_stmt_cache_disk_use.
**** Expected: binlog_cache_use = 3, binlog_cache_disk_use = 1.
**** Expected: binlog_stmt_cache_use = 2, binlog_stmt_cache_disk_use = 0.
begin;
insert into t1 values( 1 );
insert into t2 values( 1 );
commit;
**** Preparing the enviroment to check abort and its effect on the status variables.
**** Expected: binlog_cache_use = 0, binlog_cache_disk_use = 0.
**** Expected: binlog_stmt_cache_use = 0, binlog_stmt_cache_disk_use = 0.
flush status;
**** Transactional changes which are long enough so they will be flushed to disk...
**** Expected: binlog_cache_use = 1, binlog_cache_disk_use = 1.
**** Expected: binlog_stmt_cache_use = 0, binlog_stmt_cache_disk_use = 0.
**** Transactional changes which should not be flushed to disk and so should not
**** increase either binlog_cache_disk_use or binlog_stmt_cache_disk_use.
**** Expected: binlog_cache_use = 2, binlog_cache_disk_use = 1.
**** Expected: binlog_stmt_cache_use = 0, binlog_stmt_cache_disk_use = 0.
begin;
insert into t1 values( 1 );
rollback;
**** Non-Transactional changes which should not be flushed to disk and so should not
**** increase either binlog_cache_disk_use or binlog_stmt_cache_disk_use.
**** Expected: binlog_cache_use = 2, binlog_cache_disk_use = 1.
**** Expected: binlog_stmt_cache_use = 1, binlog_stmt_cache_disk_use = 0.
begin;
insert into t2 values( 1 );
rollback;
Warnings:
Warning 1196 Some non-transactional changed tables couldn't be rolled back
**** Mixed changes which should not be flushed to disk and so should not
**** increase either binlog_cache_disk_use or binlog_stmt_cache_disk_use.
**** Expected: binlog_cache_use = 3, binlog_cache_disk_use = 1.
**** Expected: binlog_stmt_cache_use = 2, binlog_stmt_cache_disk_use = 0.
begin;
insert into t1 values( 1 );
insert into t2 values( 1 );
rollback;
Warnings:
Warning 1196 Some non-transactional changed tables couldn't be rolled back
drop table t1, t2;
drop table if exists t1, t2;
create table t1 (a int) engine=innodb;
create table t2 (a int) engine=myisam;
**** Preparing the enviroment to check commit and its effect on status variables.
**** Expected: binlog_cache_use = 0, binlog_cache_disk_use = 0.
**** Expected: binlog_stmt_cache_use = 0, binlog_stmt_cache_disk_use = 0.
flush status;
**** Transactional changes which are long enough so they will be flushed to disk...
**** Expected: binlog_cache_use = 1, binlog_cache_disk_use = 1.
**** Expected: binlog_stmt_cache_use = 0, binlog_stmt_cache_disk_use = 0.
**** Transactional changes which should not be flushed to disk and so should not
**** increase either binlog_cache_disk_use or binlog_stmt_cache_disk_use.
**** Expected: binlog_cache_use = 2, binlog_cache_disk_use = 1.
**** Expected: binlog_stmt_cache_use = 0, binlog_stmt_cache_disk_use = 0.
begin;
insert into t1 values( 1 );
commit;
**** Non-Transactional changes which should not be flushed to disk and so should not
**** increase either binlog_cache_disk_use or binlog_stmt_cache_disk_use.
**** Expected: binlog_cache_use = 2, binlog_cache_disk_use = 1.
**** Expected: binlog_stmt_cache_use = 1, binlog_stmt_cache_disk_use = 0.
begin;
insert into t2 values( 1 );
commit;
**** Mixed changes which should not be flushed to disk and so should not
**** increase either binlog_cache_disk_use or binlog_stmt_cache_disk_use.
**** Expected: binlog_cache_use = 3, binlog_cache_disk_use = 1.
**** Expected: binlog_stmt_cache_use = 2, binlog_stmt_cache_disk_use = 0.
begin;
insert into t1 values( 1 );
insert into t2 values( 1 );
commit;
**** Preparing the enviroment to check abort and its effect on the status variables.
**** Expected: binlog_cache_use = 0, binlog_cache_disk_use = 0.
**** Expected: binlog_stmt_cache_use = 0, binlog_stmt_cache_disk_use = 0.
flush status;
**** Transactional changes which are long enough so they will be flushed to disk...
**** Expected: binlog_cache_use = 1, binlog_cache_disk_use = 1.
**** Expected: binlog_stmt_cache_use = 0, binlog_stmt_cache_disk_use = 0.
**** Transactional changes which should not be flushed to disk and so should not
**** increase either binlog_cache_disk_use or binlog_stmt_cache_disk_use.
**** Expected: binlog_cache_use = 2, binlog_cache_disk_use = 1.
**** Expected: binlog_stmt_cache_use = 0, binlog_stmt_cache_disk_use = 0.
begin;
insert into t1 values( 1 );
rollback;
**** Non-Transactional changes which should not be flushed to disk and so should not
**** increase either binlog_cache_disk_use or binlog_stmt_cache_disk_use.
**** Expected: binlog_cache_use = 2, binlog_cache_disk_use = 1.
**** Expected: binlog_stmt_cache_use = 1, binlog_stmt_cache_disk_use = 0.
begin;
insert into t2 values( 1 );
rollback;
Warnings:
Warning 1196 Some non-transactional changed tables couldn't be rolled back
**** Mixed changes which should not be flushed to disk and so should not
**** increase either binlog_cache_disk_use or binlog_stmt_cache_disk_use.
**** Expected: binlog_cache_use = 3, binlog_cache_disk_use = 1.
**** Expected: binlog_stmt_cache_use = 2, binlog_stmt_cache_disk_use = 0.
begin;
insert into t1 values( 1 );
insert into t2 values( 1 );
rollback;
Warnings:
Warning 1196 Some non-transactional changed tables couldn't be rolled back
drop table t1, t2;
flush status;
show status like "binlog_cache_use";
Variable_name Value
Binlog_cache_use 0
show status like "binlog_cache_disk_use";
Variable_name Value
Binlog_cache_disk_use 0
drop table if exists t1;
create table t1 (a int) engine=innodb;
show status like "binlog_cache_use";
Variable_name Value
Binlog_cache_use 2
show status like "binlog_cache_disk_use";
Variable_name Value
Binlog_cache_disk_use 1
begin;
delete from t1;
commit;
show status like "binlog_cache_use";
Variable_name Value
Binlog_cache_use 4
show status like "binlog_cache_disk_use";
Variable_name Value
Binlog_cache_disk_use 1
drop table t1;
drop table if exists t1, t2;
create table t1 (a int) engine=innodb;
create table t2 (a int) engine=myisam;
**** Preparing the enviroment to check commit and its effect on status variables.
**** Expected: binlog_cache_use = 0, binlog_cache_disk_use = 0.
**** Expected: binlog_stmt_cache_use = 0, binlog_stmt_cache_disk_use = 0.
flush status;
**** Transactional changes which are long enough so they will be flushed to disk...
**** Expected: binlog_cache_use = 1, binlog_cache_disk_use = 1.
**** Expected: binlog_stmt_cache_use = 0, binlog_stmt_cache_disk_use = 0.
**** Transactional changes which should not be flushed to disk and so should not
**** increase either binlog_cache_disk_use or binlog_stmt_cache_disk_use.
**** Expected: binlog_cache_use = 2, binlog_cache_disk_use = 1.
**** Expected: binlog_stmt_cache_use = 0, binlog_stmt_cache_disk_use = 0.
begin;
insert into t1 values( 1 );
commit;
**** Non-Transactional changes which should not be flushed to disk and so should not
**** increase either binlog_cache_disk_use or binlog_stmt_cache_disk_use.
**** Expected: binlog_cache_use = 2, binlog_cache_disk_use = 1.
**** Expected: binlog_stmt_cache_use = 1, binlog_stmt_cache_disk_use = 0.
begin;
insert into t2 values( 1 );
commit;
**** Mixed changes which should not be flushed to disk and so should not
**** increase either binlog_cache_disk_use or binlog_stmt_cache_disk_use.
**** Expected: binlog_cache_use = 3, binlog_cache_disk_use = 1.
**** Expected: binlog_stmt_cache_use = 2, binlog_stmt_cache_disk_use = 0.
begin;
insert into t1 values( 1 );
insert into t2 values( 1 );
commit;
**** Preparing the enviroment to check abort and its effect on the status variables.
**** Expected: binlog_cache_use = 0, binlog_cache_disk_use = 0.
**** Expected: binlog_stmt_cache_use = 0, binlog_stmt_cache_disk_use = 0.
flush status;
**** Transactional changes which are long enough so they will be flushed to disk...
**** Expected: binlog_cache_use = 1, binlog_cache_disk_use = 1.
**** Expected: binlog_stmt_cache_use = 0, binlog_stmt_cache_disk_use = 0.
**** Transactional changes which should not be flushed to disk and so should not
**** increase either binlog_cache_disk_use or binlog_stmt_cache_disk_use.
**** Expected: binlog_cache_use = 2, binlog_cache_disk_use = 1.
**** Expected: binlog_stmt_cache_use = 0, binlog_stmt_cache_disk_use = 0.
begin;
insert into t1 values( 1 );
rollback;
**** Non-Transactional changes which should not be flushed to disk and so should not
**** increase either binlog_cache_disk_use or binlog_stmt_cache_disk_use.
**** Expected: binlog_cache_use = 2, binlog_cache_disk_use = 1.
**** Expected: binlog_stmt_cache_use = 1, binlog_stmt_cache_disk_use = 0.
begin;
insert into t2 values( 1 );
rollback;
Warnings:
Warning 1196 Some non-transactional changed tables couldn't be rolled back
**** Mixed changes which should not be flushed to disk and so should not
**** increase either binlog_cache_disk_use or binlog_stmt_cache_disk_use.
**** Expected: binlog_cache_use = 3, binlog_cache_disk_use = 1.
**** Expected: binlog_stmt_cache_use = 2, binlog_stmt_cache_disk_use = 0.
begin;
insert into t1 values( 1 );
insert into t2 values( 1 );
rollback;
Warnings:
Warning 1196 Some non-transactional changed tables couldn't be rolled back
drop table t1, t2;
flush status;
show status like "binlog_cache_use";
Variable_name Value
Binlog_cache_use 0
show status like "binlog_cache_disk_use";
Variable_name Value
Binlog_cache_disk_use 0
drop table if exists t1;
create table t1 (a int) engine=innodb;
show status like "binlog_cache_use";
Variable_name Value
Binlog_cache_use 2
show status like "binlog_cache_disk_use";
Variable_name Value
Binlog_cache_disk_use 1
begin;
delete from t1;
commit;
show status like "binlog_cache_use";
Variable_name Value
Binlog_cache_use 4
show status like "binlog_cache_disk_use";
Variable_name Value
Binlog_cache_disk_use 1
drop table t1;
......@@ -2,4 +2,4 @@
# For both statement and row based bin logs 9/19/2005 [jbm]
-- source include/have_binlog_format_mixed.inc
-- source extra/binlog_tests/innodb_stat.test
-- source extra/binlog_tests/binlog_cache_stat.test
......@@ -2,4 +2,4 @@
# For both statement and row based bin logs 9/19/2005 [jbm]
-- source include/have_binlog_format_row.inc
-- source extra/binlog_tests/innodb_stat.test
-- source extra/binlog_tests/binlog_cache_stat.test
......@@ -2,4 +2,4 @@
# For both statement and row based bin logs 9/19/2005 [jbm]
-- source include/have_binlog_format_statement.inc
-- source extra/binlog_tests/innodb_stat.test
-- source extra/binlog_tests/binlog_cache_stat.test
......@@ -7,6 +7,8 @@ start slave;
call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT");
SET GLOBAL max_binlog_cache_size = 4096;
SET GLOBAL binlog_cache_size = 4096;
SET GLOBAL max_binlog_stmt_cache_size = 4096;
SET GLOBAL binlog_stmt_cache_size = 4096;
CREATE TABLE t1(a INT PRIMARY KEY, data VARCHAR(30000)) ENGINE=Innodb;
CREATE TABLE t2(a INT PRIMARY KEY, data VARCHAR(30000)) ENGINE=MyIsam;
CREATE TABLE t3(a INT PRIMARY KEY, data VARCHAR(30000)) ENGINE=Innodb;
......@@ -129,13 +131,18 @@ source include/diff_master_slave.inc;
# [ On Slave ]
SET GLOBAL max_binlog_cache_size = 4096;
SET GLOBAL binlog_cache_size = 4096;
SET GLOBAL max_binlog_stmt_cache_size = 4096;
SET GLOBAL binlog_stmt_cache_size = 4096;
include/stop_slave.inc
include/start_slave.inc
CALL mtr.add_suppression("Multi-statement transaction required more than 'max_binlog_cache_size' bytes of storage.*");
CALL mtr.add_suppression("Multi-statement transaction required more than 'max_binlog_stmt_cache_size' bytes of storage.*");
CALL mtr.add_suppression("Writing one row to the row-based binary log failed.*");
TRUNCATE t1;
SET GLOBAL max_binlog_cache_size= ORIGINAL_VALUE;
SET GLOBAL binlog_cache_size= ORIGINAL_VALUE;
SET GLOBAL max_binlog_stmt_cache_size= ORIGINAL_VALUE;
SET GLOBAL binlog_stmt_cache_size= ORIGINAL_VALUE;
BEGIN;
Repeat statement 'INSERT INTO t1 VALUES($n, repeat("a", 32))' 128 times
COMMIT;
......@@ -146,6 +153,8 @@ show binlog events in 'slave-bin.000001' from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
SET GLOBAL max_binlog_cache_size= ORIGINAL_VALUE;
SET GLOBAL binlog_cache_size= ORIGINAL_VALUE;
SET GLOBAL max_binlog_stmt_cache_size= ORIGINAL_VALUE;
SET GLOBAL binlog_stmt_cache_size= ORIGINAL_VALUE;
include/stop_slave.inc
include/start_slave.inc
SELECT count(*) FROM t1;
......
......@@ -7,6 +7,8 @@ start slave;
call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT");
SET GLOBAL max_binlog_cache_size = 4096;
SET GLOBAL binlog_cache_size = 4096;
SET GLOBAL max_binlog_stmt_cache_size = 4096;
SET GLOBAL binlog_stmt_cache_size = 4096;
CREATE TABLE t1(a INT PRIMARY KEY, data VARCHAR(30000)) ENGINE=Innodb;
CREATE TABLE t2(a INT PRIMARY KEY, data VARCHAR(30000)) ENGINE=MyIsam;
CREATE TABLE t3(a INT PRIMARY KEY, data VARCHAR(30000)) ENGINE=Innodb;
......@@ -130,13 +132,18 @@ source include/diff_master_slave.inc;
# [ On Slave ]
SET GLOBAL max_binlog_cache_size = 4096;
SET GLOBAL binlog_cache_size = 4096;
SET GLOBAL max_binlog_stmt_cache_size = 4096;
SET GLOBAL binlog_stmt_cache_size = 4096;
include/stop_slave.inc
include/start_slave.inc
CALL mtr.add_suppression("Multi-statement transaction required more than 'max_binlog_cache_size' bytes of storage.*");
CALL mtr.add_suppression("Multi-statement transaction required more than 'max_binlog_stmt_cache_size' bytes of storage.*");
CALL mtr.add_suppression("Writing one row to the row-based binary log failed.*");
TRUNCATE t1;
SET GLOBAL max_binlog_cache_size= ORIGINAL_VALUE;
SET GLOBAL binlog_cache_size= ORIGINAL_VALUE;
SET GLOBAL max_binlog_stmt_cache_size= ORIGINAL_VALUE;
SET GLOBAL binlog_stmt_cache_size= ORIGINAL_VALUE;
BEGIN;
Repeat statement 'INSERT INTO t1 VALUES($n, repeat("a", 32))' 128 times
COMMIT;
......@@ -147,6 +154,8 @@ show binlog events in 'slave-bin.000001' from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
SET GLOBAL max_binlog_cache_size= ORIGINAL_VALUE;
SET GLOBAL binlog_cache_size= ORIGINAL_VALUE;
SET GLOBAL max_binlog_stmt_cache_size= ORIGINAL_VALUE;
SET GLOBAL binlog_stmt_cache_size= ORIGINAL_VALUE;
include/stop_slave.inc
include/start_slave.inc
SELECT count(*) FROM t1;
......
......@@ -7,6 +7,8 @@ start slave;
call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT");
SET GLOBAL max_binlog_cache_size = 4096;
SET GLOBAL binlog_cache_size = 4096;
SET GLOBAL max_binlog_stmt_cache_size = 4096;
SET GLOBAL binlog_stmt_cache_size = 4096;
CREATE TABLE t1(a INT PRIMARY KEY, data VARCHAR(30000)) ENGINE=Innodb;
CREATE TABLE t2(a INT PRIMARY KEY, data VARCHAR(30000)) ENGINE=MyIsam;
CREATE TABLE t3(a INT PRIMARY KEY, data VARCHAR(30000)) ENGINE=Innodb;
......@@ -129,13 +131,18 @@ source include/diff_master_slave.inc;
# [ On Slave ]
SET GLOBAL max_binlog_cache_size = 4096;
SET GLOBAL binlog_cache_size = 4096;
SET GLOBAL max_binlog_stmt_cache_size = 4096;
SET GLOBAL binlog_stmt_cache_size = 4096;
include/stop_slave.inc
include/start_slave.inc
CALL mtr.add_suppression("Multi-statement transaction required more than 'max_binlog_cache_size' bytes of storage.*");
CALL mtr.add_suppression("Multi-statement transaction required more than 'max_binlog_stmt_cache_size' bytes of storage.*");
CALL mtr.add_suppression("Writing one row to the row-based binary log failed.*");
TRUNCATE t1;
SET GLOBAL max_binlog_cache_size= ORIGINAL_VALUE;
SET GLOBAL binlog_cache_size= ORIGINAL_VALUE;
SET GLOBAL max_binlog_stmt_cache_size= ORIGINAL_VALUE;
SET GLOBAL binlog_stmt_cache_size= ORIGINAL_VALUE;
BEGIN;
Repeat statement 'INSERT INTO t1 VALUES($n, repeat("a", 32))' 128 times
COMMIT;
......@@ -146,6 +153,8 @@ show binlog events in 'slave-bin.000001' from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
SET GLOBAL max_binlog_cache_size= ORIGINAL_VALUE;
SET GLOBAL binlog_cache_size= ORIGINAL_VALUE;
SET GLOBAL max_binlog_stmt_cache_size= ORIGINAL_VALUE;
SET GLOBAL binlog_stmt_cache_size= ORIGINAL_VALUE;
include/stop_slave.inc
include/start_slave.inc
SELECT count(*) FROM t1;
......
################ mysql-test\t\binlog_stmt_cache_size_basic.test ################
# #
# Variable Name: binlog_stmt_cache_size #
# Scope: GLOBAL #
# Access Type: Dynamic #
# Data Type: Numeric #
# Default Value: 32768 #
# Range: 4096 - 4294967295 #
# #
# #
# Creation Date: 2010-10-12 #
# Author: Alfranio Correia #
# #
# Description: Test Cases of Dynamic System Variable "binlog_stmt_cache_size" #
# that checks behavior of this variable in the following ways #
# * Default Value #
# * Valid & Invalid values #
# * Scope & Access method #
# * Data Integrity . #
# #
# Reference: http://dev.mysql.com/doc/refman/5.5/en/ #
# server-system-variables.html#option_mysqld_binlog_stmt_cache_size #
# #
################################################################################
#################################################################
# START OF binlog_stmt_cache_size TESTS #
#################################################################
#########################################################################
# Saving initial value of binlog_stmt_cache_size in a temporary variable #
#########################################################################
SET @start_value = @@global.binlog_stmt_cache_size;
SELECT @start_value;
--echo '#--------------------FN_DYNVARS_006_01------------------------#'
#########################################################################
# Display the DEFAULT value of binlog_stmt_cache_size #
#########################################################################
SET @@global.binlog_stmt_cache_size = 100;
SET @@global.binlog_stmt_cache_size = DEFAULT;
SELECT @@global.binlog_stmt_cache_size;
--echo '#---------------------FN_DYNVARS_006_02-------------------------#'
###############################################
# Verify default value of variable #
###############################################
SET @@global.binlog_stmt_cache_size = @start_value;
SELECT @@global.binlog_stmt_cache_size = 32768;
--echo '#--------------------FN_DYNVARS_006_03------------------------#'
#########################################################################
# Change the value of binlog_stmt_cache_size to a valid value #
#########################################################################
SET @@global.binlog_stmt_cache_size = 4096;
SELECT @@global.binlog_stmt_cache_size;
SET @@global.binlog_stmt_cache_size = 4294967295;
SELECT @@global.binlog_stmt_cache_size;
SET @@global.binlog_stmt_cache_size = 10000;
SELECT @@global.binlog_stmt_cache_size;
SET @@global.binlog_stmt_cache_size = 21221204;
SELECT @@global.binlog_stmt_cache_size;
echo 'Bug: Invalid values are coming in variable on assigning valid values';
--echo '#--------------------FN_DYNVARS_006_04-------------------------#'
############################################################################
# Change the value of binlog_stmt_cache_size to invalid value #
############################################################################
SET @@global.binlog_stmt_cache_size = 1024;
SELECT @@global.binlog_stmt_cache_size;
--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.binlog_stmt_cache_size = 10000.01;
SET @@global.binlog_stmt_cache_size = -1024;
SELECT @@global.binlog_stmt_cache_size;
SET @@global.binlog_stmt_cache_size = 42949672950;
SELECT @@global.binlog_stmt_cache_size;
echo 'Bug: Errors are not coming on assigning invalid values to variable';
--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.binlog_stmt_cache_size = ON;
--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.binlog_stmt_cache_size = 'test';
--echo '#-------------------FN_DYNVARS_006_05----------------------------#'
############################################################################
# Test if accessing session binlog_stmt_cache_size gives error #
############################################################################
--Error ER_GLOBAL_VARIABLE
SET @@session.binlog_stmt_cache_size = 0;
--echo '#----------------------FN_DYNVARS_006_06------------------------#'
##############################################################################
# Check if the value in GLOBAL Tables matches values in variable #
##############################################################################
SELECT @@global.binlog_stmt_cache_size = VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='binlog_stmt_cache_size';
--echo '#---------------------FN_DYNVARS_006_07----------------------#'
###################################################################
# Check if TRUE and FALSE values can be used on variable #
###################################################################
SET @@global.binlog_stmt_cache_size = TRUE;
SELECT @@global.binlog_stmt_cache_size;
SET @@global.binlog_stmt_cache_size = FALSE;
SELECT @@global.binlog_stmt_cache_size;
echo 'Bug: Errors are not coming on assigning TRUE/FALSE to variable';
--echo '#---------------------FN_DYNVARS_006_08----------------------#'
###############################################################################
# Check if accessing variable without SCOPE points to same global variable #
###############################################################################
SET @@global.binlog_stmt_cache_size = 1;
SELECT @@binlog_stmt_cache_size = @@global.binlog_stmt_cache_size;
--echo '#---------------------FN_DYNVARS_006_09----------------------#'
###########################################################################
# Check if binlog_stmt_cache_size can be accessed with and without @@ sign#
###########################################################################
--Error ER_GLOBAL_VARIABLE
SET binlog_stmt_cache_size = 1;
--Error ER_PARSE_ERROR
SET global.binlog_stmt_cache_size = 1;
--Error ER_UNKNOWN_TABLE
SELECT global.binlog_stmt_cache_size;
--Error ER_BAD_FIELD_ERROR
SELECT binlog_stmt_cache_size = @@session.binlog_stmt_cache_size;
##############################
# Restore initial value #
##############################
SET @@global.binlog_stmt_cache_size = @start_value;
SELECT @@global.binlog_stmt_cache_size;
###########################################################
# END OF binlog_stmt_cache_size TESTS #
###########################################################
SET @start_value = @@global.binlog_stmt_cache_size;
SELECT @start_value;
@start_value
32768
'#--------------------FN_DYNVARS_006_01------------------------#'
SET @@global.binlog_stmt_cache_size = 100;
Warnings:
Warning 1292 Truncated incorrect binlog_stmt_cache_size value: '100'
SET @@global.binlog_stmt_cache_size = DEFAULT;
SELECT @@global.binlog_stmt_cache_size;
@@global.binlog_stmt_cache_size
32768
'#---------------------FN_DYNVARS_006_02-------------------------#'
SET @@global.binlog_stmt_cache_size = @start_value;
SELECT @@global.binlog_stmt_cache_size = 32768;
@@global.binlog_stmt_cache_size = 32768
1
'#--------------------FN_DYNVARS_006_03------------------------#'
SET @@global.binlog_stmt_cache_size = 4096;
SELECT @@global.binlog_stmt_cache_size;
@@global.binlog_stmt_cache_size
4096
SET @@global.binlog_stmt_cache_size = 4294967295;
Warnings:
Warning 1292 Truncated incorrect binlog_stmt_cache_size value: '4294967295'
SELECT @@global.binlog_stmt_cache_size;
@@global.binlog_stmt_cache_size
4294963200
SET @@global.binlog_stmt_cache_size = 10000;
Warnings:
Warning 1292 Truncated incorrect binlog_stmt_cache_size value: '10000'
SELECT @@global.binlog_stmt_cache_size;
@@global.binlog_stmt_cache_size
8192
SET @@global.binlog_stmt_cache_size = 21221204;
Warnings:
Warning 1292 Truncated incorrect binlog_stmt_cache_size value: '21221204'
SELECT @@global.binlog_stmt_cache_size;
@@global.binlog_stmt_cache_size
21217280
'Bug: Invalid values are coming in variable on assigning valid values'
'#--------------------FN_DYNVARS_006_04-------------------------#'
SET @@global.binlog_stmt_cache_size = 1024;
Warnings:
Warning 1292 Truncated incorrect binlog_stmt_cache_size value: '1024'
SELECT @@global.binlog_stmt_cache_size;
@@global.binlog_stmt_cache_size
4096
SET @@global.binlog_stmt_cache_size = 10000.01;
ERROR 42000: Incorrect argument type to variable 'binlog_stmt_cache_size'
SET @@global.binlog_stmt_cache_size = -1024;
Warnings:
Warning 1292 Truncated incorrect binlog_stmt_cache_size value: '-1024'
SELECT @@global.binlog_stmt_cache_size;
@@global.binlog_stmt_cache_size
4096
SET @@global.binlog_stmt_cache_size = 42949672950;
Warnings:
Warning 1292 Truncated incorrect binlog_stmt_cache_size value: '42949672950'
SELECT @@global.binlog_stmt_cache_size;
@@global.binlog_stmt_cache_size
4294963200
'Bug: Errors are not coming on assigning invalid values to variable'
SET @@global.binlog_stmt_cache_size = ON;
ERROR 42000: Incorrect argument type to variable 'binlog_stmt_cache_size'
SET @@global.binlog_stmt_cache_size = 'test';
ERROR 42000: Incorrect argument type to variable 'binlog_stmt_cache_size'
'#-------------------FN_DYNVARS_006_05----------------------------#'
SET @@session.binlog_stmt_cache_size = 0;
ERROR HY000: Variable 'binlog_stmt_cache_size' is a GLOBAL variable and should be set with SET GLOBAL
'#----------------------FN_DYNVARS_006_06------------------------#'
SELECT @@global.binlog_stmt_cache_size = VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='binlog_stmt_cache_size';
@@global.binlog_stmt_cache_size = VARIABLE_VALUE
1
'#---------------------FN_DYNVARS_006_07----------------------#'
SET @@global.binlog_stmt_cache_size = TRUE;
Warnings:
Warning 1292 Truncated incorrect binlog_stmt_cache_size value: '1'
SELECT @@global.binlog_stmt_cache_size;
@@global.binlog_stmt_cache_size
4096
SET @@global.binlog_stmt_cache_size = FALSE;
Warnings:
Warning 1292 Truncated incorrect binlog_stmt_cache_size value: '0'
SELECT @@global.binlog_stmt_cache_size;
@@global.binlog_stmt_cache_size
4096
'Bug: Errors are not coming on assigning TRUE/FALSE to variable'
'#---------------------FN_DYNVARS_006_08----------------------#'
SET @@global.binlog_stmt_cache_size = 1;
Warnings:
Warning 1292 Truncated incorrect binlog_stmt_cache_size value: '1'
SELECT @@binlog_stmt_cache_size = @@global.binlog_stmt_cache_size;
@@binlog_stmt_cache_size = @@global.binlog_stmt_cache_size
1
'#---------------------FN_DYNVARS_006_09----------------------#'
SET binlog_stmt_cache_size = 1;
ERROR HY000: Variable 'binlog_stmt_cache_size' is a GLOBAL variable and should be set with SET GLOBAL
SET global.binlog_stmt_cache_size = 1;
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 'binlog_stmt_cache_size = 1' at line 1
SELECT global.binlog_stmt_cache_size;
ERROR 42S02: Unknown table 'global' in field list
SELECT binlog_stmt_cache_size = @@session.binlog_stmt_cache_size;
ERROR 42S22: Unknown column 'binlog_stmt_cache_size' in 'field list'
SET @@global.binlog_stmt_cache_size = @start_value;
SELECT @@global.binlog_stmt_cache_size;
@@global.binlog_stmt_cache_size
32768
SET @start_value = @@global.binlog_stmt_cache_size;
SELECT @start_value;
@start_value
32768
'#--------------------FN_DYNVARS_006_01------------------------#'
SET @@global.binlog_stmt_cache_size = 100;
Warnings:
Warning 1292 Truncated incorrect binlog_stmt_cache_size value: '100'
SET @@global.binlog_stmt_cache_size = DEFAULT;
SELECT @@global.binlog_stmt_cache_size;
@@global.binlog_stmt_cache_size
32768
'#---------------------FN_DYNVARS_006_02-------------------------#'
SET @@global.binlog_stmt_cache_size = @start_value;
SELECT @@global.binlog_stmt_cache_size = 32768;
@@global.binlog_stmt_cache_size = 32768
1
'#--------------------FN_DYNVARS_006_03------------------------#'
SET @@global.binlog_stmt_cache_size = 4096;
SELECT @@global.binlog_stmt_cache_size;
@@global.binlog_stmt_cache_size
4096
SET @@global.binlog_stmt_cache_size = 4294967295;
Warnings:
Warning 1292 Truncated incorrect binlog_stmt_cache_size value: '4294967295'
SELECT @@global.binlog_stmt_cache_size;
@@global.binlog_stmt_cache_size
4294963200
SET @@global.binlog_stmt_cache_size = 10000;
Warnings:
Warning 1292 Truncated incorrect binlog_stmt_cache_size value: '10000'
SELECT @@global.binlog_stmt_cache_size;
@@global.binlog_stmt_cache_size
8192
SET @@global.binlog_stmt_cache_size = 21221204;
Warnings:
Warning 1292 Truncated incorrect binlog_stmt_cache_size value: '21221204'
SELECT @@global.binlog_stmt_cache_size;
@@global.binlog_stmt_cache_size
21217280
'Bug: Invalid values are coming in variable on assigning valid values'
'#--------------------FN_DYNVARS_006_04-------------------------#'
SET @@global.binlog_stmt_cache_size = 1024;
Warnings:
Warning 1292 Truncated incorrect binlog_stmt_cache_size value: '1024'
SELECT @@global.binlog_stmt_cache_size;
@@global.binlog_stmt_cache_size
4096
SET @@global.binlog_stmt_cache_size = 10000.01;
ERROR 42000: Incorrect argument type to variable 'binlog_stmt_cache_size'
SET @@global.binlog_stmt_cache_size = -1024;
Warnings:
Warning 1292 Truncated incorrect binlog_stmt_cache_size value: '-1024'
SELECT @@global.binlog_stmt_cache_size;
@@global.binlog_stmt_cache_size
4096
SET @@global.binlog_stmt_cache_size = 42949672950;
Warnings:
Warning 1292 Truncated incorrect binlog_stmt_cache_size value: '42949672950'
SELECT @@global.binlog_stmt_cache_size;
@@global.binlog_stmt_cache_size
4294963200
'Bug: Errors are not coming on assigning invalid values to variable'
SET @@global.binlog_stmt_cache_size = ON;
ERROR 42000: Incorrect argument type to variable 'binlog_stmt_cache_size'
SET @@global.binlog_stmt_cache_size = 'test';
ERROR 42000: Incorrect argument type to variable 'binlog_stmt_cache_size'
'#-------------------FN_DYNVARS_006_05----------------------------#'
SET @@session.binlog_stmt_cache_size = 0;
ERROR HY000: Variable 'binlog_stmt_cache_size' is a GLOBAL variable and should be set with SET GLOBAL
'#----------------------FN_DYNVARS_006_06------------------------#'
SELECT @@global.binlog_stmt_cache_size = VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='binlog_stmt_cache_size';
@@global.binlog_stmt_cache_size = VARIABLE_VALUE
1
'#---------------------FN_DYNVARS_006_07----------------------#'
SET @@global.binlog_stmt_cache_size = TRUE;
Warnings:
Warning 1292 Truncated incorrect binlog_stmt_cache_size value: '1'
SELECT @@global.binlog_stmt_cache_size;
@@global.binlog_stmt_cache_size
4096
SET @@global.binlog_stmt_cache_size = FALSE;
Warnings:
Warning 1292 Truncated incorrect binlog_stmt_cache_size value: '0'
SELECT @@global.binlog_stmt_cache_size;
@@global.binlog_stmt_cache_size
4096
'Bug: Errors are not coming on assigning TRUE/FALSE to variable'
'#---------------------FN_DYNVARS_006_08----------------------#'
SET @@global.binlog_stmt_cache_size = 1;
Warnings:
Warning 1292 Truncated incorrect binlog_stmt_cache_size value: '1'
SELECT @@binlog_stmt_cache_size = @@global.binlog_stmt_cache_size;
@@binlog_stmt_cache_size = @@global.binlog_stmt_cache_size
1
'#---------------------FN_DYNVARS_006_09----------------------#'
SET binlog_stmt_cache_size = 1;
ERROR HY000: Variable 'binlog_stmt_cache_size' is a GLOBAL variable and should be set with SET GLOBAL
SET global.binlog_stmt_cache_size = 1;
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 'binlog_stmt_cache_size = 1' at line 1
SELECT global.binlog_stmt_cache_size;
ERROR 42S02: Unknown table 'global' in field list
SELECT binlog_stmt_cache_size = @@session.binlog_stmt_cache_size;
ERROR 42S22: Unknown column 'binlog_stmt_cache_size' in 'field list'
SET @@global.binlog_stmt_cache_size = @start_value;
SELECT @@global.binlog_stmt_cache_size;
@@global.binlog_stmt_cache_size
32768
SET @start_value = @@global.max_binlog_stmt_cache_size;
SELECT @start_value;
@start_value
18446744073709547520
'#--------------------FN_DYNVARS_072_01------------------------#'
SET @@global.max_binlog_stmt_cache_size = 5000;
Warnings:
Warning 1292 Truncated incorrect max_binlog_stmt_cache_size value: '5000'
SET @@global.max_binlog_stmt_cache_size = DEFAULT;
SELECT @@global.max_binlog_stmt_cache_size;
@@global.max_binlog_stmt_cache_size
18446744073709547520
'#---------------------FN_DYNVARS_072_02-------------------------#'
SET @@global.max_binlog_stmt_cache_size = @start_value;
SELECT @@global.max_binlog_stmt_cache_size = 4294967295;
@@global.max_binlog_stmt_cache_size = 4294967295
0
'#--------------------FN_DYNVARS_072_03------------------------#'
SET @@global.max_binlog_stmt_cache_size = 4096;
SELECT @@global.max_binlog_stmt_cache_size;
@@global.max_binlog_stmt_cache_size
4096
SET @@global.max_binlog_stmt_cache_size = 4294967295;
Warnings:
Warning 1292 Truncated incorrect max_binlog_stmt_cache_size value: '4294967295'
SELECT @@global.max_binlog_stmt_cache_size;
@@global.max_binlog_stmt_cache_size
4294963200
SET @@global.max_binlog_stmt_cache_size = 4294967294;
Warnings:
Warning 1292 Truncated incorrect max_binlog_stmt_cache_size value: '4294967294'
SELECT @@global.max_binlog_stmt_cache_size;
@@global.max_binlog_stmt_cache_size
4294963200
SET @@global.max_binlog_stmt_cache_size = 4097;
Warnings:
Warning 1292 Truncated incorrect max_binlog_stmt_cache_size value: '4097'
SELECT @@global.max_binlog_stmt_cache_size;
@@global.max_binlog_stmt_cache_size
4096
SET @@global.max_binlog_stmt_cache_size = 65535;
Warnings:
Warning 1292 Truncated incorrect max_binlog_stmt_cache_size value: '65535'
SELECT @@global.max_binlog_stmt_cache_size;
@@global.max_binlog_stmt_cache_size
61440
'#--------------------FN_DYNVARS_072_04-------------------------#'
SET @@global.max_binlog_stmt_cache_size = -1;
Warnings:
Warning 1292 Truncated incorrect max_binlog_stmt_cache_size value: '-1'
SELECT @@global.max_binlog_stmt_cache_size;
@@global.max_binlog_stmt_cache_size
4096
SET @@global.max_binlog_stmt_cache_size = 100000000000;
Warnings:
Warning 1292 Truncated incorrect max_binlog_stmt_cache_size value: '100000000000'
SELECT @@global.max_binlog_stmt_cache_size;
@@global.max_binlog_stmt_cache_size
99999997952
SET @@global.max_binlog_stmt_cache_size = 10000.01;
ERROR 42000: Incorrect argument type to variable 'max_binlog_stmt_cache_size'
SELECT @@global.max_binlog_stmt_cache_size;
@@global.max_binlog_stmt_cache_size
99999997952
SET @@global.max_binlog_stmt_cache_size = -1024;
Warnings:
Warning 1292 Truncated incorrect max_binlog_stmt_cache_size value: '-1024'
SELECT @@global.max_binlog_stmt_cache_size;
@@global.max_binlog_stmt_cache_size
4096
SET @@global.max_binlog_stmt_cache_size = 1024;
Warnings:
Warning 1292 Truncated incorrect max_binlog_stmt_cache_size value: '1024'
SELECT @@global.max_binlog_stmt_cache_size;
@@global.max_binlog_stmt_cache_size
4096
SET @@global.max_binlog_stmt_cache_size = 4294967296;
SELECT @@global.max_binlog_stmt_cache_size;
@@global.max_binlog_stmt_cache_size
4294967296
SET @@global.max_binlog_stmt_cache_size = 4095;
Warnings:
Warning 1292 Truncated incorrect max_binlog_stmt_cache_size value: '4095'
SELECT @@global.max_binlog_stmt_cache_size;
@@global.max_binlog_stmt_cache_size
4096
SET @@global.max_binlog_stmt_cache_size = ON;
ERROR 42000: Incorrect argument type to variable 'max_binlog_stmt_cache_size'
SELECT @@global.max_binlog_stmt_cache_size;
@@global.max_binlog_stmt_cache_size
4096
SET @@global.max_binlog_stmt_cache_size = 'test';
ERROR 42000: Incorrect argument type to variable 'max_binlog_stmt_cache_size'
SELECT @@global.max_binlog_stmt_cache_size;
@@global.max_binlog_stmt_cache_size
4096
'#-------------------FN_DYNVARS_072_05----------------------------#'
SET @@session.max_binlog_stmt_cache_size = 4096;
ERROR HY000: Variable 'max_binlog_stmt_cache_size' is a GLOBAL variable and should be set with SET GLOBAL
SELECT @@session.max_binlog_stmt_cache_size;
ERROR HY000: Variable 'max_binlog_stmt_cache_size' is a GLOBAL variable
'#----------------------FN_DYNVARS_072_06------------------------#'
SELECT @@global.max_binlog_stmt_cache_size = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME='max_binlog_stmt_cache_size';
@@global.max_binlog_stmt_cache_size = VARIABLE_VALUE
1
SELECT @@max_binlog_stmt_cache_size = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.SESSION_VARIABLES
WHERE VARIABLE_NAME='max_binlog_stmt_cache_size';
@@max_binlog_stmt_cache_size = VARIABLE_VALUE
1
'#---------------------FN_DYNVARS_072_07----------------------#'
SET @@global.max_binlog_stmt_cache_size = TRUE;
Warnings:
Warning 1292 Truncated incorrect max_binlog_stmt_cache_size value: '1'
SELECT @@global.max_binlog_stmt_cache_size;
@@global.max_binlog_stmt_cache_size
4096
SET @@global.max_binlog_stmt_cache_size = FALSE;
Warnings:
Warning 1292 Truncated incorrect max_binlog_stmt_cache_size value: '0'
SELECT @@global.max_binlog_stmt_cache_size;
@@global.max_binlog_stmt_cache_size
4096
'#---------------------FN_DYNVARS_072_08----------------------#'
SET @@global.max_binlog_stmt_cache_size = 5000;
Warnings:
Warning 1292 Truncated incorrect max_binlog_stmt_cache_size value: '5000'
SELECT @@max_binlog_stmt_cache_size = @@global.max_binlog_stmt_cache_size;
@@max_binlog_stmt_cache_size = @@global.max_binlog_stmt_cache_size
1
'#---------------------FN_DYNVARS_072_09----------------------#'
SET max_binlog_stmt_cache_size = 6000;
ERROR HY000: Variable 'max_binlog_stmt_cache_size' is a GLOBAL variable and should be set with SET GLOBAL
SELECT @@max_binlog_stmt_cache_size;
@@max_binlog_stmt_cache_size
4096
SET local.max_binlog_stmt_cache_size = 7000;
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 'max_binlog_stmt_cache_size = 7000' at line 1
SELECT local.max_binlog_stmt_cache_size;
ERROR 42S02: Unknown table 'local' in field list
SET global.max_binlog_stmt_cache_size = 8000;
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 'max_binlog_stmt_cache_size = 8000' at line 1
SELECT global.max_binlog_stmt_cache_size;
ERROR 42S02: Unknown table 'global' in field list
SELECT max_binlog_stmt_cache_size = @@session.max_binlog_stmt_cache_size;
ERROR 42S22: Unknown column 'max_binlog_stmt_cache_size' in 'field list'
SET @@global.max_binlog_stmt_cache_size = @start_value;
SELECT @@global.max_binlog_stmt_cache_size;
@@global.max_binlog_stmt_cache_size
18446744073709547520
################################################################################
# Wrapper for 32 bit machines #
################################################################################
--source include/have_32bit.inc
--source suite/sys_vars/inc/binlog_stmt_cache_size_basic.inc
################################################################################
# Wrapper for 64 bit machines #
################################################################################
--source include/have_64bit.inc
--source suite/sys_vars/inc/binlog_stmt_cache_size_basic.inc
############ mysql-test\t\max_binlog_stmt_cache_size_basic.test ###############
# #
# Variable Name: max_binlog_stmt_cache_size #
# Scope: GLOBAL #
# Access Type: Dynamic #
# Data Type: numeric #
# Default Value:4294967295 #
# Range: 4096-4294967295 #
# #
# #
# #
# #
# #
# Creation Date: 2010-11-05 #
# Author: Alfranio #
# #
# Description: Test Cases of Dynamic System Variable #
# max_binlog_stmt_cache_size that checks #
# the behavior of this variable in the following ways #
# * Default Value #
# * Valid & Invalid values #
# * Scope & Access method #
# * Data Integrity #
# #
# Reference: http://dev.mysql.com/doc/refman/5.5/en/ #
# server-system-variables.html #
# #
###############################################################################
--source include/load_sysvars.inc
##########################################################################
# START OF max_binlog_stmt_cache_size TESTS #
##########################################################################
##############################################################################
# Saving initial value of max_binlog_stmt_cache_size in a temporary variable #
##############################################################################
SET @start_value = @@global.max_binlog_stmt_cache_size;
SELECT @start_value;
--echo '#--------------------FN_DYNVARS_072_01------------------------#'
########################################################################
# Display the DEFAULT value of max_binlog_stmt_cache_size #
########################################################################
SET @@global.max_binlog_stmt_cache_size = 5000;
SET @@global.max_binlog_stmt_cache_size = DEFAULT;
SELECT @@global.max_binlog_stmt_cache_size;
--echo '#---------------------FN_DYNVARS_072_02-------------------------#'
###############################################
# Verify default value of variable #
###############################################
SET @@global.max_binlog_stmt_cache_size = @start_value;
SELECT @@global.max_binlog_stmt_cache_size = 4294967295;
--echo '#--------------------FN_DYNVARS_072_03------------------------#'
########################################################################
# Change the value of max_binlog_stmt_cache_size to a valid value #
########################################################################
SET @@global.max_binlog_stmt_cache_size = 4096;
SELECT @@global.max_binlog_stmt_cache_size;
SET @@global.max_binlog_stmt_cache_size = 4294967295;
SELECT @@global.max_binlog_stmt_cache_size;
SET @@global.max_binlog_stmt_cache_size = 4294967294;
SELECT @@global.max_binlog_stmt_cache_size;
SET @@global.max_binlog_stmt_cache_size = 4097;
SELECT @@global.max_binlog_stmt_cache_size;
SET @@global.max_binlog_stmt_cache_size = 65535;
SELECT @@global.max_binlog_stmt_cache_size;
--echo '#--------------------FN_DYNVARS_072_04-------------------------#'
###########################################################################
# Change the value of max_binlog_stmt_cache_size to invalid value #
###########################################################################
SET @@global.max_binlog_stmt_cache_size = -1;
SELECT @@global.max_binlog_stmt_cache_size;
SET @@global.max_binlog_stmt_cache_size = 100000000000;
SELECT @@global.max_binlog_stmt_cache_size;
--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.max_binlog_stmt_cache_size = 10000.01;
SELECT @@global.max_binlog_stmt_cache_size;
SET @@global.max_binlog_stmt_cache_size = -1024;
SELECT @@global.max_binlog_stmt_cache_size;
SET @@global.max_binlog_stmt_cache_size = 1024;
SELECT @@global.max_binlog_stmt_cache_size;
SET @@global.max_binlog_stmt_cache_size = 4294967296;
SELECT @@global.max_binlog_stmt_cache_size;
SET @@global.max_binlog_stmt_cache_size = 4095;
SELECT @@global.max_binlog_stmt_cache_size;
--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.max_binlog_stmt_cache_size = ON;
SELECT @@global.max_binlog_stmt_cache_size;
--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.max_binlog_stmt_cache_size = 'test';
SELECT @@global.max_binlog_stmt_cache_size;
--echo '#-------------------FN_DYNVARS_072_05----------------------------#'
###########################################################################
# Test if accessing session max_binlog_stmt_cache_size gives error #
###########################################################################
--Error ER_GLOBAL_VARIABLE
SET @@session.max_binlog_stmt_cache_size = 4096;
--Error ER_INCORRECT_GLOBAL_LOCAL_VAR
SELECT @@session.max_binlog_stmt_cache_size;
--echo '#----------------------FN_DYNVARS_072_06------------------------#'
##############################################################################
# Check if the value in GLOBAL & SESSION Tables matches values in variable #
##############################################################################
SELECT @@global.max_binlog_stmt_cache_size = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME='max_binlog_stmt_cache_size';
SELECT @@max_binlog_stmt_cache_size = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.SESSION_VARIABLES
WHERE VARIABLE_NAME='max_binlog_stmt_cache_size';
--echo '#---------------------FN_DYNVARS_072_07----------------------#'
###################################################################
# Check if TRUE and FALSE values can be used on variable #
###################################################################
SET @@global.max_binlog_stmt_cache_size = TRUE;
SELECT @@global.max_binlog_stmt_cache_size;
SET @@global.max_binlog_stmt_cache_size = FALSE;
SELECT @@global.max_binlog_stmt_cache_size;
--echo '#---------------------FN_DYNVARS_072_08----------------------#'
########################################################################################################
# Check if accessing variable with SESSION,LOCAL and without SCOPE points to same session variable #
########################################################################################################
SET @@global.max_binlog_stmt_cache_size = 5000;
SELECT @@max_binlog_stmt_cache_size = @@global.max_binlog_stmt_cache_size;
--echo '#---------------------FN_DYNVARS_072_09----------------------#'
################################################################################
# Check if max_binlog_stmt_cache_size can be accessed with and without @@ sign #
################################################################################
--Error ER_GLOBAL_VARIABLE
SET max_binlog_stmt_cache_size = 6000;
SELECT @@max_binlog_stmt_cache_size;
--Error ER_PARSE_ERROR
SET local.max_binlog_stmt_cache_size = 7000;
--Error ER_UNKNOWN_TABLE
SELECT local.max_binlog_stmt_cache_size;
--Error ER_PARSE_ERROR
SET global.max_binlog_stmt_cache_size = 8000;
--Error ER_UNKNOWN_TABLE
SELECT global.max_binlog_stmt_cache_size;
--Error ER_BAD_FIELD_ERROR
SELECT max_binlog_stmt_cache_size = @@session.max_binlog_stmt_cache_size;
##############################
# Restore initial value #
##############################
SET @@global.max_binlog_stmt_cache_size = @start_value;
SELECT @@global.max_binlog_stmt_cache_size;
########################################################################
# END OF max_binlog_stmt_cache_size TESTS #
########################################################################
This diff is collapsed.
......@@ -415,7 +415,7 @@ class MYSQL_BIN_LOG: public TC_LOG, private MYSQL_LOG
bool write_incident(THD *thd, bool lock);
int write_cache(IO_CACHE *cache, bool lock_log, bool flush_and_sync);
void set_write_error(THD *thd);
void set_write_error(THD *thd, bool is_transactional);
bool check_write_error(THD *thd);
void start_union_events(THD *thd, query_id_t query_id_param);
......
......@@ -2506,7 +2506,7 @@ class Xid_log_event: public Log_event
my_xid xid;
#ifdef MYSQL_SERVER
Xid_log_event(THD* thd_arg, my_xid x): Log_event(thd_arg,0,0), xid(x) {}
Xid_log_event(THD* thd_arg, my_xid x): Log_event(thd_arg, 0, TRUE), xid(x) {}
#ifdef HAVE_REPLICATION
void pack_info(Protocol* protocol);
#endif /* HAVE_REPLICATION */
......
......@@ -461,6 +461,8 @@ ulonglong slave_type_conversions_options;
ulong thread_cache_size=0;
ulong binlog_cache_size=0;
ulonglong max_binlog_cache_size=0;
ulong binlog_stmt_cache_size=0;
ulonglong max_binlog_stmt_cache_size=0;
ulong query_cache_size=0;
ulong refresh_version; /* Increments on each reload */
query_id_t global_query_id;
......@@ -472,6 +474,7 @@ ulong delayed_insert_threads, delayed_insert_writes, delayed_rows_in_use;
ulong delayed_insert_errors,flush_time;
ulong specialflag=0;
ulong binlog_cache_use= 0, binlog_cache_disk_use= 0;
ulong binlog_stmt_cache_use= 0, binlog_stmt_cache_disk_use= 0;
ulong max_connections, max_connect_errors;
/**
Limit of the total number of prepared statements in the server.
......@@ -6407,6 +6410,8 @@ SHOW_VAR status_vars[]= {
{"Aborted_connects", (char*) &aborted_connects, SHOW_LONG},
{"Binlog_cache_disk_use", (char*) &binlog_cache_disk_use, SHOW_LONG},
{"Binlog_cache_use", (char*) &binlog_cache_use, SHOW_LONG},
{"Binlog_stmt_cache_disk_use",(char*) &binlog_stmt_cache_disk_use, SHOW_LONG},
{"Binlog_stmt_cache_use", (char*) &binlog_stmt_cache_use, SHOW_LONG},
{"Bytes_received", (char*) offsetof(STATUS_VAR, bytes_received), SHOW_LONGLONG_STATUS},
{"Bytes_sent", (char*) offsetof(STATUS_VAR, bytes_sent), SHOW_LONGLONG_STATUS},
{"Com", (char*) com_status_vars, SHOW_ARRAY},
......
......@@ -152,6 +152,7 @@ extern ulonglong keybuff_size;
extern ulonglong thd_startup_options;
extern ulong thread_id;
extern ulong binlog_cache_use, binlog_cache_disk_use;
extern ulong binlog_stmt_cache_use, binlog_stmt_cache_disk_use;
extern ulong aborted_threads,aborted_connects;
extern ulong delayed_insert_timeout;
extern ulong delayed_insert_limit, delayed_queue_size;
......@@ -171,8 +172,9 @@ extern uint slave_net_timeout;
extern uint max_user_connections;
extern ulong what_to_log,flush_time;
extern ulong max_prepared_stmt_count, prepared_stmt_count;
extern ulong binlog_cache_size, open_files_limit;
extern ulonglong max_binlog_cache_size;
extern ulong open_files_limit;
extern ulong binlog_cache_size, binlog_stmt_cache_size;
extern ulonglong max_binlog_cache_size, max_binlog_stmt_cache_size;
extern ulong max_binlog_size, max_relay_log_size;
extern ulong opt_binlog_rows_event_max_size;
extern ulong rpl_recovery_rank, thread_cache_size;
......
......@@ -6392,3 +6392,5 @@ ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE_MIN
ER_SLAVE_HEARTBEAT_VALUE_OUT_OF_RANGE_MAX
eng "The requested value for the heartbeat period exceeds the value of `slave_net_timeout' seconds. A sensible value for the period should be less than the timeout."
ER_STMT_CACHE_FULL
eng "Multi-row statements required more than 'max_binlog_stmt_cache_size' bytes of storage; increase this mysqld variable and try again"
......@@ -236,14 +236,23 @@ static Sys_var_charptr Sys_basedir(
IN_FS_CHARSET, DEFAULT(0));
static Sys_var_ulong Sys_binlog_cache_size(
"binlog_cache_size", "The size of the cache to "
"hold the SQL statements for the binary log during a "
"transaction. If you often use big, multi-statement "
"transactions you can increase this to get more performance",
"binlog_cache_size", "The size of the transactional cache for "
"updates to transactional engines for the binary log. "
"If you often use transactions containing many statements, "
"you can increase this to get more performance",
GLOBAL_VAR(binlog_cache_size),
CMD_LINE(REQUIRED_ARG),
VALID_RANGE(IO_SIZE, ULONG_MAX), DEFAULT(32768), BLOCK_SIZE(IO_SIZE));
static Sys_var_ulong Sys_binlog_stmt_cache_size(
"binlog_stmt_cache_size", "The size of the statement cache for "
"updates to non-transactional engines for the binary log. "
"If you often use statements updating a great number of rows, "
"you can increase this to get more performance",
GLOBAL_VAR(binlog_stmt_cache_size),
CMD_LINE(REQUIRED_ARG),
VALID_RANGE(IO_SIZE, ULONG_MAX), DEFAULT(32768), BLOCK_SIZE(IO_SIZE));
static bool check_has_super(sys_var *self, THD *thd, set_var *var)
{
DBUG_ASSERT(self->scope() != sys_var::GLOBAL);// don't abuse check_has_super()
......@@ -1031,13 +1040,20 @@ static Sys_var_ulong Sys_max_allowed_packet(
static Sys_var_ulonglong Sys_max_binlog_cache_size(
"max_binlog_cache_size",
"Can be used to restrict the total size used to cache a "
"multi-transaction query",
"Sets the total size of the transactional cache",
GLOBAL_VAR(max_binlog_cache_size), CMD_LINE(REQUIRED_ARG),
VALID_RANGE(IO_SIZE, ULONGLONG_MAX),
DEFAULT((ULONGLONG_MAX/IO_SIZE)*IO_SIZE),
BLOCK_SIZE(IO_SIZE));
static Sys_var_ulonglong Sys_max_binlog_stmt_cache_size(
"max_binlog_stmt_cache_size",
"Sets the total size of the statement cache",
GLOBAL_VAR(max_binlog_stmt_cache_size), CMD_LINE(REQUIRED_ARG),
VALID_RANGE(IO_SIZE, ULONGLONG_MAX),
DEFAULT((ULONGLONG_MAX/IO_SIZE)*IO_SIZE),
BLOCK_SIZE(IO_SIZE));
static bool fix_max_binlog_size(sys_var *self, THD *thd, enum_var_type type)
{
mysql_bin_log.set_max_size(max_binlog_size);
......
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