Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
MariaDB
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nexedi
MariaDB
Commits
6fd71bf4
Commit
6fd71bf4
authored
Jan 23, 2009
by
Horst Hunger
Browse files
Options
Browse Files
Download
Plain Diff
due to merge.
parents
f37e50a6
a27a91ca
Changes
39
Hide whitespace changes
Inline
Side-by-side
Showing
39 changed files
with
368 additions
and
161 deletions
+368
-161
config/ac-macros/character_sets.m4
config/ac-macros/character_sets.m4
+3
-0
include/config-win.h
include/config-win.h
+35
-29
mysql-test/include/rpl_events.inc
mysql-test/include/rpl_events.inc
+12
-4
mysql-test/r/character_set_database_func.result
mysql-test/r/character_set_database_func.result
+10
-0
mysql-test/r/date_formats.result
mysql-test/r/date_formats.result
+24
-15
mysql-test/r/having.result
mysql-test/r/having.result
+7
-0
mysql-test/r/innodb-semi-consistent.result
mysql-test/r/innodb-semi-consistent.result
+3
-2
mysql-test/r/myisampack.result
mysql-test/r/myisampack.result
+5
-0
mysql-test/r/partition_innodb_semi_consistent.result
mysql-test/r/partition_innodb_semi_consistent.result
+3
-2
mysql-test/r/query_cache_notembedded.result
mysql-test/r/query_cache_notembedded.result
+16
-0
mysql-test/suite/rpl/r/rpl_cross_version.result
mysql-test/suite/rpl/r/rpl_cross_version.result
+12
-0
mysql-test/suite/rpl/r/rpl_events.result
mysql-test/suite/rpl/r/rpl_events.result
+11
-9
mysql-test/suite/rpl/t/rpl_cross_version-master.opt
mysql-test/suite/rpl/t/rpl_cross_version-master.opt
+1
-0
mysql-test/suite/rpl/t/rpl_cross_version.test
mysql-test/suite/rpl/t/rpl_cross_version.test
+36
-0
mysql-test/suite/rpl/t/rpl_events.test
mysql-test/suite/rpl/t/rpl_events.test
+4
-2
mysql-test/t/character_set_database_func.test
mysql-test/t/character_set_database_func.test
+21
-0
mysql-test/t/date_formats.test
mysql-test/t/date_formats.test
+14
-7
mysql-test/t/having.test
mysql-test/t/having.test
+11
-0
mysql-test/t/innodb-semi-consistent-master.opt
mysql-test/t/innodb-semi-consistent-master.opt
+1
-1
mysql-test/t/innodb-semi-consistent.test
mysql-test/t/innodb-semi-consistent.test
+5
-2
mysql-test/t/myisampack.test
mysql-test/t/myisampack.test
+3
-0
mysql-test/t/partition_innodb_semi_consistent.test
mysql-test/t/partition_innodb_semi_consistent.test
+5
-2
mysql-test/t/query_cache_notembedded.test
mysql-test/t/query_cache_notembedded.test
+32
-0
sql/item.cc
sql/item.cc
+18
-1
sql/item.h
sql/item.h
+3
-0
sql/item_func.cc
sql/item_func.cc
+9
-0
sql/item_func.h
sql/item_func.h
+1
-0
sql/log_event.cc
sql/log_event.cc
+9
-2
sql/sql_cache.cc
sql/sql_cache.cc
+3
-0
storage/innobase/handler/ha_innodb.cc
storage/innobase/handler/ha_innodb.cc
+14
-11
storage/innobase/include/data0type.ic
storage/innobase/include/data0type.ic
+1
-1
storage/innobase/include/hash0hash.ic
storage/innobase/include/hash0hash.ic
+2
-1
storage/innobase/include/row0mysql.h
storage/innobase/include/row0mysql.h
+2
-0
storage/innobase/include/srv0srv.h
storage/innobase/include/srv0srv.h
+0
-2
storage/innobase/row/row0mysql.c
storage/innobase/row/row0mysql.c
+6
-4
storage/innobase/row/row0sel.c
storage/innobase/row/row0sel.c
+6
-49
storage/innobase/srv/srv0srv.c
storage/innobase/srv/srv0srv.c
+15
-14
storage/innobase/trx/trx0trx.c
storage/innobase/trx/trx0trx.c
+4
-0
storage/innobase/trx/trx0undo.c
storage/innobase/trx/trx0undo.c
+1
-1
No files found.
config/ac-macros/character_sets.m4
View file @
6fd71bf4
...
...
@@ -5,6 +5,9 @@ dnl you must also create strings/ctype-$charset_name.c
AC_DIVERT_PUSH(0)
# Any changes to the available character sets must also go into
# include/config-win.h
define(CHARSETS_AVAILABLE0,binary)
define(CHARSETS_AVAILABLE1,armscii8 ascii big5 cp1250 cp1251 cp1256 cp1257)
define(CHARSETS_AVAILABLE2,cp850 cp852 cp866 cp932 dec8 eucjpms euckr gb2312 gbk geostd8)
...
...
include/config-win.h
View file @
6fd71bf4
...
...
@@ -197,11 +197,6 @@ typedef uint rf_SetTimer;
#define SIGNAL_WITH_VIO_CLOSE
#endif
/* Use all character sets in MySQL */
#define USE_MB 1
#define USE_MB_IDENT 1
#define USE_STRCOLL 1
/* All windows servers should support .sym files */
#undef USE_SYMDIR
#define USE_SYMDIR
...
...
@@ -371,9 +366,6 @@ inline ulonglong double2ulonglong(double d)
#define shared_memory_buffer_length 16000
#define default_shared_memory_base_name "MYSQL"
#define MYSQL_DEFAULT_CHARSET_NAME "latin1"
#define MYSQL_DEFAULT_COLLATION_NAME "latin1_swedish_ci"
#define HAVE_SPATIAL 1
#define HAVE_RTREE_KEYS 1
...
...
@@ -383,40 +375,54 @@ inline ulonglong double2ulonglong(double d)
#define COMMUNITY_SERVER 1
#define ENABLED_PROFILING 1
/* Define charsets you want */
/* #undef HAVE_CHARSET_armscii8 */
/* #undef HAVE_CHARSET_ascii */
/*
Our Windows binaries include all character sets which MySQL supports.
Any changes to the available character sets must also go into
config/ac-macros/character_sets.m4
*/
#define MYSQL_DEFAULT_CHARSET_NAME "latin1"
#define MYSQL_DEFAULT_COLLATION_NAME "latin1_swedish_ci"
#define USE_MB 1
#define USE_MB_IDENT 1
#define USE_STRCOLL 1
#define HAVE_CHARSET_armscii8
#define HAVE_CHARSET_ascii
#define HAVE_CHARSET_big5 1
#define HAVE_CHARSET_cp1250 1
/* #undef HAVE_CHARSET_cp1251 */
/* #undef HAVE_CHARSET_cp1256 */
/* #undef HAVE_CHARSET_cp1257 */
/* #undef HAVE_CHARSET_cp850 */
/* #undef HAVE_CHARSET_cp852 */
/* #undef HAVE_CHARSET_cp866 */
#define HAVE_CHARSET_cp1251
#define HAVE_CHARSET_cp1256
#define HAVE_CHARSET_cp1257
#define HAVE_CHARSET_cp850
#define HAVE_CHARSET_cp852
#define HAVE_CHARSET_cp866
#define HAVE_CHARSET_cp932 1
/* #undef HAVE_CHARSET_dec8 */
#define HAVE_CHARSET_dec8
#define HAVE_CHARSET_eucjpms 1
#define HAVE_CHARSET_euckr 1
#define HAVE_CHARSET_gb2312 1
#define HAVE_CHARSET_gbk 1
/* #undef HAVE_CHARSET_greek */
/* #undef HAVE_CHARSET_hebrew */
/* #undef HAVE_CHARSET_hp8 */
/* #undef HAVE_CHARSET_keybcs2 */
/* #undef HAVE_CHARSET_koi8r */
/* #undef HAVE_CHARSET_koi8u */
#define HAVE_CHARSET_geostd8
#define HAVE_CHARSET_greek
#define HAVE_CHARSET_hebrew
#define HAVE_CHARSET_hp8
#define HAVE_CHARSET_keybcs2
#define HAVE_CHARSET_koi8r
#define HAVE_CHARSET_koi8u
#define HAVE_CHARSET_latin1 1
#define HAVE_CHARSET_latin2 1
/* #undef HAVE_CHARSET_latin5 */
/* #undef HAVE_CHARSET_latin7 */
/* #undef HAVE_CHARSET_macce */
/* #undef HAVE_CHARSET_macroman */
#define HAVE_CHARSET_latin5
#define HAVE_CHARSET_latin7
#define HAVE_CHARSET_macce
#define HAVE_CHARSET_macroman
#define HAVE_CHARSET_sjis 1
/* #undef HAVE_CHARSET_swe7 */
#define HAVE_CHARSET_swe7
#define HAVE_CHARSET_tis620 1
#define HAVE_CHARSET_ucs2 1
#define HAVE_CHARSET_ujis 1
#define HAVE_CHARSET_utf8 1
#define HAVE_UCA_COLLATIONS 1
#define HAVE_BOOL 1
mysql-test/include/rpl_events.inc
View file @
6fd71bf4
...
...
@@ -62,7 +62,9 @@ SELECT db, name, status, originator FROM mysql.event WHERE db = 'test' AND name
DROP
EVENT
IF
EXISTS
test
.
slave_once
;
--
enable_warnings
CREATE
EVENT
test
.
slave_once
ON
SCHEDULE
EVERY
5
MINUTE
DO
# Create an event on slave and check its state. An event shouldn't be executed
# so set start time in 1 hour.
CREATE
EVENT
test
.
slave_once
ON
SCHEDULE
EVERY
5
MINUTE
STARTS
CURRENT_TIMESTAMP
+
INTERVAL
1
HOUR
DO
INSERT
IGNORE
INTO
t1
(
id
,
c
)
VALUES
(
3
,
'from slave_once'
);
--
echo
"Checking event status on the slave for originator value = slave's server_id"
...
...
@@ -81,8 +83,11 @@ connection master;
DROP
EVENT
IF
EXISTS
test
.
justonce
;
--
enable_warnings
# Create an event on master and check its state on slave. An event shouldn't be executed
# so set start time in 1 hour. Check that changes of event statement replicated to slave
--
echo
"Creating event test.er on the master"
CREATE
EVENT
test
.
er
ON
SCHEDULE
EVERY
3
SECOND
DO
CREATE
EVENT
test
.
er
ON
SCHEDULE
EVERY
3
SECOND
STARTS
CURRENT_TIMESTAMP
+
INTERVAL
1
HOUR
DO
INSERT
IGNORE
INTO
t1
(
id
,
c
)
VALUES
(
4
,
'from er'
);
--
echo
"Checking event status on the master"
...
...
@@ -95,7 +100,7 @@ SELECT db, name, status, originator, body FROM mysql.event WHERE db = 'test' AND
connection
master
;
--
echo
"Altering event test.er on the master"
ALTER
EVENT
test
.
er
ON
SCHEDULE
EVERY
5
SECOND
DO
ALTER
EVENT
test
.
er
ON
SCHEDULE
EVERY
5
SECOND
STARTS
CURRENT_TIMESTAMP
+
INTERVAL
1
HOUR
DO
INSERT
IGNORE
INTO
t1
(
id
,
c
)
VALUES
(
5
,
'from alter er'
);
--
echo
"Checking event status on the master"
...
...
@@ -123,8 +128,11 @@ SELECT db, name, status, originator FROM mysql.event WHERE db = 'test';
# test the DISABLE ON SLAVE for setting event SLAVESIDE_DISABLED as status
# on CREATE EVENT
# Create an event on slave and check its status. An event shouldn't be executed
# so set start time in 1 hour.
--
echo
"Creating event test.slave_terminate on the slave"
CREATE
EVENT
test
.
slave_terminate
ON
SCHEDULE
EVERY
3
SECOND
DO
CREATE
EVENT
test
.
slave_terminate
ON
SCHEDULE
EVERY
3
SECOND
STARTS
CURRENT_TIMESTAMP
+
INTERVAL
1
HOUR
DO
INSERT
IGNORE
INTO
t1
(
id
,
c
)
VALUES
(
6
,
'from slave_terminate'
);
--
echo
"Checking event status on the slave"
...
...
mysql-test/r/character_set_database_func.result
View file @
6fd71bf4
...
...
@@ -2,6 +2,7 @@
SET @global_character_set_database = @@global.character_set_database;
SET @session_character_set_database = @@session.character_set_database;
SET @session_character_set_server = @@session.character_set_server;
SET @global_character_set_server = @@global.character_set_server;
SET @@global.character_set_database = utf8;
'connect (con1,localhost,root,,,,)'
'connection con1'
...
...
@@ -71,6 +72,15 @@ SELECT count(*) FROM t1 WHERE CHAR_LENGTH(a)>1;
count(*)
1
DROP TABLE IF EXISTS t1;
'Bug#27208: If no current database, character_set_database !=character_set_server'
SET GLOBAL character_set_server=latin5;
CREATE DATABASE csdb CHARACTER SET = utf8;
USE csdb;
DROP DATABASE csdb;
SELECT @@character_set_database;
@@character_set_database
latin5
SET @@global.character_set_database = @global_character_set_database;
SET @@session.character_set_database = @session_character_set_database;
SET @@session.character_set_server = @session_character_set_server;
SET @@global.character_set_server = @global_character_set_server;
mysql-test/r/date_formats.result
View file @
6fd71bf4
drop table if exists t1;
SHOW GLOBAL VARIABLES LIKE "%e_format";
Variable_name Value
date_format %d.%m.%Y
datetime_format %Y-%m-%d %H:%i:%s
time_format %H.%i.%s
SHOW SESSION VARIABLES LIKE "%e_format";
Variable_name Value
date_format %d.%m.%Y
datetime_format %Y-%m-%d %H:%i:%s
time_format %H.%i.%s
SELECT variable_name, variable_value
FROM information_schema.global_variables
WHERE variable_name IN ('date_format', 'datetime_format', 'time_format')
ORDER BY variable_name;
variable_name variable_value
DATETIME_FORMAT %Y-%m-%d %H:%i:%s
DATE_FORMAT %d.%m.%Y
TIME_FORMAT %H.%i.%s
SELECT variable_name, variable_value
FROM information_schema.session_variables
WHERE variable_name IN ('date_format', 'datetime_format', 'time_format')
ORDER BY variable_name;
variable_name variable_value
DATETIME_FORMAT %Y-%m-%d %H:%i:%s
DATE_FORMAT %d.%m.%Y
TIME_FORMAT %H.%i.%s
SET time_format='%H%i%s';
SET time_format='%H:%i:%s.%f';
SET time_format='%h-%i-%s.%f%p';
...
...
@@ -26,11 +32,14 @@ set datetime_format= '%H:%i:%s %Y-%m-%d';
set datetime_format= '%H:%i:%s.%f %m-%d-%Y';
set datetime_format= '%h:%i:%s %p %Y-%m-%d';
set datetime_format= '%h:%i:%s.%f %p %Y-%m-%d';
SHOW SESSION VARIABLES LIKE "%e_format";
Variable_name Value
date_format %m-%d-%Y
datetime_format %h:%i:%s.%f %p %Y-%m-%d
time_format %h:%i:%s%p
SELECT variable_name, variable_value
FROM information_schema.session_variables
WHERE variable_name IN ('date_format', 'datetime_format', 'time_format')
ORDER BY variable_name;
variable_name variable_value
DATETIME_FORMAT %h:%i:%s.%f %p %Y-%m-%d
DATE_FORMAT %m-%d-%Y
TIME_FORMAT %h:%i:%s%p
SET time_format='%h:%i:%s';
ERROR 42000: Variable 'time_format' can't be set to the value of '%h:%i:%s'
SET time_format='%H %i:%s';
...
...
mysql-test/r/having.result
View file @
6fd71bf4
...
...
@@ -424,3 +424,10 @@ select f1 from t1 group by f1 having max(f1)=f1;
f1
set session sql_mode='';
drop table t1;
CREATE TABLE t1 ( a INT, b INT);
INSERT INTO t1 VALUES (1, 1), (2,2), (3, NULL);
SELECT b, COUNT(DISTINCT a) FROM t1 GROUP BY b HAVING b is NULL;
b COUNT(DISTINCT a)
NULL 1
DROP TABLE t1;
End of 5.0 tests
mysql-test/r/innodb-semi-consistent.result
View file @
6fd71bf4
drop table if exists t1;
set binlog_format=mixed;
set session transaction isolation level re
ad committe
d;
set session transaction isolation level re
peatable rea
d;
create table t1(a int not null) engine=innodb DEFAULT CHARSET=latin1;
insert into t1 values (1),(2),(3),(4),(5),(6),(7);
set autocommit=0;
...
...
@@ -8,11 +8,12 @@ select * from t1 where a=3 lock in share mode;
a
3
set binlog_format=mixed;
set session transaction isolation level re
ad committe
d;
set session transaction isolation level re
peatable rea
d;
set autocommit=0;
update t1 set a=10 where a=5;
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
commit;
set session transaction isolation level read committed;
update t1 set a=10 where a=5;
select * from t1 where a=2 for update;
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
...
...
mysql-test/r/myisampack.result
View file @
6fd71bf4
...
...
@@ -48,4 +48,9 @@ Table Op Msg_type Msg_text
test.t1 optimize error Table 'test.t1' is read only
Warnings:
Error 1036 Table 't1' is read only
repair table t1;
Table Op Msg_type Msg_text
test.t1 repair error Table 'test.t1' is read only
Warnings:
Error 1036 Table 't1' is read only
drop table t1;
mysql-test/r/partition_innodb_semi_consistent.result
View file @
6fd71bf4
drop table if exists t1;
set binlog_format=mixed;
set session transaction isolation level re
ad committe
d;
set session transaction isolation level re
peatable rea
d;
create table t1(a int not null)
engine=innodb
DEFAULT CHARSET=latin1
...
...
@@ -13,11 +13,12 @@ select * from t1 where a=3 lock in share mode;
a
3
set binlog_format=mixed;
set session transaction isolation level re
ad committe
d;
set session transaction isolation level re
peatable rea
d;
set autocommit=0;
update t1 set a=10 where a=5;
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
commit;
set session transaction isolation level read committed;
update t1 set a=10 where a=5;
select * from t1 where a=2 for update;
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
...
...
mysql-test/r/query_cache_notembedded.result
View file @
6fd71bf4
...
...
@@ -346,6 +346,22 @@ id
drop table t1;
drop function f1;
set GLOBAL query_cache_size=0;
DROP TABLE IF EXISTS t1;
FLUSH STATUS;
SET GLOBAL query_cache_size=1048576;
CREATE TABLE t1 (a INT);
INSERT INTO t1 VALUES (1),(2),(3),(4),(5);
SHOW STATUS LIKE 'Qcache_queries_in_cache';
Variable_name Value
Qcache_queries_in_cache 0
LOCK TABLES t1 WRITE;
SELECT * FROM t1;
UNLOCK TABLES;
SHOW STATUS LIKE 'Qcache_queries_in_cache';
Variable_name Value
Qcache_queries_in_cache 0
DROP TABLE t1;
SET GLOBAL query_cache_size= default;
SET GLOBAL log_bin_trust_function_creators = 0;
DROP DATABASE IF EXISTS bug30269;
FLUSH STATUS;
...
...
mysql-test/suite/rpl/r/rpl_cross_version.result
0 → 100644
View file @
6fd71bf4
==== Initialize ====
Setting up fake replication from MYSQL_TEST_DIR/suite/binlog/std_data/binlog_old_version_4_1.000001
==== Test ====
start slave sql_thread;
==== a prove that the fake has been processed successfully ====
SELECT COUNT(*) - 17920 as zero FROM t3;
zero
0
==== Clean up ====
stop slave sql_thread;
Cleaning up after setup_fake_relay_log.inc
drop table t1, t3;
mysql-test/suite/rpl/r/rpl_events.result
View file @
6fd71bf4
set global event_scheduler=1;
stop slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
reset master;
reset slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
start slave;
SET @old_event_scheduler = @@global.event_scheduler;
set global event_scheduler=1;
set binlog_format=row;
DROP EVENT IF EXISTS test.justonce;
drop table if exists t1,t2;
...
...
@@ -34,7 +35,7 @@ db name status originator
test justonce SLAVESIDE_DISABLED 1
"Dropping event test.slave_once on the slave"
DROP EVENT IF EXISTS test.slave_once;
CREATE EVENT test.slave_once ON SCHEDULE EVERY 5 MINUTE DO
CREATE EVENT test.slave_once ON SCHEDULE EVERY 5 MINUTE
STARTS CURRENT_TIMESTAMP + INTERVAL 1 HOUR
DO
INSERT IGNORE INTO t1(id, c) VALUES (3, 'from slave_once');
"Checking event status on the slave for originator value = slave's server_id"
SELECT db, name, status, originator FROM mysql.event WHERE db = 'test' AND name = 'slave_once';
...
...
@@ -45,7 +46,7 @@ DROP EVENT IF EXISTS test.slave_once;
"Dropping event test.justonce on the master"
DROP EVENT IF EXISTS test.justonce;
"Creating event test.er on the master"
CREATE EVENT test.er ON SCHEDULE EVERY 3 SECOND DO
CREATE EVENT test.er ON SCHEDULE EVERY 3 SECOND
STARTS CURRENT_TIMESTAMP + INTERVAL 1 HOUR
DO
INSERT IGNORE INTO t1(id, c) VALUES (4, 'from er');
"Checking event status on the master"
SELECT db, name, status, originator, body FROM mysql.event WHERE db = 'test' AND name = 'er';
...
...
@@ -56,7 +57,7 @@ SELECT db, name, status, originator, body FROM mysql.event WHERE db = 'test' AND
db name status originator body
test er SLAVESIDE_DISABLED 1 INSERT IGNORE INTO t1(id, c) VALUES (4, 'from er')
"Altering event test.er on the master"
ALTER EVENT test.er ON SCHEDULE EVERY 5 SECOND DO
ALTER EVENT test.er ON SCHEDULE EVERY 5 SECOND
STARTS CURRENT_TIMESTAMP + INTERVAL 1 HOUR
DO
INSERT IGNORE INTO t1(id, c) VALUES (5, 'from alter er');
"Checking event status on the master"
SELECT db, name, status, originator, body FROM mysql.event WHERE db = 'test' AND name = 'er';
...
...
@@ -75,7 +76,7 @@ db name status originator
SELECT db, name, status, originator FROM mysql.event WHERE db = 'test';
db name status originator
"Creating event test.slave_terminate on the slave"
CREATE EVENT test.slave_terminate ON SCHEDULE EVERY 3 SECOND DO
CREATE EVENT test.slave_terminate ON SCHEDULE EVERY 3 SECOND
STARTS CURRENT_TIMESTAMP + INTERVAL 1 HOUR
DO
INSERT IGNORE INTO t1(id, c) VALUES (6, 'from slave_terminate');
"Checking event status on the slave"
SELECT db, name, status, originator FROM mysql.event WHERE db = 'test' AND name = 'slave_terminate';
...
...
@@ -123,7 +124,7 @@ db name status originator
test justonce SLAVESIDE_DISABLED 1
"Dropping event test.slave_once on the slave"
DROP EVENT IF EXISTS test.slave_once;
CREATE EVENT test.slave_once ON SCHEDULE EVERY 5 MINUTE DO
CREATE EVENT test.slave_once ON SCHEDULE EVERY 5 MINUTE
STARTS CURRENT_TIMESTAMP + INTERVAL 1 HOUR
DO
INSERT IGNORE INTO t1(id, c) VALUES (3, 'from slave_once');
"Checking event status on the slave for originator value = slave's server_id"
SELECT db, name, status, originator FROM mysql.event WHERE db = 'test' AND name = 'slave_once';
...
...
@@ -134,7 +135,7 @@ DROP EVENT IF EXISTS test.slave_once;
"Dropping event test.justonce on the master"
DROP EVENT IF EXISTS test.justonce;
"Creating event test.er on the master"
CREATE EVENT test.er ON SCHEDULE EVERY 3 SECOND DO
CREATE EVENT test.er ON SCHEDULE EVERY 3 SECOND
STARTS CURRENT_TIMESTAMP + INTERVAL 1 HOUR
DO
INSERT IGNORE INTO t1(id, c) VALUES (4, 'from er');
"Checking event status on the master"
SELECT db, name, status, originator, body FROM mysql.event WHERE db = 'test' AND name = 'er';
...
...
@@ -145,7 +146,7 @@ SELECT db, name, status, originator, body FROM mysql.event WHERE db = 'test' AND
db name status originator body
test er SLAVESIDE_DISABLED 1 INSERT IGNORE INTO t1(id, c) VALUES (4, 'from er')
"Altering event test.er on the master"
ALTER EVENT test.er ON SCHEDULE EVERY 5 SECOND DO
ALTER EVENT test.er ON SCHEDULE EVERY 5 SECOND
STARTS CURRENT_TIMESTAMP + INTERVAL 1 HOUR
DO
INSERT IGNORE INTO t1(id, c) VALUES (5, 'from alter er');
"Checking event status on the master"
SELECT db, name, status, originator, body FROM mysql.event WHERE db = 'test' AND name = 'er';
...
...
@@ -164,7 +165,7 @@ db name status originator
SELECT db, name, status, originator FROM mysql.event WHERE db = 'test';
db name status originator
"Creating event test.slave_terminate on the slave"
CREATE EVENT test.slave_terminate ON SCHEDULE EVERY 3 SECOND DO
CREATE EVENT test.slave_terminate ON SCHEDULE EVERY 3 SECOND
STARTS CURRENT_TIMESTAMP + INTERVAL 1 HOUR
DO
INSERT IGNORE INTO t1(id, c) VALUES (6, 'from slave_terminate');
"Checking event status on the slave"
SELECT db, name, status, originator FROM mysql.event WHERE db = 'test' AND name = 'slave_terminate';
...
...
@@ -190,4 +191,5 @@ select * from t28953;
END;|
ALTER EVENT event1 RENAME TO event2;
DROP EVENT event2;
SET @@global.event_scheduler= @old_event_scheduler;
DROP TABLE t28953;
mysql-test/suite/rpl/t/rpl_cross_version-master.opt
0 → 100644
View file @
6fd71bf4
--replicate-same-server-id --relay-log=slave-relay-bin
mysql-test/suite/rpl/t/rpl_cross_version.test
0 → 100644
View file @
6fd71bf4
# ==== Purpose ====
#
# Verify cross-version replication from an old master to the up-to-date slave
#
# ==== Implementation ====
#
# Feed to the slave server a binlog recorded on an old version master
# via setting up slave-to-slave replication. The latter is done by means of
# the opt file and include/setup_fake_relay_log.inc.
# The master's binlog is treated as a relay log that the SQL thread executes.
#
--
source
include
/
have_log_bin
.
inc
#
# Bug#31240 load data infile replication between (4.0 or 4.1) and 5.1 fails
#
--
echo
====
Initialize
====
# the relay log contains create t1, t3 tables and load data infile
--
let
$fake_relay_log
=
$MYSQL_TEST_DIR
/
suite
/
binlog
/
std_data
/
binlog_old_version_4_1
.
000001
--
source
include
/
setup_fake_relay_log
.
inc
--
echo
====
Test
====
start
slave
sql_thread
;
--
let
$slave_param
=
Exec_Master_Log_Pos
# end_log_pos of the last event of the relay log
--
let
$slave_param_value
=
149436
--
source
include
/
wait_for_slave_param
.
inc
--
echo
====
a
prove
that
the
fake
has
been
processed
successfully
====
SELECT
COUNT
(
*
)
-
17920
as
zero
FROM
t3
;
--
echo
====
Clean
up
====
stop
slave
sql_thread
;
--
source
include
/
cleanup_fake_relay_log
.
inc
drop
table
t1
,
t3
;
mysql-test/suite/rpl/t/rpl_events.test
View file @
6fd71bf4
...
...
@@ -5,11 +5,12 @@
# in both row based and statement based format #
##################################################################
set
global
event_scheduler
=
1
;
--
source
include
/
not_embedded
.
inc
--
source
include
/
master
-
slave
.
inc
SET
@
old_event_scheduler
=
@@
global
.
event_scheduler
;
set
global
event_scheduler
=
1
;
let
$engine_type
=
MyISAM
;
set
binlog_format
=
row
;
...
...
@@ -51,5 +52,6 @@ sync_slave_with_master;
# that there is no bad timing cauing it to try to access the table.
connection
master
;
SET
@@
global
.
event_scheduler
=
@
old_event_scheduler
;
DROP
TABLE
t28953
;
sync_slave_with_master
;
mysql-test/t/character_set_database_func.test
View file @
6fd71bf4
...
...
@@ -29,6 +29,7 @@
SET
@
global_character_set_database
=
@@
global
.
character_set_database
;
SET
@
session_character_set_database
=
@@
session
.
character_set_database
;
SET
@
session_character_set_server
=
@@
session
.
character_set_server
;
SET
@
global_character_set_server
=
@@
global
.
character_set_server
;
SET
@@
global
.
character_set_database
=
utf8
;
--
echo
'connect (con1,localhost,root,,,,)'
...
...
@@ -106,10 +107,30 @@ SELECT count(*) FROM t1 WHERE CHAR_LENGTH(a)>1;
DROP
TABLE
IF
EXISTS
t1
;
--
enable_warnings
#==============================================================================
--
echo
'Bug#27208: If no current database, character_set_database !=character_set_server'
#==============================================================================
SET
GLOBAL
character_set_server
=
latin5
;
connect
(
con2
,
localhost
,
root
,,);
connection
con2
;
CREATE
DATABASE
csdb
CHARACTER
SET
=
utf8
;
USE
csdb
;
DROP
DATABASE
csdb
;
SELECT
@@
character_set_database
;
connection
default
;
disconnect
con2
;
#restore
SET
@@
global
.
character_set_database
=
@
global_character_set_database
;
SET
@@
session
.
character_set_database
=
@
session_character_set_database
;
SET
@@
session
.
character_set_server
=
@
session_character_set_server
;
SET
@@
global
.
character_set_server
=
@
global_character_set_server
;
############################################################
# End of functionality Testing for character_set_database #
############################################################
mysql-test/t/date_formats.test
View file @
6fd71bf4
...
...
@@ -6,10 +6,15 @@
drop
table
if
exists
t1
;
--
enable_warnings
--
replace_result
ROW
<
format
>
STATEMENT
<
format
>
MIXED
<
format
>
SHOW
GLOBAL
VARIABLES
LIKE
"%e_format"
;
--
replace_result
ROW
<
format
>
STATEMENT
<
format
>
MIXED
<
format
>
SHOW
SESSION
VARIABLES
LIKE
"%e_format"
;
SELECT
variable_name
,
variable_value
FROM
information_schema
.
global_variables
WHERE
variable_name
IN
(
'date_format'
,
'datetime_format'
,
'time_format'
)
ORDER
BY
variable_name
;
SELECT
variable_name
,
variable_value
FROM
information_schema
.
session_variables
WHERE
variable_name
IN
(
'date_format'
,
'datetime_format'
,
'time_format'
)
ORDER
BY
variable_name
;
#
# Test setting a lot of different formats to see which formats are accepted and
...
...
@@ -36,8 +41,10 @@ set datetime_format= '%H:%i:%s.%f %m-%d-%Y';
set
datetime_format
=
'%h:%i:%s %p %Y-%m-%d'
;
set
datetime_format
=
'%h:%i:%s.%f %p %Y-%m-%d'
;
--
replace_result
ROW
<
format
>
STATEMENT
<
format
>
MIXED
<
format
>
SHOW
SESSION
VARIABLES
LIKE
"%e_format"
;
SELECT
variable_name
,
variable_value
FROM
information_schema
.
session_variables
WHERE
variable_name
IN
(
'date_format'
,
'datetime_format'
,
'time_format'
)
ORDER
BY
variable_name
;
--
error
1231
SET
time_format
=
'%h:%i:%s'
;
...
...
@@ -121,7 +128,7 @@ SET datetime_format=default;
# Test of str_to_date
#
# PS doesn't support fraction
of a seconds
# PS doesn't support fraction
s of a second
--
disable_ps_protocol
select
str_to_date
(
concat
(
'15-01-2001'
,
' 2:59:58.999'
),
concat
(
'%d-%m-%Y'
,
' '
,
'%H:%i:%s.%f'
));
...
...
mysql-test/t/having.test
View file @
6fd71bf4
...
...
@@ -432,3 +432,14 @@ select f1 from t1 having max(f1)=f1;
select
f1
from
t1
group
by
f1
having
max
(
f1
)
=
f1
;
set
session
sql_mode
=
''
;
drop
table
t1
;
#
# Bug #38637: COUNT DISTINCT prevents NULL testing in HAVING clause
#
CREATE
TABLE
t1
(
a
INT
,
b
INT
);
INSERT
INTO
t1
VALUES
(
1
,
1
),
(
2
,
2
),
(
3
,
NULL
);
SELECT
b
,
COUNT
(
DISTINCT
a
)
FROM
t1
GROUP
BY
b
HAVING
b
is
NULL
;
DROP
TABLE
t1
;
--
echo
End
of
5.0
tests
mysql-test/t/innodb-semi-consistent-master.opt
View file @
6fd71bf4
--innodb_lock
s_unsafe_for_binlog=true --innodb_lock
_wait_timeout=2
--innodb_lock_wait_timeout=2
mysql-test/t/innodb-semi-consistent.test
View file @
6fd71bf4
...
...
@@ -11,7 +11,7 @@ connect (a,localhost,root,,);
connect
(
b
,
localhost
,
root
,,);
connection
a
;
set
binlog_format
=
mixed
;
set
session
transaction
isolation
level
re
ad
committe
d
;
set
session
transaction
isolation
level
re
peatable
rea
d
;
create
table
t1
(
a
int
not
null
)
engine
=
innodb
DEFAULT
CHARSET
=
latin1
;
insert
into
t1
values
(
1
),(
2
),(
3
),(
4
),(
5
),(
6
),(
7
);
set
autocommit
=
0
;
...
...
@@ -19,13 +19,15 @@ set autocommit=0;
select
*
from
t1
where
a
=
3
lock
in
share
mode
;
connection
b
;
set
binlog_format
=
mixed
;
set
session
transaction
isolation
level
re
ad
committe
d
;
set
session
transaction
isolation
level
re
peatable
rea
d
;
set
autocommit
=
0
;
--
error
ER_LOCK_WAIT_TIMEOUT
update
t1
set
a
=
10
where
a
=
5
;
connection
a
;
commit
;
connection
b
;
# perform a semi-consisent read (and unlock non-matching rows)
set
session
transaction
isolation
level
read
committed
;
update
t1
set
a
=
10
where
a
=
5
;
connection
a
;
--
error
ER_LOCK_WAIT_TIMEOUT
...
...
@@ -33,6 +35,7 @@ select * from t1 where a=2 for update;
# this should lock the records (1),(2)
select
*
from
t1
where
a
=
2
limit
1
for
update
;
connection
b
;
# semi-consistent read will skip non-matching locked rows a=1, a=2
update
t1
set
a
=
11
where
a
=
6
;
--
error
ER_LOCK_WAIT_TIMEOUT
update
t1
set
a
=
12
where
a
=
2
;
...
...
mysql-test/t/myisampack.test
View file @
6fd71bf4
...
...
@@ -34,6 +34,8 @@ DROP TABLE t1;
#
# Bug#40949 Debug version of MySQL server crashes when run OPTIMIZE on compressed table.
# expanded with testcase for
# BUG#41574 - REPAIR TABLE: crashes for compressed tables
#
--
disable_warnings
drop
table
if
exists
t1
;
...
...
@@ -55,4 +57,5 @@ insert into t1 select * from t1;
flush
tables
;
--
exec
$MYISAMPACK
$MYSQLTEST_VARDIR
/
master
-
data
/
test
/
t1
optimize
table
t1
;
repair
table
t1
;
drop
table
t1
;
mysql-test/t/partition_innodb_semi_consistent.test
View file @
6fd71bf4
...
...
@@ -14,7 +14,7 @@ connect (a,localhost,root,,);
connect
(
b
,
localhost
,
root
,,);
connection
a
;
set
binlog_format
=
mixed
;
set
session
transaction
isolation
level
re
ad
committe
d
;
set
session
transaction
isolation
level
re
peatable
rea
d
;
create
table
t1
(
a
int
not
null
)
engine
=
innodb
DEFAULT
CHARSET
=
latin1
...
...
@@ -27,7 +27,7 @@ set autocommit=0;
select
*
from
t1
where
a
=
3
lock
in
share
mode
;
connection
b
;
set
binlog_format
=
mixed
;
set
session
transaction
isolation
level
re
ad
committe
d
;
set
session
transaction
isolation
level
re
peatable
rea
d
;
set
autocommit
=
0
;
--
error
ER_LOCK_WAIT_TIMEOUT
update
t1
set
a
=
10
where
a
=
5
;
...
...
@@ -35,6 +35,8 @@ connection a;
#DELETE FROM t1 WHERE a=5;
commit
;
connection
b
;
# perform a semi-consisent read (and unlock non-matching rows)
set
session
transaction
isolation
level
read
committed
;
update
t1
set
a
=
10
where
a
=
5
;
connection
a
;
--
error
ER_LOCK_WAIT_TIMEOUT
...
...
@@ -42,6 +44,7 @@ select * from t1 where a=2 for update;
# this should lock the records (1),(2)
select
*
from
t1
where
a
=
2
limit
1
for
update
;
connection
b
;
# semi-consistent read will skip non-matching locked rows a=1, a=2
update
t1
set
a
=
11
where
a
=
6
;
--
error
ER_LOCK_WAIT_TIMEOUT
update
t1
set
a
=
12
where
a
=
2
;
...
...
mysql-test/t/query_cache_notembedded.test
View file @
6fd71bf4
...
...
@@ -224,6 +224,38 @@ disconnect con2;
connection
default
;
set
GLOBAL
query_cache_size
=
0
;
#
# Bug#40264: Aborted cached query causes query to hang indefinitely on next cache hit
#
--
disable_warnings
DROP
TABLE
IF
EXISTS
t1
;
--
enable_warnings
FLUSH
STATUS
;
SET
GLOBAL
query_cache_size
=
1048576
;
CREATE
TABLE
t1
(
a
INT
);
INSERT
INTO
t1
VALUES
(
1
),(
2
),(
3
),(
4
),(
5
);
SHOW
STATUS
LIKE
'Qcache_queries_in_cache'
;
LOCK
TABLES
t1
WRITE
;
connect
(
con1
,
localhost
,
root
,,);
--
send
SELECT
*
FROM
t1
connection
default
;
let
$show_type
=
open
tables
where
`table`
=
't1'
and
in_use
=
2
;
let
$show_pattern
=
'%t1%2%'
;
--
source
include
/
wait_show_pattern
.
inc
dirty_close
con1
;
UNLOCK
TABLES
;
let
$show_type
=
open
tables
where
`table`
=
't1'
and
in_use
=
0
;
let
$show_pattern
=
'%t1%0%'
;
--
source
include
/
wait_show_pattern
.
inc
SHOW
STATUS
LIKE
'Qcache_queries_in_cache'
;
DROP
TABLE
t1
;
SET
GLOBAL
query_cache_size
=
default
;
# End of 5.0 tests
SET
GLOBAL
log_bin_trust_function_creators
=
0
;
#
...
...
sql/item.cc
View file @
6fd71bf4
...
...
@@ -2090,6 +2090,12 @@ bool Item_field::val_bool_result()
}
bool
Item_field
::
is_null_result
()
{
return
(
null_value
=
result_field
->
is_null
());
}
bool
Item_field
::
eq
(
const
Item
*
item
,
bool
binary_cmp
)
const
{
Item
*
real_item
=
((
Item
*
)
item
)
->
real_item
();
...
...
@@ -5800,6 +5806,15 @@ double Item_ref::val_result()
}
bool
Item_ref
::
is_null_result
()
{
if
(
result_field
)
return
(
null_value
=
result_field
->
is_null
());
return
is_null
();
}
longlong
Item_ref
::
val_int_result
()
{
if
(
result_field
)
...
...
@@ -5905,7 +5920,9 @@ String *Item_ref::val_str(String* tmp)
bool
Item_ref
::
is_null
()
{
DBUG_ASSERT
(
fixed
);
return
(
*
ref
)
->
is_null
();
bool
tmp
=
(
*
ref
)
->
is_null_result
();
null_value
=
(
*
ref
)
->
null_value
;
return
tmp
;
}
...
...
sql/item.h
View file @
6fd71bf4
...
...
@@ -729,6 +729,7 @@ class Item {
virtual
my_decimal
*
val_decimal_result
(
my_decimal
*
val
)
{
return
val_decimal
(
val
);
}
virtual
bool
val_bool_result
()
{
return
val_bool
();
}
virtual
bool
is_null_result
()
{
return
is_null
();
}
/* bit map of tables used by item */
virtual
table_map
used_tables
()
const
{
return
(
table_map
)
0L
;
}
...
...
@@ -1436,6 +1437,7 @@ class Item_field :public Item_ident
String
*
str_result
(
String
*
tmp
);
my_decimal
*
val_decimal_result
(
my_decimal
*
);
bool
val_bool_result
();
bool
is_null_result
();
bool
send
(
Protocol
*
protocol
,
String
*
str_arg
);
void
reset_field
(
Field
*
f
);
bool
fix_fields
(
THD
*
,
Item
**
);
...
...
@@ -2178,6 +2180,7 @@ class Item_ref :public Item_ident
String
*
str_result
(
String
*
tmp
);
my_decimal
*
val_decimal_result
(
my_decimal
*
);
bool
val_bool_result
();
bool
is_null_result
();
bool
send
(
Protocol
*
prot
,
String
*
tmp
);
void
make_field
(
Send_field
*
field
);
bool
fix_fields
(
THD
*
,
Item
**
);
...
...
sql/item_func.cc
View file @
6fd71bf4
...
...
@@ -4307,6 +4307,15 @@ my_decimal *Item_func_set_user_var::val_decimal_result(my_decimal *val)
}
bool
Item_func_set_user_var
::
is_null_result
()
{
DBUG_ASSERT
(
fixed
==
1
);
check
(
TRUE
);
update
();
// Store expression
return
is_null
();
}
void
Item_func_set_user_var
::
print
(
String
*
str
,
enum_query_type
query_type
)
{
str
->
append
(
STRING_WITH_LEN
(
"(@"
));
...
...
sql/item_func.h
View file @
6fd71bf4
...
...
@@ -1335,6 +1335,7 @@ class Item_func_set_user_var :public Item_func
longlong
val_int_result
();
String
*
str_result
(
String
*
str
);
my_decimal
*
val_decimal_result
(
my_decimal
*
);
bool
is_null_result
();
bool
update_hash
(
void
*
ptr
,
uint
length
,
enum
Item_result
type
,
CHARSET_INFO
*
cs
,
Derivation
dv
,
bool
unsigned_arg
);
bool
send
(
Protocol
*
protocol
,
String
*
str_arg
);
...
...
sql/log_event.cc
View file @
6fd71bf4
...
...
@@ -5945,8 +5945,15 @@ void Create_file_log_event::pack_info(Protocol *protocol)
#endif
/* defined(HAVE_REPLICATION) && !defined(MYSQL_CLIENT) */
/*
/*
*
Create_file_log_event::do_apply_event()
Constructor for Create_file_log_event to intantiate an event
from the relay log on the slave.
@retval
0 Success
@retval
1 Failure
*/
#if defined(HAVE_REPLICATION) && !defined(MYSQL_CLIENT)
...
...
@@ -6015,7 +6022,7 @@ int Create_file_log_event::do_apply_event(Relay_log_info const *rli)
if
(
fd
>=
0
)
my_close
(
fd
,
MYF
(
0
));
thd_proc_info
(
thd
,
0
);
return
error
=
=
0
;
return
error
!
=
0
;
}
#endif
/* defined(HAVE_REPLICATION) && !defined(MYSQL_CLIENT) */
...
...
sql/sql_cache.cc
View file @
6fd71bf4
...
...
@@ -781,6 +781,9 @@ void query_cache_end_of_result(THD *thd)
if
(
thd
->
net
.
query_cache_query
==
0
)
DBUG_VOID_RETURN
;
/* Ensure that only complete results are cached. */
DBUG_ASSERT
(
thd
->
main_da
.
is_eof
());
if
(
thd
->
killed
)
{
query_cache_abort
(
&
thd
->
net
);
...
...
storage/innobase/handler/ha_innodb.cc
View file @
6fd71bf4
...
...
@@ -128,7 +128,7 @@ static my_bool innobase_file_per_table = FALSE;
static
my_bool
innobase_locks_unsafe_for_binlog
=
FALSE
;
static
my_bool
innobase_rollback_on_timeout
=
FALSE
;
static
my_bool
innobase_create_status_file
=
FALSE
;
static
my_bool
innobase_stats_on_metadata
=
TRUE
;
static
my_bool
innobase_stats_on_metadata
=
TRUE
;
static
my_bool
innobase_adaptive_hash_index
=
TRUE
;
static
char
*
internal_innobase_data_file_path
=
NULL
;
...
...
@@ -461,7 +461,7 @@ innodb_srv_conc_exit_innodb(
/*========================*/
trx_t
*
trx
)
/* in: transaction handle */
{
if
(
UNIV_LIKELY
(
!
srv_thread_concurrency
))
{
if
(
UNIV_LIKELY
(
!
trx
->
declared_to_be_inside_innodb
))
{
return
;
}
...
...
@@ -1713,8 +1713,6 @@ innobase_init(
srv_max_n_open_files
=
(
ulint
)
innobase_open_files
;
srv_innodb_status
=
(
ibool
)
innobase_create_status_file
;
srv_stats_on_metadata
=
(
ibool
)
innobase_stats_on_metadata
;
srv_use_adaptive_hash_indexes
=
(
ibool
)
innobase_adaptive_hash_index
;
...
...
@@ -2510,6 +2508,8 @@ ha_innobase::open(
prebuilt
=
row_create_prebuilt
(
ib_table
);
prebuilt
->
mysql_row_len
=
table
->
s
->
reclength
;
prebuilt
->
default_rec
=
table
->
s
->
default_values
;
ut_ad
(
prebuilt
->
default_rec
);
/* Looks like MySQL-3.23 sometimes has primary key number != 0 */
...
...
@@ -3687,7 +3687,7 @@ ha_innobase::write_row(
/* We don't want to mask autoinc overflow errors. */
if
(
prebuilt
->
autoinc_error
!=
DB_SUCCESS
)
{
error
=
prebuilt
->
autoinc_error
;
error
=
(
int
)
prebuilt
->
autoinc_error
;
goto
report_error
;
}
...
...
@@ -4129,7 +4129,8 @@ ha_innobase::unlock_row(void)
switch
(
prebuilt
->
row_read_type
)
{
case
ROW_READ_WITH_LOCKS
:
if
(
!
srv_locks_unsafe_for_binlog
||
prebuilt
->
trx
->
isolation_level
==
TRX_ISO_READ_COMMITTED
)
{
&&
prebuilt
->
trx
->
isolation_level
!=
TRX_ISO_READ_COMMITTED
)
{
break
;
}
/* fall through */
...
...
@@ -5976,7 +5977,7 @@ ha_innobase::info(
ib_table
=
prebuilt
->
table
;
if
(
flag
&
HA_STATUS_TIME
)
{
if
(
srv
_stats_on_metadata
)
{
if
(
innobase
_stats_on_metadata
)
{
/* In sql_show we call with this flag: update
then statistics so that they are up-to-date */
...
...
@@ -6024,11 +6025,13 @@ ha_innobase::info(
n_rows
++
;
}
/* Fix bug#29507: TRUNCATE shows too many rows affected.
Do not show the estimates for TRUNCATE command. */
/* Fix bug#40386: Not flushing query cache after truncate.
n_rows can not be 0 unless the table is empty, set to 1
instead. The original problem of bug#29507 is actually
fixed in the server code. */
if
(
thd_sql_command
(
user_thd
)
==
SQLCOM_TRUNCATE
)
{
n_rows
=
0
;
n_rows
=
1
;
/* We need to reset the prebuilt value too, otherwise
checks for values greater than the last value written
...
...
@@ -8236,7 +8239,7 @@ static MYSQL_SYSVAR_BOOL(status_file, innobase_create_status_file,
NULL
,
NULL
,
FALSE
);
static
MYSQL_SYSVAR_BOOL
(
stats_on_metadata
,
innobase_stats_on_metadata
,
PLUGIN_VAR_OPCMDARG
|
PLUGIN_VAR_NOSYSVAR
,
PLUGIN_VAR_OPCMDARG
,
"Enable statistics gathering for metadata commands such as SHOW TABLE STATUS (on by default)"
,
NULL
,
NULL
,
TRUE
);
...
...
storage/innobase/include/data0type.ic
View file @
6fd71bf4
...
...
@@ -558,5 +558,5 @@ dtype_get_sql_null_size(
const dtype_t* type) /* in: type */
{
return(dtype_get_fixed_size_low(type->mtype, type->prtype, type->len,
type->mbminlen, type->mbmaxlen)
> 0
);
type->mbminlen, type->mbmaxlen));
}
storage/innobase/include/hash0hash.ic
View file @
6fd71bf4
...
...
@@ -58,7 +58,8 @@ hash_get_mutex_no(
hash_table_t* table, /* in: hash table */
ulint fold) /* in: fold */
{
return(ut_2pow_remainder(fold, table->n_mutexes));
return(ut_2pow_remainder(hash_calc_hash(fold, table),
table->n_mutexes));
}
/****************************************************************
...
...
storage/innobase/include/row0mysql.h
View file @
6fd71bf4
...
...
@@ -594,6 +594,8 @@ struct row_prebuilt_struct {
byte
*
ins_upd_rec_buff
;
/* buffer for storing data converted
to the Innobase format from the MySQL
format */
const
byte
*
default_rec
;
/* the default values of all columns
(a "default row") in MySQL format */
ulint
hint_need_to_fetch_extra_cols
;
/* normally this is set to 0; if this
is set to ROW_RETRIEVE_PRIMARY_KEY,
...
...
storage/innobase/include/srv0srv.h
View file @
6fd71bf4
...
...
@@ -124,8 +124,6 @@ extern ulint srv_fast_shutdown; /* If this is 1, do not do a
transactions). */
extern
ibool
srv_innodb_status
;
extern
ibool
srv_stats_on_metadata
;
extern
ibool
srv_use_doublewrite_buf
;
extern
ibool
srv_use_checksums
;
...
...
storage/innobase/row/row0mysql.c
View file @
6fd71bf4
...
...
@@ -342,7 +342,7 @@ row_mysql_store_col_in_innobase_format(
/* In some cases we strip trailing spaces from UTF-8 and other
multibyte charsets, from FIXED-length CHAR columns, to save
space. UTF-8 would otherwise normally use 3 * the string length
bytes to store a
latin1
string! */
bytes to store a
n ASCII
string! */
/* We assume that this CHAR field is encoded in a
variable-length character set where spaces have
...
...
@@ -620,6 +620,7 @@ row_create_prebuilt(
prebuilt
->
ins_node
=
NULL
;
prebuilt
->
ins_upd_rec_buff
=
NULL
;
prebuilt
->
default_rec
=
NULL
;
prebuilt
->
upd_node
=
NULL
;
prebuilt
->
ins_graph
=
NULL
;
...
...
@@ -1485,12 +1486,13 @@ row_unlock_for_mysql(
ut_ad
(
prebuilt
&&
trx
);
ut_ad
(
trx
->
mysql_thread_id
==
os_thread_get_curr_id
());
if
(
!
(
srv_locks_unsafe_for_binlog
||
trx
->
isolation_level
==
TRX_ISO_READ_COMMITTED
))
{
if
(
UNIV_UNLIKELY
(
!
srv_locks_unsafe_for_binlog
&&
trx
->
isolation_level
!=
TRX_ISO_READ_COMMITTED
))
{
fprintf
(
stderr
,
"InnoDB: Error: calling row_unlock_for_mysql though
\n
"
"InnoDB:
srv
_locks_unsafe_for_binlog is FALSE and
\n
"
"InnoDB:
innodb
_locks_unsafe_for_binlog is FALSE and
\n
"
"InnoDB: this session is not using"
" READ COMMITTED isolation level.
\n
"
);
...
...
storage/innobase/row/row0sel.c
View file @
6fd71bf4
...
...
@@ -2597,6 +2597,7 @@ row_sel_store_mysql_rec(
ulint
i
;
ut_ad
(
prebuilt
->
mysql_template
);
ut_ad
(
prebuilt
->
default_rec
);
ut_ad
(
rec_offs_validate
(
rec
,
NULL
,
offsets
));
if
(
UNIV_LIKELY_NULL
(
prebuilt
->
blob_heap
))
{
...
...
@@ -2683,58 +2684,14 @@ row_sel_store_mysql_rec(
&=
~
(
byte
)
templ
->
mysql_null_bit_mask
;
}
}
else
{
/* MySQL seems to assume the field for an SQL NULL
value is set to zero or space. Not taking this into
account caused seg faults with NULL BLOB fields, and
bug number 154 in the MySQL bug database: GROUP BY
and DISTINCT could treat NULL values inequal. */
int
pad_char
;
/* MySQL assumes that the field for an SQL
NULL value is set to the default value. */
mysql_rec
[
templ
->
mysql_null_byte_offset
]
|=
(
byte
)
templ
->
mysql_null_bit_mask
;
switch
(
templ
->
type
)
{
case
DATA_VARCHAR
:
case
DATA_BINARY
:
case
DATA_VARMYSQL
:
if
(
templ
->
mysql_type
==
DATA_MYSQL_TRUE_VARCHAR
)
{
/* This is a >= 5.0.3 type
true VARCHAR. Zero the field. */
pad_char
=
0x00
;
break
;
}
/* Fall through */
case
DATA_CHAR
:
case
DATA_FIXBINARY
:
case
DATA_MYSQL
:
/* MySQL pads all string types (except
BLOB, TEXT and true VARCHAR) with space. */
if
(
UNIV_UNLIKELY
(
templ
->
mbminlen
==
2
))
{
/* Treat UCS2 as a special case. */
data
=
mysql_rec
+
templ
->
mysql_col_offset
;
len
=
templ
->
mysql_col_len
;
/* There are two UCS2 bytes per char,
so the length has to be even. */
ut_a
(
!
(
len
&
1
));
/* Pad with 0x0020. */
while
(
len
)
{
*
data
++
=
0x00
;
*
data
++
=
0x20
;
len
-=
2
;
}
continue
;
}
pad_char
=
0x20
;
break
;
default:
pad_char
=
0x00
;
break
;
}
ut_ad
(
!
pad_char
||
templ
->
mbminlen
==
1
);
memset
(
mysql_rec
+
templ
->
mysql_col_offset
,
pad_char
,
templ
->
mysql_col_len
);
memcpy
(
mysql_rec
+
templ
->
mysql_col_offset
,
prebuilt
->
default_rec
+
templ
->
mysql_col_offset
,
templ
->
mysql_col_len
);
}
}
...
...
storage/innobase/srv/srv0srv.c
View file @
6fd71bf4
...
...
@@ -283,13 +283,16 @@ ulong srv_commit_concurrency = 0;
os_fast_mutex_t
srv_conc_mutex
;
/* this mutex protects srv_conc data
structures */
lint
srv_conc_n_threads
=
0
;
/* number of OS threads currently
inside InnoDB; it is not an error
if this drops temporarily below zero
because we do not demand that every
thread increments this, but a thread
waiting for a lock decrements this
temporarily */
lint
srv_conc_n_threads
=
0
;
/* number of transactions that
have declared_to_be_inside_innodb
set. It used to be a non-error
for this value to drop below
zero temporarily. This is no
longer true. We'll, however,
keep the lint datatype to add
assertions to catch any corner
cases that we may have
missed. */
ulint
srv_conc_n_waiting_threads
=
0
;
/* number of OS threads waiting in the
FIFO for a permission to enter InnoDB
*/
...
...
@@ -328,8 +331,6 @@ ulint srv_fast_shutdown = 0;
/* Generate a innodb_status.<pid> file */
ibool
srv_innodb_status
=
FALSE
;
ibool
srv_stats_on_metadata
=
TRUE
;
ibool
srv_use_doublewrite_buf
=
TRUE
;
ibool
srv_use_checksums
=
TRUE
;
...
...
@@ -1022,6 +1023,8 @@ srv_conc_enter_innodb(
return
;
}
ut_ad
(
srv_conc_n_threads
>=
0
);
if
(
srv_conc_n_threads
<
(
lint
)
srv_thread_concurrency
)
{
srv_conc_n_threads
++
;
...
...
@@ -1148,6 +1151,8 @@ srv_conc_force_enter_innodb(
return
;
}
ut_ad
(
srv_conc_n_threads
>=
0
);
os_fast_mutex_lock
(
&
srv_conc_mutex
);
srv_conc_n_threads
++
;
...
...
@@ -1169,11 +1174,6 @@ srv_conc_force_exit_innodb(
{
srv_conc_slot_t
*
slot
=
NULL
;
if
(
UNIV_LIKELY
(
!
srv_thread_concurrency
))
{
return
;
}
if
(
trx
->
mysql_thd
!=
NULL
&&
thd_is_replication_slave_thread
(
trx
->
mysql_thd
))
{
...
...
@@ -1187,6 +1187,7 @@ srv_conc_force_exit_innodb(
os_fast_mutex_lock
(
&
srv_conc_mutex
);
ut_ad
(
srv_conc_n_threads
>
0
);
srv_conc_n_threads
--
;
trx
->
declared_to_be_inside_innodb
=
FALSE
;
trx
->
n_tickets_to_enter_innodb
=
0
;
...
...
storage/innobase/trx/trx0trx.c
View file @
6fd71bf4
...
...
@@ -287,6 +287,10 @@ trx_free(
"InnoDB: inside InnoDB.
\n
"
,
stderr
);
trx_print
(
stderr
,
trx
,
600
);
putc
(
'\n'
,
stderr
);
/* This is an error but not a fatal error. We must keep
the counters like srv_conc_n_threads accurate. */
srv_conc_force_exit_innodb
(
trx
);
}
if
(
trx
->
n_mysql_tables_in_use
!=
0
...
...
storage/innobase/trx/trx0undo.c
View file @
6fd71bf4
...
...
@@ -410,7 +410,7 @@ trx_undo_seg_create(
if
(
slot_no
==
ULINT_UNDEFINED
)
{
ut_print_timestamp
(
stderr
);
fprintf
(
stderr
,
"InnoDB: Warning: cannot find a free slot for"
"
InnoDB: Warning: cannot find a free slot for"
" an undo log. Do you have too
\n
"
"InnoDB: many active transactions"
" running concurrently?
\n
"
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment