Commit bb9a3f0c authored by unknown's avatar unknown

XtraDB after-merge fixes.

Fixes to get the test suite to run without failures.

mysql-test/r/information_schema.result:
  Additional variables available now.
  Sort output to avoid depending on engine order.
mysql-test/r/information_schema_all_engines.result:
  More variables now.
mysql-test/r/innodb-autoinc.result:
  Avoid picking up pbxt variables in result
mysql-test/r/innodb-index.result:
  Save state to not corrupt following testcases.
  Suppress an expected warning.
mysql-test/r/innodb-zip.result:
  Work around a problem with dependency on zlib version
mysql-test/r/innodb.result:
  Checksums have changed in Maria.
  Save and restore server state to not corrupt following testcases.
mysql-test/r/innodb_bug36169.result:
  Save and restore server state to not corrupt following testcases.
mysql-test/r/innodb_xtradb_bug317074.result:
  Save and restore server state to not corrupt following testcases.
mysql-test/r/row-checksum-old.result:
  Update result file
mysql-test/r/row-checksum.result:
  Update result file
mysql-test/t/information_schema.test:
  Sort output to avoid depending on engine order.
mysql-test/t/innodb-analyze.test:
  Save and restore server state to not corrupt following testcases.
mysql-test/t/innodb-autoinc.test:
  Save and restore server state to not corrupt following testcases.
mysql-test/t/innodb-index.test:
  Save state to not corrupt following testcases.
  Suppress an expected warning.
mysql-test/t/innodb-zip.test:
  Work around a problem with dependency on zlib version
mysql-test/t/innodb.test:
  Save and restore server state to not corrupt following testcases.
  Update --replace statements for new mysql-test-run
mysql-test/t/innodb_bug34300.test:
  Save and restore server state to not corrupt following testcases.
mysql-test/t/innodb_bug36169.test:
  Save and restore server state to not corrupt following testcases.
mysql-test/t/innodb_bug36172.test:
  Save and restore server state to not corrupt following testcases.
mysql-test/t/innodb_xtradb_bug317074.test:
  Save and restore server state to not corrupt following testcases.
mysql-test/t/partition_innodb.test:
  Fix regexps to work with new SHOW INNODB STATUS output.
mysys/thr_mutex.c:
  Initialize mutex deadlock detection lazily.
  This allows to test XtraDB, which initializes huge amounts of mutexes without using any but a few of them.
storage/xtradb/ibuf/ibuf0ibuf.c:
  Fix problem where value of INNODB_IBUF_MAX_SIZE would depend on the alignment of memory
  allocated by the buffer pool.
storage/xtradb/include/sync0rw.h:
  Fix XtraDB to compile without GCC atomic operation intrinsics (performance may suffer
  when they are not available though).
storage/xtradb/include/sync0rw.ic:
  Fix XtraDB to compile without GCC atomic operation intrinsics (performance may suffer
  when they are not available though).
storage/xtradb/include/univ.i:
  Fix for MariaDB
storage/xtradb/setup.sh:
  Remove no longer needed file from XtraDB.
storage/xtradb/srv/srv0start.c:
  Fix for MariaDB
parent a03c9ff5
...@@ -42,7 +42,7 @@ WHERE table_schema IN ('mysql', 'INFORMATION_SCHEMA', 'test', 'mysqltest') AND ...@@ -42,7 +42,7 @@ WHERE table_schema IN ('mysql', 'INFORMATION_SCHEMA', 'test', 'mysqltest') AND
table_name<>'ndb_binlog_index' AND table_name<>'ndb_binlog_index' AND
table_name<>'ndb_apply_status' AND table_name<>'ndb_apply_status' AND
NOT (table_schema = 'INFORMATION_SCHEMA' AND table_name LIKE 'PBXT_%'); NOT (table_schema = 'INFORMATION_SCHEMA' AND table_name LIKE 'PBXT_%');
select * from v1; select * from v1 ORDER BY c COLLATE utf8_bin;
c c
CHARACTER_SETS CHARACTER_SETS
COLLATIONS COLLATIONS
...@@ -54,6 +54,17 @@ EVENTS ...@@ -54,6 +54,17 @@ EVENTS
FILES FILES
GLOBAL_STATUS GLOBAL_STATUS
GLOBAL_VARIABLES GLOBAL_VARIABLES
INNODB_BUFFER_POOL_PAGES
INNODB_BUFFER_POOL_PAGES_BLOB
INNODB_BUFFER_POOL_PAGES_INDEX
INNODB_CMP
INNODB_CMPMEM
INNODB_CMPMEM_RESET
INNODB_CMP_RESET
INNODB_LOCKS
INNODB_LOCK_WAITS
INNODB_RSEG
INNODB_TRX
KEY_COLUMN_USAGE KEY_COLUMN_USAGE
PARTITIONS PARTITIONS
PLUGINS PLUGINS
...@@ -72,6 +83,7 @@ TABLE_PRIVILEGES ...@@ -72,6 +83,7 @@ TABLE_PRIVILEGES
TRIGGERS TRIGGERS
USER_PRIVILEGES USER_PRIVILEGES
VIEWS VIEWS
XTRADB_ENHANCEMENTS
columns_priv columns_priv
db db
event event
...@@ -87,6 +99,11 @@ proc ...@@ -87,6 +99,11 @@ proc
procs_priv procs_priv
servers servers
slow_log slow_log
t1
t2
t3
t4
t5
tables_priv tables_priv
time_zone time_zone
time_zone_leap_second time_zone_leap_second
...@@ -94,11 +111,6 @@ time_zone_name ...@@ -94,11 +111,6 @@ time_zone_name
time_zone_transition time_zone_transition
time_zone_transition_type time_zone_transition_type
user user
t1
t4
t2
t3
t5
v1 v1
select c,table_name from v1 select c,table_name from v1
inner join information_schema.TABLES v2 on (v1.c=v2.table_name) inner join information_schema.TABLES v2 on (v1.c=v2.table_name)
...@@ -800,6 +812,8 @@ TABLES CREATE_TIME datetime ...@@ -800,6 +812,8 @@ TABLES CREATE_TIME datetime
TABLES UPDATE_TIME datetime TABLES UPDATE_TIME datetime
TABLES CHECK_TIME datetime TABLES CHECK_TIME datetime
TRIGGERS CREATED datetime TRIGGERS CREATED datetime
INNODB_TRX trx_started datetime
INNODB_TRX trx_wait_started datetime
event execute_at datetime event execute_at datetime
event last_executed datetime event last_executed datetime
event starts datetime event starts datetime
...@@ -848,6 +862,7 @@ TABLES TABLE_NAME select ...@@ -848,6 +862,7 @@ TABLES TABLE_NAME select
TABLE_CONSTRAINTS TABLE_NAME select TABLE_CONSTRAINTS TABLE_NAME select
TABLE_PRIVILEGES TABLE_NAME select TABLE_PRIVILEGES TABLE_NAME select
VIEWS TABLE_NAME select VIEWS TABLE_NAME select
INNODB_BUFFER_POOL_PAGES_INDEX table_name select
delete from mysql.user where user='mysqltest_4'; delete from mysql.user where user='mysqltest_4';
delete from mysql.db where user='mysqltest_4'; delete from mysql.db where user='mysqltest_4';
flush privileges; flush privileges;
...@@ -1223,12 +1238,12 @@ DROP PROCEDURE p1; ...@@ -1223,12 +1238,12 @@ DROP PROCEDURE p1;
DROP USER mysql_bug20230@localhost; DROP USER mysql_bug20230@localhost;
SELECT MAX(table_name) FROM information_schema.tables WHERE table_schema IN ('mysql', 'INFORMATION_SCHEMA', 'test'); SELECT MAX(table_name) FROM information_schema.tables WHERE table_schema IN ('mysql', 'INFORMATION_SCHEMA', 'test');
MAX(table_name) MAX(table_name)
VIEWS XTRADB_ENHANCEMENTS
SELECT table_name from information_schema.tables SELECT table_name from information_schema.tables
WHERE table_name=(SELECT MAX(table_name) WHERE table_name=(SELECT MAX(table_name)
FROM information_schema.tables WHERE table_schema IN ('mysql', 'INFORMATION_SCHEMA', 'test')); FROM information_schema.tables WHERE table_schema IN ('mysql', 'INFORMATION_SCHEMA', 'test'));
table_name table_name
VIEWS XTRADB_ENHANCEMENTS
DROP TABLE IF EXISTS bug23037; DROP TABLE IF EXISTS bug23037;
DROP FUNCTION IF EXISTS get_value; DROP FUNCTION IF EXISTS get_value;
SELECT COLUMN_NAME, MD5(COLUMN_DEFAULT), LENGTH(COLUMN_DEFAULT) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='bug23037'; SELECT COLUMN_NAME, MD5(COLUMN_DEFAULT), LENGTH(COLUMN_DEFAULT) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='bug23037';
......
...@@ -29,6 +29,18 @@ TABLE_PRIVILEGES ...@@ -29,6 +29,18 @@ TABLE_PRIVILEGES
TRIGGERS TRIGGERS
USER_PRIVILEGES USER_PRIVILEGES
VIEWS VIEWS
INNODB_BUFFER_POOL_PAGES_INDEX
INNODB_RSEG
INNODB_LOCKS
INNODB_BUFFER_POOL_PAGES
XTRADB_ENHANCEMENTS
INNODB_TRX
INNODB_BUFFER_POOL_PAGES_BLOB
INNODB_LOCK_WAITS
INNODB_CMP_RESET
INNODB_CMP
INNODB_CMPMEM_RESET
INNODB_CMPMEM
PBXT_STATISTICS PBXT_STATISTICS
SELECT t.table_name, c1.column_name SELECT t.table_name, c1.column_name
FROM information_schema.tables t FROM information_schema.tables t
...@@ -73,6 +85,18 @@ TABLE_PRIVILEGES TABLE_SCHEMA ...@@ -73,6 +85,18 @@ TABLE_PRIVILEGES TABLE_SCHEMA
TRIGGERS TRIGGER_SCHEMA TRIGGERS TRIGGER_SCHEMA
USER_PRIVILEGES GRANTEE USER_PRIVILEGES GRANTEE
VIEWS TABLE_SCHEMA VIEWS TABLE_SCHEMA
INNODB_BUFFER_POOL_PAGES_INDEX schema_name
INNODB_RSEG rseg_id
INNODB_LOCKS lock_id
INNODB_BUFFER_POOL_PAGES page_type
XTRADB_ENHANCEMENTS name
INNODB_TRX trx_id
INNODB_BUFFER_POOL_PAGES_BLOB space_id
INNODB_LOCK_WAITS requesting_trx_id
INNODB_CMP_RESET page_size
INNODB_CMP page_size
INNODB_CMPMEM_RESET page_size
INNODB_CMPMEM page_size
PBXT_STATISTICS ID PBXT_STATISTICS ID
SELECT t.table_name, c1.column_name SELECT t.table_name, c1.column_name
FROM information_schema.tables t FROM information_schema.tables t
...@@ -117,6 +141,18 @@ TABLE_PRIVILEGES TABLE_SCHEMA ...@@ -117,6 +141,18 @@ TABLE_PRIVILEGES TABLE_SCHEMA
TRIGGERS TRIGGER_SCHEMA TRIGGERS TRIGGER_SCHEMA
USER_PRIVILEGES GRANTEE USER_PRIVILEGES GRANTEE
VIEWS TABLE_SCHEMA VIEWS TABLE_SCHEMA
INNODB_BUFFER_POOL_PAGES_INDEX schema_name
INNODB_RSEG rseg_id
INNODB_LOCKS lock_id
INNODB_BUFFER_POOL_PAGES page_type
XTRADB_ENHANCEMENTS name
INNODB_TRX trx_id
INNODB_BUFFER_POOL_PAGES_BLOB space_id
INNODB_LOCK_WAITS requesting_trx_id
INNODB_CMP_RESET page_size
INNODB_CMP page_size
INNODB_CMPMEM_RESET page_size
INNODB_CMPMEM page_size
PBXT_STATISTICS ID PBXT_STATISTICS ID
select 1 as f1 from information_schema.tables where "CHARACTER_SETS"= select 1 as f1 from information_schema.tables where "CHARACTER_SETS"=
(select cast(table_name as char) from information_schema.tables (select cast(table_name as char) from information_schema.tables
...@@ -149,6 +185,17 @@ EVENTS information_schema.EVENTS 1 ...@@ -149,6 +185,17 @@ EVENTS information_schema.EVENTS 1
FILES information_schema.FILES 1 FILES information_schema.FILES 1
GLOBAL_STATUS information_schema.GLOBAL_STATUS 1 GLOBAL_STATUS information_schema.GLOBAL_STATUS 1
GLOBAL_VARIABLES information_schema.GLOBAL_VARIABLES 1 GLOBAL_VARIABLES information_schema.GLOBAL_VARIABLES 1
INNODB_BUFFER_POOL_PAGES information_schema.INNODB_BUFFER_POOL_PAGES 1
INNODB_BUFFER_POOL_PAGES_BLOB information_schema.INNODB_BUFFER_POOL_PAGES_BLOB 1
INNODB_BUFFER_POOL_PAGES_INDEX information_schema.INNODB_BUFFER_POOL_PAGES_INDEX 1
INNODB_CMP information_schema.INNODB_CMP 1
INNODB_CMPMEM information_schema.INNODB_CMPMEM 1
INNODB_CMPMEM_RESET information_schema.INNODB_CMPMEM_RESET 1
INNODB_CMP_RESET information_schema.INNODB_CMP_RESET 1
INNODB_LOCKS information_schema.INNODB_LOCKS 1
INNODB_LOCK_WAITS information_schema.INNODB_LOCK_WAITS 1
INNODB_RSEG information_schema.INNODB_RSEG 1
INNODB_TRX information_schema.INNODB_TRX 1
KEY_COLUMN_USAGE information_schema.KEY_COLUMN_USAGE 1 KEY_COLUMN_USAGE information_schema.KEY_COLUMN_USAGE 1
PARTITIONS information_schema.PARTITIONS 1 PARTITIONS information_schema.PARTITIONS 1
PBXT_STATISTICS information_schema.PBXT_STATISTICS 1 PBXT_STATISTICS information_schema.PBXT_STATISTICS 1
...@@ -168,6 +215,7 @@ TABLE_PRIVILEGES information_schema.TABLE_PRIVILEGES 1 ...@@ -168,6 +215,7 @@ TABLE_PRIVILEGES information_schema.TABLE_PRIVILEGES 1
TRIGGERS information_schema.TRIGGERS 1 TRIGGERS information_schema.TRIGGERS 1
USER_PRIVILEGES information_schema.USER_PRIVILEGES 1 USER_PRIVILEGES information_schema.USER_PRIVILEGES 1
VIEWS information_schema.VIEWS 1 VIEWS information_schema.VIEWS 1
XTRADB_ENHANCEMENTS information_schema.XTRADB_ENHANCEMENTS 1
Database: information_schema Database: information_schema
+---------------------------------------+ +---------------------------------------+
| Tables | | Tables |
...@@ -200,6 +248,18 @@ Database: information_schema ...@@ -200,6 +248,18 @@ Database: information_schema
| TRIGGERS | | TRIGGERS |
| USER_PRIVILEGES | | USER_PRIVILEGES |
| VIEWS | | VIEWS |
| INNODB_BUFFER_POOL_PAGES_INDEX |
| INNODB_RSEG |
| INNODB_LOCKS |
| INNODB_BUFFER_POOL_PAGES |
| XTRADB_ENHANCEMENTS |
| INNODB_TRX |
| INNODB_BUFFER_POOL_PAGES_BLOB |
| INNODB_LOCK_WAITS |
| INNODB_CMP_RESET |
| INNODB_CMP |
| INNODB_CMPMEM_RESET |
| INNODB_CMPMEM |
| PBXT_STATISTICS | | PBXT_STATISTICS |
+---------------------------------------+ +---------------------------------------+
Database: INFORMATION_SCHEMA Database: INFORMATION_SCHEMA
...@@ -234,6 +294,18 @@ Database: INFORMATION_SCHEMA ...@@ -234,6 +294,18 @@ Database: INFORMATION_SCHEMA
| TRIGGERS | | TRIGGERS |
| USER_PRIVILEGES | | USER_PRIVILEGES |
| VIEWS | | VIEWS |
| INNODB_BUFFER_POOL_PAGES_INDEX |
| INNODB_RSEG |
| INNODB_LOCKS |
| INNODB_BUFFER_POOL_PAGES |
| XTRADB_ENHANCEMENTS |
| INNODB_TRX |
| INNODB_BUFFER_POOL_PAGES_BLOB |
| INNODB_LOCK_WAITS |
| INNODB_CMP_RESET |
| INNODB_CMP |
| INNODB_CMPMEM_RESET |
| INNODB_CMPMEM |
| PBXT_STATISTICS | | PBXT_STATISTICS |
+---------------------------------------+ +---------------------------------------+
Wildcard: inf_rmation_schema Wildcard: inf_rmation_schema
...@@ -244,5 +316,5 @@ Wildcard: inf_rmation_schema ...@@ -244,5 +316,5 @@ Wildcard: inf_rmation_schema
+--------------------+ +--------------------+
SELECT table_schema, count(*) FROM information_schema.TABLES WHERE table_schema IN ('mysql', 'INFORMATION_SCHEMA', 'test', 'mysqltest') AND table_name<>'ndb_binlog_index' AND table_name<>'ndb_apply_status' GROUP BY TABLE_SCHEMA; SELECT table_schema, count(*) FROM information_schema.TABLES WHERE table_schema IN ('mysql', 'INFORMATION_SCHEMA', 'test', 'mysqltest') AND table_name<>'ndb_binlog_index' AND table_name<>'ndb_apply_status' GROUP BY TABLE_SCHEMA;
table_schema count(*) table_schema count(*)
information_schema 29 information_schema 41
mysql 22 mysql 22
...@@ -197,7 +197,7 @@ c1 c2 ...@@ -197,7 +197,7 @@ c1 c2
5 9 5 9
DROP TABLE t1; DROP TABLE t1;
SET @@SESSION.AUTO_INCREMENT_INCREMENT=100, @@SESSION.AUTO_INCREMENT_OFFSET=10; SET @@SESSION.AUTO_INCREMENT_INCREMENT=100, @@SESSION.AUTO_INCREMENT_OFFSET=10;
SHOW VARIABLES LIKE "%auto_inc%"; SHOW VARIABLES LIKE "auto_inc%";
Variable_name Value Variable_name Value
auto_increment_increment 100 auto_increment_increment 100
auto_increment_offset 10 auto_increment_offset 10
...@@ -230,7 +230,7 @@ c1 ...@@ -230,7 +230,7 @@ c1
DROP TABLE t1; DROP TABLE t1;
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1; SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
SET @@INSERT_ID=1; SET @@INSERT_ID=1;
SHOW VARIABLES LIKE "%auto_inc%"; SHOW VARIABLES LIKE "auto_inc%";
Variable_name Value Variable_name Value
auto_increment_increment 1 auto_increment_increment 1
auto_increment_offset 1 auto_increment_offset 1
...@@ -269,7 +269,7 @@ c1 ...@@ -269,7 +269,7 @@ c1
DROP TABLE t1; DROP TABLE t1;
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1; SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
SET @@INSERT_ID=1; SET @@INSERT_ID=1;
SHOW VARIABLES LIKE "%auto_inc%"; SHOW VARIABLES LIKE "auto_inc%";
Variable_name Value Variable_name Value
auto_increment_increment 1 auto_increment_increment 1
auto_increment_offset 1 auto_increment_offset 1
...@@ -282,7 +282,7 @@ SELECT * FROM t1; ...@@ -282,7 +282,7 @@ SELECT * FROM t1;
c1 c1
-1 -1
SET @@SESSION.AUTO_INCREMENT_INCREMENT=100, @@SESSION.AUTO_INCREMENT_OFFSET=10; SET @@SESSION.AUTO_INCREMENT_INCREMENT=100, @@SESSION.AUTO_INCREMENT_OFFSET=10;
SHOW VARIABLES LIKE "%auto_inc%"; SHOW VARIABLES LIKE "auto_inc%";
Variable_name Value Variable_name Value
auto_increment_increment 100 auto_increment_increment 100
auto_increment_offset 10 auto_increment_offset 10
...@@ -315,7 +315,7 @@ c1 ...@@ -315,7 +315,7 @@ c1
DROP TABLE t1; DROP TABLE t1;
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1; SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
SET @@INSERT_ID=1; SET @@INSERT_ID=1;
SHOW VARIABLES LIKE "%auto_inc%"; SHOW VARIABLES LIKE "auto_inc%";
Variable_name Value Variable_name Value
auto_increment_increment 1 auto_increment_increment 1
auto_increment_offset 1 auto_increment_offset 1
...@@ -330,7 +330,7 @@ SELECT * FROM t1; ...@@ -330,7 +330,7 @@ SELECT * FROM t1;
c1 c1
1 1
SET @@SESSION.AUTO_INCREMENT_INCREMENT=100, @@SESSION.AUTO_INCREMENT_OFFSET=10; SET @@SESSION.AUTO_INCREMENT_INCREMENT=100, @@SESSION.AUTO_INCREMENT_OFFSET=10;
SHOW VARIABLES LIKE "%auto_inc%"; SHOW VARIABLES LIKE "auto_inc%";
Variable_name Value Variable_name Value
auto_increment_increment 100 auto_increment_increment 100
auto_increment_offset 10 auto_increment_offset 10
...@@ -370,7 +370,7 @@ c1 ...@@ -370,7 +370,7 @@ c1
DROP TABLE t1; DROP TABLE t1;
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1; SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
SET @@INSERT_ID=1; SET @@INSERT_ID=1;
SHOW VARIABLES LIKE "%auto_inc%"; SHOW VARIABLES LIKE "auto_inc%";
Variable_name Value Variable_name Value
auto_increment_increment 1 auto_increment_increment 1
auto_increment_offset 1 auto_increment_offset 1
...@@ -385,7 +385,7 @@ SELECT * FROM t1; ...@@ -385,7 +385,7 @@ SELECT * FROM t1;
c1 c1
1 1
SET @@SESSION.AUTO_INCREMENT_INCREMENT=100, @@SESSION.AUTO_INCREMENT_OFFSET=10; SET @@SESSION.AUTO_INCREMENT_INCREMENT=100, @@SESSION.AUTO_INCREMENT_OFFSET=10;
SHOW VARIABLES LIKE "%auto_inc%"; SHOW VARIABLES LIKE "auto_inc%";
Variable_name Value Variable_name Value
auto_increment_increment 100 auto_increment_increment 100
auto_increment_offset 10 auto_increment_offset 10
...@@ -419,7 +419,7 @@ c1 ...@@ -419,7 +419,7 @@ c1
DROP TABLE t1; DROP TABLE t1;
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1; SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
SET @@INSERT_ID=1; SET @@INSERT_ID=1;
SHOW VARIABLES LIKE "%auto_inc%"; SHOW VARIABLES LIKE "auto_inc%";
Variable_name Value Variable_name Value
auto_increment_increment 1 auto_increment_increment 1
auto_increment_offset 1 auto_increment_offset 1
...@@ -434,7 +434,7 @@ c1 ...@@ -434,7 +434,7 @@ c1
1 1
9223372036854775794 9223372036854775794
SET @@SESSION.AUTO_INCREMENT_INCREMENT=2, @@SESSION.AUTO_INCREMENT_OFFSET=10; SET @@SESSION.AUTO_INCREMENT_INCREMENT=2, @@SESSION.AUTO_INCREMENT_OFFSET=10;
SHOW VARIABLES LIKE "%auto_inc%"; SHOW VARIABLES LIKE "auto_inc%";
Variable_name Value Variable_name Value
auto_increment_increment 2 auto_increment_increment 2
auto_increment_offset 10 auto_increment_offset 10
...@@ -452,7 +452,7 @@ c1 ...@@ -452,7 +452,7 @@ c1
DROP TABLE t1; DROP TABLE t1;
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1; SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
SET @@INSERT_ID=1; SET @@INSERT_ID=1;
SHOW VARIABLES LIKE "%auto_inc%"; SHOW VARIABLES LIKE "auto_inc%";
Variable_name Value Variable_name Value
auto_increment_increment 1 auto_increment_increment 1
auto_increment_offset 1 auto_increment_offset 1
...@@ -467,7 +467,7 @@ c1 ...@@ -467,7 +467,7 @@ c1
1 1
18446744073709551603 18446744073709551603
SET @@SESSION.AUTO_INCREMENT_INCREMENT=2, @@SESSION.AUTO_INCREMENT_OFFSET=10; SET @@SESSION.AUTO_INCREMENT_INCREMENT=2, @@SESSION.AUTO_INCREMENT_OFFSET=10;
SHOW VARIABLES LIKE "%auto_inc%"; SHOW VARIABLES LIKE "auto_inc%";
Variable_name Value Variable_name Value
auto_increment_increment 2 auto_increment_increment 2
auto_increment_offset 10 auto_increment_offset 10
...@@ -485,7 +485,7 @@ c1 ...@@ -485,7 +485,7 @@ c1
DROP TABLE t1; DROP TABLE t1;
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1; SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
SET @@INSERT_ID=1; SET @@INSERT_ID=1;
SHOW VARIABLES LIKE "%auto_inc%"; SHOW VARIABLES LIKE "auto_inc%";
Variable_name Value Variable_name Value
auto_increment_increment 1 auto_increment_increment 1
auto_increment_offset 1 auto_increment_offset 1
...@@ -500,7 +500,7 @@ c1 ...@@ -500,7 +500,7 @@ c1
1 1
18446744073709551603 18446744073709551603
SET @@SESSION.AUTO_INCREMENT_INCREMENT=5, @@SESSION.AUTO_INCREMENT_OFFSET=7; SET @@SESSION.AUTO_INCREMENT_INCREMENT=5, @@SESSION.AUTO_INCREMENT_OFFSET=7;
SHOW VARIABLES LIKE "%auto_inc%"; SHOW VARIABLES LIKE "auto_inc%";
Variable_name Value Variable_name Value
auto_increment_increment 5 auto_increment_increment 5
auto_increment_offset 7 auto_increment_offset 7
...@@ -514,7 +514,7 @@ c1 ...@@ -514,7 +514,7 @@ c1
DROP TABLE t1; DROP TABLE t1;
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1; SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
SET @@INSERT_ID=1; SET @@INSERT_ID=1;
SHOW VARIABLES LIKE "%auto_inc%"; SHOW VARIABLES LIKE "auto_inc%";
Variable_name Value Variable_name Value
auto_increment_increment 1 auto_increment_increment 1
auto_increment_offset 1 auto_increment_offset 1
...@@ -533,7 +533,7 @@ c1 ...@@ -533,7 +533,7 @@ c1
-9223372036854775806 -9223372036854775806
1 1
SET @@SESSION.AUTO_INCREMENT_INCREMENT=3, @@SESSION.AUTO_INCREMENT_OFFSET=3; SET @@SESSION.AUTO_INCREMENT_INCREMENT=3, @@SESSION.AUTO_INCREMENT_OFFSET=3;
SHOW VARIABLES LIKE "%auto_inc%"; SHOW VARIABLES LIKE "auto_inc%";
Variable_name Value Variable_name Value
auto_increment_increment 3 auto_increment_increment 3
auto_increment_offset 3 auto_increment_offset 3
...@@ -550,7 +550,7 @@ c1 ...@@ -550,7 +550,7 @@ c1
DROP TABLE t1; DROP TABLE t1;
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1; SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
SET @@INSERT_ID=1; SET @@INSERT_ID=1;
SHOW VARIABLES LIKE "%auto_inc%"; SHOW VARIABLES LIKE "auto_inc%";
Variable_name Value Variable_name Value
auto_increment_increment 1 auto_increment_increment 1
auto_increment_offset 1 auto_increment_offset 1
...@@ -568,7 +568,7 @@ SET @@SESSION.AUTO_INCREMENT_INCREMENT=1152921504606846976, @@SESSION.AUTO_INCRE ...@@ -568,7 +568,7 @@ SET @@SESSION.AUTO_INCREMENT_INCREMENT=1152921504606846976, @@SESSION.AUTO_INCRE
Warnings: Warnings:
Warning 1292 Truncated incorrect auto_increment_increment value: '1152921504606846976' Warning 1292 Truncated incorrect auto_increment_increment value: '1152921504606846976'
Warning 1292 Truncated incorrect auto_increment_offset value: '1152921504606846976' Warning 1292 Truncated incorrect auto_increment_offset value: '1152921504606846976'
SHOW VARIABLES LIKE "%auto_inc%"; SHOW VARIABLES LIKE "auto_inc%";
Variable_name Value Variable_name Value
auto_increment_increment 65535 auto_increment_increment 65535
auto_increment_offset 65535 auto_increment_offset 65535
...@@ -581,7 +581,7 @@ c1 ...@@ -581,7 +581,7 @@ c1
DROP TABLE t1; DROP TABLE t1;
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1; SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
SET @@INSERT_ID=1; SET @@INSERT_ID=1;
SHOW VARIABLES LIKE "%auto_inc%"; SHOW VARIABLES LIKE "auto_inc%";
Variable_name Value Variable_name Value
auto_increment_increment 1 auto_increment_increment 1
auto_increment_offset 1 auto_increment_offset 1
......
SET @save_innodb_file_format_check=@@global.innodb_file_format_check;
create table t1(a int not null, b int, c char(10) not null, d varchar(20)) engine = innodb; create table t1(a int not null, b int, c char(10) not null, d varchar(20)) engine = innodb;
insert into t1 values (5,5,'oo','oo'),(4,4,'tr','tr'),(3,4,'ad','ad'),(2,3,'ak','ak'); insert into t1 values (5,5,'oo','oo'),(4,4,'tr','tr'),(3,4,'ad','ad'),(2,3,'ak','ak');
commit; commit;
...@@ -47,6 +48,7 @@ t1 CREATE TABLE `t1` ( ...@@ -47,6 +48,7 @@ t1 CREATE TABLE `t1` (
KEY `b` (`b`) KEY `b` (`b`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
CREATE TABLE `t1#1`(a INT PRIMARY KEY) ENGINE=InnoDB; CREATE TABLE `t1#1`(a INT PRIMARY KEY) ENGINE=InnoDB;
call mtr.add_suppression(" table `test`\\.`t1#[12]` already exists in InnoDB internal");
alter table t1 add unique index (c), add index (d); alter table t1 add unique index (c), add index (d);
ERROR HY000: Table 'test.t1#1' already exists ERROR HY000: Table 'test.t1#1' already exists
rename table `t1#1` to `t1#2`; rename table `t1#1` to `t1#2`;
...@@ -1132,3 +1134,4 @@ t2 CREATE TABLE `t2` ( ...@@ -1132,3 +1134,4 @@ t2 CREATE TABLE `t2` (
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
DROP TABLE t2; DROP TABLE t2;
DROP TABLE t1; DROP TABLE t1;
SET GLOBAL innodb_file_format_check=@save_innodb_file_format_check;
...@@ -141,7 +141,7 @@ drop table t1; ...@@ -141,7 +141,7 @@ drop table t1;
CREATE TABLE t1(c TEXT, PRIMARY KEY (c(440))) CREATE TABLE t1(c TEXT, PRIMARY KEY (c(440)))
ENGINE=InnoDB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=1 CHARSET=ASCII; ENGINE=InnoDB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=1 CHARSET=ASCII;
ERROR 42000: Row size too large. The maximum row size for the used table type, not counting BLOBs, is 8126. You have to change some columns to TEXT or BLOBs ERROR 42000: Row size too large. The maximum row size for the used table type, not counting BLOBs, is 8126. You have to change some columns to TEXT or BLOBs
CREATE TABLE t1(c TEXT, PRIMARY KEY (c(439))) CREATE TABLE t1(c TEXT, PRIMARY KEY (c(438)))
ENGINE=InnoDB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=1 CHARSET=ASCII; ENGINE=InnoDB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=1 CHARSET=ASCII;
INSERT INTO t1 VALUES(REPEAT('A',512)),(REPEAT('B',512)); INSERT INTO t1 VALUES(REPEAT('A',512)),(REPEAT('B',512));
DROP TABLE t1; DROP TABLE t1;
......
...@@ -1433,7 +1433,7 @@ insert t2 select * from t1; ...@@ -1433,7 +1433,7 @@ insert t2 select * from t1;
insert t3 select * from t1; insert t3 select * from t1;
checksum table t1, t2, t3, t4 quick; checksum table t1, t2, t3, t4 quick;
Table Checksum Table Checksum
test.t1 2948697075 test.t1 3442722830
test.t2 NULL test.t2 NULL
test.t3 NULL test.t3 NULL
test.t4 NULL test.t4 NULL
...@@ -1441,17 +1441,17 @@ Warnings: ...@@ -1441,17 +1441,17 @@ Warnings:
Error 1146 Table 'test.t4' doesn't exist Error 1146 Table 'test.t4' doesn't exist
checksum table t1, t2, t3, t4; checksum table t1, t2, t3, t4;
Table Checksum Table Checksum
test.t1 2948697075 test.t1 3442722830
test.t2 2948697075 test.t2 3442722830
test.t3 2948697075 test.t3 3442722830
test.t4 NULL test.t4 NULL
Warnings: Warnings:
Error 1146 Table 'test.t4' doesn't exist Error 1146 Table 'test.t4' doesn't exist
checksum table t1, t2, t3, t4 extended; checksum table t1, t2, t3, t4 extended;
Table Checksum Table Checksum
test.t1 2948697075 test.t1 3442722830
test.t2 2948697075 test.t2 3442722830
test.t3 2948697075 test.t3 3442722830
test.t4 NULL test.t4 NULL
Warnings: Warnings:
Error 1146 Table 'test.t4' doesn't exist Error 1146 Table 'test.t4' doesn't exist
...@@ -1781,6 +1781,7 @@ set global innodb_sync_spin_loops=20; ...@@ -1781,6 +1781,7 @@ set global innodb_sync_spin_loops=20;
show variables like "innodb_sync_spin_loops"; show variables like "innodb_sync_spin_loops";
Variable_name Value Variable_name Value
innodb_sync_spin_loops 20 innodb_sync_spin_loops 20
SET @old_innodb_thread_concurrency= @@global.innodb_thread_concurrency;
show variables like "innodb_thread_concurrency"; show variables like "innodb_thread_concurrency";
Variable_name Value Variable_name Value
innodb_thread_concurrency 0 innodb_thread_concurrency 0
...@@ -1798,6 +1799,7 @@ set global innodb_thread_concurrency=16; ...@@ -1798,6 +1799,7 @@ set global innodb_thread_concurrency=16;
show variables like "innodb_thread_concurrency"; show variables like "innodb_thread_concurrency";
Variable_name Value Variable_name Value
innodb_thread_concurrency 16 innodb_thread_concurrency 16
SET @@global.innodb_thread_concurrency= @old_innodb_thread_concurrency;
show variables like "innodb_concurrency_tickets"; show variables like "innodb_concurrency_tickets";
Variable_name Value Variable_name Value
innodb_concurrency_tickets 500 innodb_concurrency_tickets 500
......
SET @save_innodb_file_format=@@global.innodb_file_format;
SET @save_innodb_file_format_check=@@global.innodb_file_format_check;
SET @save_innodb_file_per_table=@@global.innodb_file_per_table;
SET GLOBAL innodb_file_format='Barracuda'; SET GLOBAL innodb_file_format='Barracuda';
SET GLOBAL innodb_file_per_table=ON; SET GLOBAL innodb_file_per_table=ON;
SET @save_innodb_file_format=@@global.innodb_file_format;
SET @save_innodb_file_format_check=@@global.innodb_file_format_check;
SET @save_innodb_file_per_table=@@global.innodb_file_per_table;
SET GLOBAL innodb_file_format='Barracuda'; SET GLOBAL innodb_file_format='Barracuda';
SET GLOBAL innodb_file_per_table=ON; SET GLOBAL innodb_file_per_table=ON;
...@@ -72,6 +72,8 @@ Table Checksum ...@@ -72,6 +72,8 @@ Table Checksum
test.t1 4108368782 test.t1 4108368782
drop table if exists t1; drop table if exists t1;
create table t1 (a int null, v varchar(100)) engine=innodb checksum=0 row_format=fixed; create table t1 (a int null, v varchar(100)) engine=innodb checksum=0 row_format=fixed;
Warnings:
Warning 1478 InnoDB: assuming ROW_FORMAT=COMPACT.
insert into t1 values(null, null), (1, "hello"); insert into t1 values(null, null), (1, "hello");
checksum table t1; checksum table t1;
Table Checksum Table Checksum
......
...@@ -72,6 +72,8 @@ Table Checksum ...@@ -72,6 +72,8 @@ Table Checksum
test.t1 3885665021 test.t1 3885665021
drop table if exists t1; drop table if exists t1;
create table t1 (a int null, v varchar(100)) engine=innodb checksum=0 row_format=fixed; create table t1 (a int null, v varchar(100)) engine=innodb checksum=0 row_format=fixed;
Warnings:
Warning 1478 InnoDB: assuming ROW_FORMAT=COMPACT.
insert into t1 values(null, null), (1, "hello"); insert into t1 values(null, null), (1, "hello");
checksum table t1; checksum table t1;
Table Checksum Table Checksum
......
...@@ -43,7 +43,7 @@ create view v1 (c) as ...@@ -43,7 +43,7 @@ create view v1 (c) as
table_name<>'ndb_binlog_index' AND table_name<>'ndb_binlog_index' AND
table_name<>'ndb_apply_status' AND table_name<>'ndb_apply_status' AND
NOT (table_schema = 'INFORMATION_SCHEMA' AND table_name LIKE 'PBXT_%'); NOT (table_schema = 'INFORMATION_SCHEMA' AND table_name LIKE 'PBXT_%');
select * from v1; select * from v1 ORDER BY c COLLATE utf8_bin;
select c,table_name from v1 select c,table_name from v1
inner join information_schema.TABLES v2 on (v1.c=v2.table_name) inner join information_schema.TABLES v2 on (v1.c=v2.table_name)
......
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
-- disable_result_log -- disable_result_log
-- enable_warnings -- enable_warnings
SET @save_innodb_stats_sample_pages=@@innodb_stats_sample_pages;
SET GLOBAL innodb_stats_sample_pages=0; SET GLOBAL innodb_stats_sample_pages=0;
# check that the value has been adjusted to 1 # check that the value has been adjusted to 1
...@@ -60,4 +61,5 @@ ANALYZE TABLE innodb_analyze; ...@@ -60,4 +61,5 @@ ANALYZE TABLE innodb_analyze;
SET GLOBAL innodb_stats_sample_pages=16; SET GLOBAL innodb_stats_sample_pages=16;
ANALYZE TABLE innodb_analyze; ANALYZE TABLE innodb_analyze;
SET GLOBAL innodb_stats_sample_pages=@save_innodb_stats_sample_pages;
DROP TABLE innodb_analyze; DROP TABLE innodb_analyze;
...@@ -156,7 +156,7 @@ DROP TABLE t1; ...@@ -156,7 +156,7 @@ DROP TABLE t1;
# #
# Test changes to AUTOINC next value calculation # Test changes to AUTOINC next value calculation
SET @@SESSION.AUTO_INCREMENT_INCREMENT=100, @@SESSION.AUTO_INCREMENT_OFFSET=10; SET @@SESSION.AUTO_INCREMENT_INCREMENT=100, @@SESSION.AUTO_INCREMENT_OFFSET=10;
SHOW VARIABLES LIKE "%auto_inc%"; SHOW VARIABLES LIKE "auto_inc%";
DROP TABLE IF EXISTS t1; DROP TABLE IF EXISTS t1;
CREATE TABLE t1 (c1 INT AUTO_INCREMENT, PRIMARY KEY(c1)) ENGINE=InnoDB; CREATE TABLE t1 (c1 INT AUTO_INCREMENT, PRIMARY KEY(c1)) ENGINE=InnoDB;
INSERT INTO t1 VALUES (NULL),(5),(NULL); INSERT INTO t1 VALUES (NULL),(5),(NULL);
...@@ -173,7 +173,7 @@ DROP TABLE t1; ...@@ -173,7 +173,7 @@ DROP TABLE t1;
# Reset the AUTOINC session variables # Reset the AUTOINC session variables
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1; SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
SET @@INSERT_ID=1; SET @@INSERT_ID=1;
SHOW VARIABLES LIKE "%auto_inc%"; SHOW VARIABLES LIKE "auto_inc%";
DROP TABLE IF EXISTS t1; DROP TABLE IF EXISTS t1;
CREATE TABLE t1 (c1 INT AUTO_INCREMENT, PRIMARY KEY(c1)) ENGINE=InnoDB; CREATE TABLE t1 (c1 INT AUTO_INCREMENT, PRIMARY KEY(c1)) ENGINE=InnoDB;
INSERT INTO t1 VALUES(0); INSERT INTO t1 VALUES(0);
...@@ -193,13 +193,13 @@ DROP TABLE t1; ...@@ -193,13 +193,13 @@ DROP TABLE t1;
# Reset the AUTOINC session variables # Reset the AUTOINC session variables
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1; SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
SET @@INSERT_ID=1; SET @@INSERT_ID=1;
SHOW VARIABLES LIKE "%auto_inc%"; SHOW VARIABLES LIKE "auto_inc%";
DROP TABLE IF EXISTS t1; DROP TABLE IF EXISTS t1;
CREATE TABLE t1 (c1 INT AUTO_INCREMENT, PRIMARY KEY(c1)) ENGINE=InnoDB; CREATE TABLE t1 (c1 INT AUTO_INCREMENT, PRIMARY KEY(c1)) ENGINE=InnoDB;
INSERT INTO t1 VALUES(-1); INSERT INTO t1 VALUES(-1);
SELECT * FROM t1; SELECT * FROM t1;
SET @@SESSION.AUTO_INCREMENT_INCREMENT=100, @@SESSION.AUTO_INCREMENT_OFFSET=10; SET @@SESSION.AUTO_INCREMENT_INCREMENT=100, @@SESSION.AUTO_INCREMENT_OFFSET=10;
SHOW VARIABLES LIKE "%auto_inc%"; SHOW VARIABLES LIKE "auto_inc%";
INSERT INTO t1 VALUES (-2), (NULL),(2),(NULL); INSERT INTO t1 VALUES (-2), (NULL),(2),(NULL);
INSERT INTO t1 VALUES (250),(NULL); INSERT INTO t1 VALUES (250),(NULL);
SELECT * FROM t1; SELECT * FROM t1;
...@@ -214,13 +214,13 @@ DROP TABLE t1; ...@@ -214,13 +214,13 @@ DROP TABLE t1;
# Reset the AUTOINC session variables # Reset the AUTOINC session variables
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1; SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
SET @@INSERT_ID=1; SET @@INSERT_ID=1;
SHOW VARIABLES LIKE "%auto_inc%"; SHOW VARIABLES LIKE "auto_inc%";
DROP TABLE IF EXISTS t1; DROP TABLE IF EXISTS t1;
CREATE TABLE t1 (c1 INT UNSIGNED AUTO_INCREMENT, PRIMARY KEY(c1)) ENGINE=InnoDB; CREATE TABLE t1 (c1 INT UNSIGNED AUTO_INCREMENT, PRIMARY KEY(c1)) ENGINE=InnoDB;
INSERT INTO t1 VALUES(-1); INSERT INTO t1 VALUES(-1);
SELECT * FROM t1; SELECT * FROM t1;
SET @@SESSION.AUTO_INCREMENT_INCREMENT=100, @@SESSION.AUTO_INCREMENT_OFFSET=10; SET @@SESSION.AUTO_INCREMENT_INCREMENT=100, @@SESSION.AUTO_INCREMENT_OFFSET=10;
SHOW VARIABLES LIKE "%auto_inc%"; SHOW VARIABLES LIKE "auto_inc%";
INSERT INTO t1 VALUES (-2); INSERT INTO t1 VALUES (-2);
INSERT INTO t1 VALUES (NULL); INSERT INTO t1 VALUES (NULL);
INSERT INTO t1 VALUES (2); INSERT INTO t1 VALUES (2);
...@@ -240,13 +240,13 @@ DROP TABLE t1; ...@@ -240,13 +240,13 @@ DROP TABLE t1;
# Reset the AUTOINC session variables # Reset the AUTOINC session variables
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1; SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
SET @@INSERT_ID=1; SET @@INSERT_ID=1;
SHOW VARIABLES LIKE "%auto_inc%"; SHOW VARIABLES LIKE "auto_inc%";
DROP TABLE IF EXISTS t1; DROP TABLE IF EXISTS t1;
CREATE TABLE t1 (c1 INT UNSIGNED AUTO_INCREMENT, PRIMARY KEY(c1)) ENGINE=InnoDB; CREATE TABLE t1 (c1 INT UNSIGNED AUTO_INCREMENT, PRIMARY KEY(c1)) ENGINE=InnoDB;
INSERT INTO t1 VALUES(-1); INSERT INTO t1 VALUES(-1);
SELECT * FROM t1; SELECT * FROM t1;
SET @@SESSION.AUTO_INCREMENT_INCREMENT=100, @@SESSION.AUTO_INCREMENT_OFFSET=10; SET @@SESSION.AUTO_INCREMENT_INCREMENT=100, @@SESSION.AUTO_INCREMENT_OFFSET=10;
SHOW VARIABLES LIKE "%auto_inc%"; SHOW VARIABLES LIKE "auto_inc%";
INSERT INTO t1 VALUES (-2),(NULL),(2),(NULL); INSERT INTO t1 VALUES (-2),(NULL),(2),(NULL);
INSERT INTO t1 VALUES (250),(NULL); INSERT INTO t1 VALUES (250),(NULL);
SELECT * FROM t1; SELECT * FROM t1;
...@@ -262,7 +262,7 @@ DROP TABLE t1; ...@@ -262,7 +262,7 @@ DROP TABLE t1;
# Check for overflow handling when increment is > 1 # Check for overflow handling when increment is > 1
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1; SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
SET @@INSERT_ID=1; SET @@INSERT_ID=1;
SHOW VARIABLES LIKE "%auto_inc%"; SHOW VARIABLES LIKE "auto_inc%";
DROP TABLE IF EXISTS t1; DROP TABLE IF EXISTS t1;
CREATE TABLE t1 (c1 BIGINT AUTO_INCREMENT, PRIMARY KEY(c1)) ENGINE=InnoDB; CREATE TABLE t1 (c1 BIGINT AUTO_INCREMENT, PRIMARY KEY(c1)) ENGINE=InnoDB;
# TODO: Fix the autoinc init code # TODO: Fix the autoinc init code
...@@ -271,7 +271,7 @@ INSERT INTO t1 VALUES(NULL); ...@@ -271,7 +271,7 @@ INSERT INTO t1 VALUES(NULL);
INSERT INTO t1 VALUES (9223372036854775794); #-- 2^63 - 14 INSERT INTO t1 VALUES (9223372036854775794); #-- 2^63 - 14
SELECT * FROM t1; SELECT * FROM t1;
SET @@SESSION.AUTO_INCREMENT_INCREMENT=2, @@SESSION.AUTO_INCREMENT_OFFSET=10; SET @@SESSION.AUTO_INCREMENT_INCREMENT=2, @@SESSION.AUTO_INCREMENT_OFFSET=10;
SHOW VARIABLES LIKE "%auto_inc%"; SHOW VARIABLES LIKE "auto_inc%";
# This should just fit # This should just fit
INSERT INTO t1 VALUES (NULL),(NULL),(NULL),(NULL),(NULL),(NULL); INSERT INTO t1 VALUES (NULL),(NULL),(NULL),(NULL),(NULL),(NULL);
SELECT * FROM t1; SELECT * FROM t1;
...@@ -281,7 +281,7 @@ DROP TABLE t1; ...@@ -281,7 +281,7 @@ DROP TABLE t1;
# Check for overflow handling when increment and offser are > 1 # Check for overflow handling when increment and offser are > 1
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1; SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
SET @@INSERT_ID=1; SET @@INSERT_ID=1;
SHOW VARIABLES LIKE "%auto_inc%"; SHOW VARIABLES LIKE "auto_inc%";
DROP TABLE IF EXISTS t1; DROP TABLE IF EXISTS t1;
CREATE TABLE t1 (c1 BIGINT UNSIGNED AUTO_INCREMENT, PRIMARY KEY(c1)) ENGINE=InnoDB; CREATE TABLE t1 (c1 BIGINT UNSIGNED AUTO_INCREMENT, PRIMARY KEY(c1)) ENGINE=InnoDB;
# TODO: Fix the autoinc init code # TODO: Fix the autoinc init code
...@@ -290,7 +290,7 @@ INSERT INTO t1 VALUES(NULL); ...@@ -290,7 +290,7 @@ INSERT INTO t1 VALUES(NULL);
INSERT INTO t1 VALUES (18446744073709551603); #-- 2^64 - 13 INSERT INTO t1 VALUES (18446744073709551603); #-- 2^64 - 13
SELECT * FROM t1; SELECT * FROM t1;
SET @@SESSION.AUTO_INCREMENT_INCREMENT=2, @@SESSION.AUTO_INCREMENT_OFFSET=10; SET @@SESSION.AUTO_INCREMENT_INCREMENT=2, @@SESSION.AUTO_INCREMENT_OFFSET=10;
SHOW VARIABLES LIKE "%auto_inc%"; SHOW VARIABLES LIKE "auto_inc%";
# This should fail because of overflow but it doesn't, it seems to be # This should fail because of overflow but it doesn't, it seems to be
# a MySQL server bug. It wraps around to 0 for the last value. # a MySQL server bug. It wraps around to 0 for the last value.
# See MySQL Bug# 39828 # See MySQL Bug# 39828
...@@ -313,7 +313,7 @@ DROP TABLE t1; ...@@ -313,7 +313,7 @@ DROP TABLE t1;
# Check for overflow handling when increment and offset are odd numbers # Check for overflow handling when increment and offset are odd numbers
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1; SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
SET @@INSERT_ID=1; SET @@INSERT_ID=1;
SHOW VARIABLES LIKE "%auto_inc%"; SHOW VARIABLES LIKE "auto_inc%";
DROP TABLE IF EXISTS t1; DROP TABLE IF EXISTS t1;
CREATE TABLE t1 (c1 BIGINT UNSIGNED AUTO_INCREMENT, PRIMARY KEY(c1)) ENGINE=InnoDB; CREATE TABLE t1 (c1 BIGINT UNSIGNED AUTO_INCREMENT, PRIMARY KEY(c1)) ENGINE=InnoDB;
# TODO: Fix the autoinc init code # TODO: Fix the autoinc init code
...@@ -322,7 +322,7 @@ INSERT INTO t1 VALUES(NULL); ...@@ -322,7 +322,7 @@ INSERT INTO t1 VALUES(NULL);
INSERT INTO t1 VALUES (18446744073709551603); #-- 2^64 - 13 INSERT INTO t1 VALUES (18446744073709551603); #-- 2^64 - 13
SELECT * FROM t1; SELECT * FROM t1;
SET @@SESSION.AUTO_INCREMENT_INCREMENT=5, @@SESSION.AUTO_INCREMENT_OFFSET=7; SET @@SESSION.AUTO_INCREMENT_INCREMENT=5, @@SESSION.AUTO_INCREMENT_OFFSET=7;
SHOW VARIABLES LIKE "%auto_inc%"; SHOW VARIABLES LIKE "auto_inc%";
# This should fail because of overflow but it doesn't. It fails with # This should fail because of overflow but it doesn't. It fails with
# a duplicate entry message because of a MySQL server bug, it wraps # a duplicate entry message because of a MySQL server bug, it wraps
# around. See MySQL Bug# 39828, once MySQL fix the bug we can replace # around. See MySQL Bug# 39828, once MySQL fix the bug we can replace
...@@ -344,7 +344,7 @@ DROP TABLE t1; ...@@ -344,7 +344,7 @@ DROP TABLE t1;
# and check for large -ve numbers # and check for large -ve numbers
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1; SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
SET @@INSERT_ID=1; SET @@INSERT_ID=1;
SHOW VARIABLES LIKE "%auto_inc%"; SHOW VARIABLES LIKE "auto_inc%";
DROP TABLE IF EXISTS t1; DROP TABLE IF EXISTS t1;
CREATE TABLE t1 (c1 BIGINT AUTO_INCREMENT, PRIMARY KEY(c1)) ENGINE=InnoDB; CREATE TABLE t1 (c1 BIGINT AUTO_INCREMENT, PRIMARY KEY(c1)) ENGINE=InnoDB;
# TODO: Fix the autoinc init code # TODO: Fix the autoinc init code
...@@ -355,7 +355,7 @@ INSERT INTO t1 VALUES(-9223372036854775807); #-- -2^63 + 1 ...@@ -355,7 +355,7 @@ INSERT INTO t1 VALUES(-9223372036854775807); #-- -2^63 + 1
INSERT INTO t1 VALUES(-9223372036854775808); #-- -2^63 INSERT INTO t1 VALUES(-9223372036854775808); #-- -2^63
SELECT * FROM t1; SELECT * FROM t1;
SET @@SESSION.AUTO_INCREMENT_INCREMENT=3, @@SESSION.AUTO_INCREMENT_OFFSET=3; SET @@SESSION.AUTO_INCREMENT_INCREMENT=3, @@SESSION.AUTO_INCREMENT_OFFSET=3;
SHOW VARIABLES LIKE "%auto_inc%"; SHOW VARIABLES LIKE "auto_inc%";
INSERT INTO t1 VALUES (NULL),(NULL), (NULL); INSERT INTO t1 VALUES (NULL),(NULL), (NULL);
SELECT * FROM t1; SELECT * FROM t1;
DROP TABLE t1; DROP TABLE t1;
...@@ -364,7 +364,7 @@ DROP TABLE t1; ...@@ -364,7 +364,7 @@ DROP TABLE t1;
# large numbers 2^60 # large numbers 2^60
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1; SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
SET @@INSERT_ID=1; SET @@INSERT_ID=1;
SHOW VARIABLES LIKE "%auto_inc%"; SHOW VARIABLES LIKE "auto_inc%";
DROP TABLE IF EXISTS t1; DROP TABLE IF EXISTS t1;
CREATE TABLE t1 (c1 BIGINT UNSIGNED AUTO_INCREMENT, PRIMARY KEY(c1)) ENGINE=InnoDB; CREATE TABLE t1 (c1 BIGINT UNSIGNED AUTO_INCREMENT, PRIMARY KEY(c1)) ENGINE=InnoDB;
# TODO: Fix the autoinc init code # TODO: Fix the autoinc init code
...@@ -373,7 +373,7 @@ INSERT INTO t1 VALUES(NULL); ...@@ -373,7 +373,7 @@ INSERT INTO t1 VALUES(NULL);
INSERT INTO t1 VALUES (18446744073709551610); #-- 2^64 - 2 INSERT INTO t1 VALUES (18446744073709551610); #-- 2^64 - 2
SELECT * FROM t1; SELECT * FROM t1;
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1152921504606846976, @@SESSION.AUTO_INCREMENT_OFFSET=1152921504606846976; SET @@SESSION.AUTO_INCREMENT_INCREMENT=1152921504606846976, @@SESSION.AUTO_INCREMENT_OFFSET=1152921504606846976;
SHOW VARIABLES LIKE "%auto_inc%"; SHOW VARIABLES LIKE "auto_inc%";
# This should fail because of overflow but it doesn't. It wraps around # This should fail because of overflow but it doesn't. It wraps around
# and the autoinc values look bogus too. # and the autoinc values look bogus too.
# See MySQL Bug# 39828, once MySQL fix the bug we can enable the error # See MySQL Bug# 39828, once MySQL fix the bug we can enable the error
...@@ -396,7 +396,7 @@ DROP TABLE t1; ...@@ -396,7 +396,7 @@ DROP TABLE t1;
# #
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1; SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
SET @@INSERT_ID=1; SET @@INSERT_ID=1;
SHOW VARIABLES LIKE "%auto_inc%"; SHOW VARIABLES LIKE "auto_inc%";
CREATE TABLE t1 (c1 DOUBLE NOT NULL AUTO_INCREMENT, c2 INT, PRIMARY KEY (c1)) ENGINE=InnoDB; CREATE TABLE t1 (c1 DOUBLE NOT NULL AUTO_INCREMENT, c2 INT, PRIMARY KEY (c1)) ENGINE=InnoDB;
INSERT INTO t1 VALUES(NULL, 1); INSERT INTO t1 VALUES(NULL, 1);
INSERT INTO t1 VALUES(NULL, 2); INSERT INTO t1 VALUES(NULL, 2);
......
-- source include/have_innodb.inc -- source include/have_innodb.inc
SET @save_innodb_file_format_check=@@global.innodb_file_format_check;
create table t1(a int not null, b int, c char(10) not null, d varchar(20)) engine = innodb; create table t1(a int not null, b int, c char(10) not null, d varchar(20)) engine = innodb;
insert into t1 values (5,5,'oo','oo'),(4,4,'tr','tr'),(3,4,'ad','ad'),(2,3,'ak','ak'); insert into t1 values (5,5,'oo','oo'),(4,4,'tr','tr'),(3,4,'ad','ad'),(2,3,'ak','ak');
commit; commit;
...@@ -20,6 +22,8 @@ show create table t1; ...@@ -20,6 +22,8 @@ show create table t1;
# Check how existing tables interfere with temporary tables. # Check how existing tables interfere with temporary tables.
CREATE TABLE `t1#1`(a INT PRIMARY KEY) ENGINE=InnoDB; CREATE TABLE `t1#1`(a INT PRIMARY KEY) ENGINE=InnoDB;
call mtr.add_suppression(" table `test`\\.`t1#[12]` already exists in InnoDB internal");
--error 156 --error 156
alter table t1 add unique index (c), add index (d); alter table t1 add unique index (c), add index (d);
rename table `t1#1` to `t1#2`; rename table `t1#1` to `t1#2`;
...@@ -509,3 +513,4 @@ SHOW CREATE TABLE t2; ...@@ -509,3 +513,4 @@ SHOW CREATE TABLE t2;
DROP TABLE t2; DROP TABLE t2;
DROP TABLE t1; DROP TABLE t1;
SET GLOBAL innodb_file_format_check=@save_innodb_file_format_check;
...@@ -105,7 +105,11 @@ drop table t1; ...@@ -105,7 +105,11 @@ drop table t1;
--error ER_TOO_BIG_ROWSIZE --error ER_TOO_BIG_ROWSIZE
CREATE TABLE t1(c TEXT, PRIMARY KEY (c(440))) CREATE TABLE t1(c TEXT, PRIMARY KEY (c(440)))
ENGINE=InnoDB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=1 CHARSET=ASCII; ENGINE=InnoDB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=1 CHARSET=ASCII;
CREATE TABLE t1(c TEXT, PRIMARY KEY (c(439))) # The maximum key size for a compressed row actually depends on the
# version of libz used, as account must be taken for the maximum
# compressed size of a key, and this differs between libz
# versions. Some libz versions allow a size of 439, some only 438.
CREATE TABLE t1(c TEXT, PRIMARY KEY (c(438)))
ENGINE=InnoDB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=1 CHARSET=ASCII; ENGINE=InnoDB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=1 CHARSET=ASCII;
INSERT INTO t1 VALUES(REPEAT('A',512)),(REPEAT('B',512)); INSERT INTO t1 VALUES(REPEAT('A',512)),(REPEAT('B',512));
DROP TABLE t1; DROP TABLE t1;
......
...@@ -1163,7 +1163,7 @@ drop table t2; ...@@ -1163,7 +1163,7 @@ drop table t2;
# Test error handling # Test error handling
# Embedded server doesn't chdir to data directory # Embedded server doesn't chdir to data directory
--replace_result $MYSQLTEST_VARDIR . master-data/ '' --replace_result $MYSQLTEST_VARDIR . mysqld.1/data/ ''
--error ER_WRONG_FK_DEF --error ER_WRONG_FK_DEF
create table t2 (id int(11) not null, id2 int(11) not null, constraint t1_id_fk foreign key (id2,id) references t1 (id)) engine = innodb; create table t2 (id int(11) not null, id2 int(11) not null, constraint t1_id_fk foreign key (id2,id) references t1 (id)) engine = innodb;
...@@ -1318,6 +1318,7 @@ set global innodb_sync_spin_loops=20; ...@@ -1318,6 +1318,7 @@ set global innodb_sync_spin_loops=20;
show variables like "innodb_sync_spin_loops"; show variables like "innodb_sync_spin_loops";
# Test for innodb_thread_concurrency variable # Test for innodb_thread_concurrency variable
SET @old_innodb_thread_concurrency= @@global.innodb_thread_concurrency;
show variables like "innodb_thread_concurrency"; show variables like "innodb_thread_concurrency";
set global innodb_thread_concurrency=1001; set global innodb_thread_concurrency=1001;
show variables like "innodb_thread_concurrency"; show variables like "innodb_thread_concurrency";
...@@ -1325,6 +1326,7 @@ set global innodb_thread_concurrency=0; ...@@ -1325,6 +1326,7 @@ set global innodb_thread_concurrency=0;
show variables like "innodb_thread_concurrency"; show variables like "innodb_thread_concurrency";
set global innodb_thread_concurrency=16; set global innodb_thread_concurrency=16;
show variables like "innodb_thread_concurrency"; show variables like "innodb_thread_concurrency";
SET @@global.innodb_thread_concurrency= @old_innodb_thread_concurrency;
# Test for innodb_concurrency_tickets variable # Test for innodb_concurrency_tickets variable
show variables like "innodb_concurrency_tickets"; show variables like "innodb_concurrency_tickets";
...@@ -1357,7 +1359,7 @@ source include/varchar.inc; ...@@ -1357,7 +1359,7 @@ source include/varchar.inc;
# #
# Embedded server doesn't chdir to data directory # Embedded server doesn't chdir to data directory
--replace_result $MYSQLTEST_VARDIR . master-data/ '' --replace_result $MYSQLTEST_VARDIR . mysqld.1/data/ ''
create table t1 (v varchar(65530), key(v)); create table t1 (v varchar(65530), key(v));
drop table t1; drop table t1;
create table t1 (v varchar(65536)); create table t1 (v varchar(65536));
...@@ -1632,7 +1634,7 @@ disconnect b; ...@@ -1632,7 +1634,7 @@ disconnect b;
set foreign_key_checks=0; set foreign_key_checks=0;
create table t2 (a int primary key, b int, foreign key (b) references t1(a)) engine = innodb; create table t2 (a int primary key, b int, foreign key (b) references t1(a)) engine = innodb;
# Embedded server doesn't chdir to data directory # Embedded server doesn't chdir to data directory
--replace_result $MYSQLTEST_VARDIR . master-data/ '' --replace_result $MYSQLTEST_VARDIR . mysqld.1/data/ ''
-- error 1005 -- error 1005
create table t1(a char(10) primary key, b varchar(20)) engine = innodb; create table t1(a char(10) primary key, b varchar(20)) engine = innodb;
set foreign_key_checks=1; set foreign_key_checks=1;
...@@ -1644,7 +1646,7 @@ drop table t2; ...@@ -1644,7 +1646,7 @@ drop table t2;
set foreign_key_checks=0; set foreign_key_checks=0;
create table t1(a varchar(10) primary key) engine = innodb DEFAULT CHARSET=latin1; create table t1(a varchar(10) primary key) engine = innodb DEFAULT CHARSET=latin1;
# Embedded server doesn't chdir to data directory # Embedded server doesn't chdir to data directory
--replace_result $MYSQLTEST_VARDIR . master-data/ '' --replace_result $MYSQLTEST_VARDIR . mysqld.1/data/ ''
-- error 1005 -- error 1005
create table t2 (a varchar(10), foreign key (a) references t1(a)) engine = innodb DEFAULT CHARSET=utf8; create table t2 (a varchar(10), foreign key (a) references t1(a)) engine = innodb DEFAULT CHARSET=utf8;
set foreign_key_checks=1; set foreign_key_checks=1;
...@@ -1675,7 +1677,7 @@ set foreign_key_checks=0; ...@@ -1675,7 +1677,7 @@ set foreign_key_checks=0;
create table t2 (a varchar(10), foreign key (a) references t1(a)) engine = innodb DEFAULT CHARSET=latin1; create table t2 (a varchar(10), foreign key (a) references t1(a)) engine = innodb DEFAULT CHARSET=latin1;
create table t3(a varchar(10) primary key) engine = innodb DEFAULT CHARSET=utf8; create table t3(a varchar(10) primary key) engine = innodb DEFAULT CHARSET=utf8;
# Embedded server doesn't chdir to data directory # Embedded server doesn't chdir to data directory
--replace_result $MYSQLTEST_VARDIR . master-data/ '' --replace_result $MYSQLTEST_VARDIR . mysqld.1/data/ ''
-- error 1025 -- error 1025
rename table t3 to t1; rename table t3 to t1;
set foreign_key_checks=1; set foreign_key_checks=1;
...@@ -2315,7 +2317,7 @@ ALTER TABLE t2 ADD FOREIGN KEY (a) REFERENCES t1 (a) ON DELETE SET NULL; ...@@ -2315,7 +2317,7 @@ ALTER TABLE t2 ADD FOREIGN KEY (a) REFERENCES t1 (a) ON DELETE SET NULL;
# mysqltest first does replace_regex, then replace_result # mysqltest first does replace_regex, then replace_result
--replace_regex /'[^']*test\/#sql-[0-9a-f_]*'/'#sql-temporary'/ --replace_regex /'[^']*test\/#sql-[0-9a-f_]*'/'#sql-temporary'/
# Embedded server doesn't chdir to data directory # Embedded server doesn't chdir to data directory
--replace_result $MYSQLTEST_VARDIR . master-data/ '' --replace_result $MYSQLTEST_VARDIR . mysqld.1/data/ ''
--error 1025 --error 1025
ALTER TABLE t2 MODIFY a INT NOT NULL; ALTER TABLE t2 MODIFY a INT NOT NULL;
DELETE FROM t1; DELETE FROM t1;
......
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
-- disable_result_log -- disable_result_log
# set packet size and reconnect # set packet size and reconnect
SET @save_max_allowed_packet=@@global.max_allowed_packet;
SET @@global.max_allowed_packet=16777216; SET @@global.max_allowed_packet=16777216;
--connect (newconn, localhost, root,,) --connect (newconn, localhost, root,,)
...@@ -30,3 +31,6 @@ ALTER TABLE bug34300 ADD COLUMN (f10 INT); ...@@ -30,3 +31,6 @@ ALTER TABLE bug34300 ADD COLUMN (f10 INT);
SELECT f4, f8 FROM bug34300; SELECT f4, f8 FROM bug34300;
DROP TABLE bug34300; DROP TABLE bug34300;
disconnect newconn;
connection default;
SET @@global.max_allowed_packet=@save_max_allowed_packet;
...@@ -5,6 +5,9 @@ ...@@ -5,6 +5,9 @@
-- source include/have_innodb.inc -- source include/have_innodb.inc
SET @save_innodb_file_format=@@global.innodb_file_format;
SET @save_innodb_file_format_check=@@global.innodb_file_format_check;
SET @save_innodb_file_per_table=@@global.innodb_file_per_table;
SET GLOBAL innodb_file_format='Barracuda'; SET GLOBAL innodb_file_format='Barracuda';
SET GLOBAL innodb_file_per_table=ON; SET GLOBAL innodb_file_per_table=ON;
...@@ -1145,6 +1148,10 @@ KEY `idx44` (`col176`(100),`col42`,`col73`(189),`col94`), ...@@ -1145,6 +1148,10 @@ KEY `idx44` (`col176`(100),`col42`,`col73`(189),`col94`),
KEY `idx45` (`col2`(27),`col27`(116)) KEY `idx45` (`col2`(27),`col27`(116))
)engine=innodb ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=1; )engine=innodb ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=1;
SET GLOBAL innodb_file_format=@save_innodb_file_format;
SET GLOBAL innodb_file_format_check=@save_innodb_file_format_check;
SET GLOBAL innodb_file_per_table=@save_innodb_file_per_table;
DROP TABLE IF EXISTS table0; DROP TABLE IF EXISTS table0;
DROP TABLE IF EXISTS table1; DROP TABLE IF EXISTS table1;
DROP TABLE IF EXISTS table2; DROP TABLE IF EXISTS table2;
......
...@@ -14,6 +14,9 @@ SET storage_engine=InnoDB; ...@@ -14,6 +14,9 @@ SET storage_engine=InnoDB;
-- disable_query_log -- disable_query_log
-- disable_result_log -- disable_result_log
SET @save_innodb_file_format=@@global.innodb_file_format;
SET @save_innodb_file_format_check=@@global.innodb_file_format_check;
SET @save_innodb_file_per_table=@@global.innodb_file_per_table;
SET GLOBAL innodb_file_format='Barracuda'; SET GLOBAL innodb_file_format='Barracuda';
SET GLOBAL innodb_file_per_table=on; SET GLOBAL innodb_file_per_table=on;
...@@ -23,4 +26,8 @@ insert ignore into `table0` set `col23` = 7887371.5084383683, `col24` = 4293854 ...@@ -23,4 +26,8 @@ insert ignore into `table0` set `col23` = 7887371.5084383683, `col24` = 4293854
CHECK TABLE table0 EXTENDED; CHECK TABLE table0 EXTENDED;
INSERT IGNORE INTO `table0` SET `col19` = '19940127002709', `col20` = 2383927.9055146948, `col21` = 4293243420.5621204000, `col22` = '20511211123705', `col23` = 4289899778.6573381000, `col24` = 4293449279.0540481000, `col25` = 'emphysemic', `col26` = 'dentally', `col27` = '2347406', `col28` = 'eruct', `col30` = 1222, `col31` = 4294372994.9941406000, `col32` = 4291385574.1173744000, `col33` = 'borrowing\'s', `col34` = 'septics', `col35` = 'ratter\'s', `col36` = 'Kaye', `col37` = 'Florentia', `col38` = 'allium', `col39` = 'barkeep', `col40` = '19510407003441', `col41` = 4293559200.4215522000, `col42` = 22482, `col43` = 'decussate', `col44` = 'Brom\'s', `col45` = 'violated', `col46` = 4925506.4635456400, `col47` = 930549, `col48` = '51296066', `col49` = 'voluminously', `col50` = '29306676', `col51` = -88, `col52` = -2153690, `col53` = 4290250202.1464887000, `col54` = 'expropriation', `col55` = 'Aberdeen\'s', `col56` = 20343, `col58` = '19640415171532', `col59` = 'extern', `col60` = 'Ubana', `col61` = 4290487961.8539081000, `col62` = '2147', `col63` = -24271, `col64` = '20750801194548', `col65` = 'Cunaxa\'s', `col66` = 'pasticcio', `col67` = 2795817, `col68` = 'Indore\'s', `col70` = 6864127, `col71` = '1817832', `col72` = '20540506114211', `col73` = '20040101012300', `col74` = 'rationalized', `col75` = '45522', `col76` = 'indene', `col77` = -6964559, `col78` = 4247535.5266884370, `col79` = '20720416124357', `col80` = '2143', `col81` = 4292060102.4466386000, `col82` = 'striving', `col83` = 'boneblack\'s', `col84` = 'redolent', `col85` = 6489697.9009369183, `col86` = 4287473465.9731131000, `col87` = 7726015, `col88` = 'perplexed', `col89` = '17153791', `col90` = 5478587.1108127078, `col91` = 4287091404.7004304000, `col92` = 'Boulez\'s', `col93` = '2931278'; INSERT IGNORE INTO `table0` SET `col19` = '19940127002709', `col20` = 2383927.9055146948, `col21` = 4293243420.5621204000, `col22` = '20511211123705', `col23` = 4289899778.6573381000, `col24` = 4293449279.0540481000, `col25` = 'emphysemic', `col26` = 'dentally', `col27` = '2347406', `col28` = 'eruct', `col30` = 1222, `col31` = 4294372994.9941406000, `col32` = 4291385574.1173744000, `col33` = 'borrowing\'s', `col34` = 'septics', `col35` = 'ratter\'s', `col36` = 'Kaye', `col37` = 'Florentia', `col38` = 'allium', `col39` = 'barkeep', `col40` = '19510407003441', `col41` = 4293559200.4215522000, `col42` = 22482, `col43` = 'decussate', `col44` = 'Brom\'s', `col45` = 'violated', `col46` = 4925506.4635456400, `col47` = 930549, `col48` = '51296066', `col49` = 'voluminously', `col50` = '29306676', `col51` = -88, `col52` = -2153690, `col53` = 4290250202.1464887000, `col54` = 'expropriation', `col55` = 'Aberdeen\'s', `col56` = 20343, `col58` = '19640415171532', `col59` = 'extern', `col60` = 'Ubana', `col61` = 4290487961.8539081000, `col62` = '2147', `col63` = -24271, `col64` = '20750801194548', `col65` = 'Cunaxa\'s', `col66` = 'pasticcio', `col67` = 2795817, `col68` = 'Indore\'s', `col70` = 6864127, `col71` = '1817832', `col72` = '20540506114211', `col73` = '20040101012300', `col74` = 'rationalized', `col75` = '45522', `col76` = 'indene', `col77` = -6964559, `col78` = 4247535.5266884370, `col79` = '20720416124357', `col80` = '2143', `col81` = 4292060102.4466386000, `col82` = 'striving', `col83` = 'boneblack\'s', `col84` = 'redolent', `col85` = 6489697.9009369183, `col86` = 4287473465.9731131000, `col87` = 7726015, `col88` = 'perplexed', `col89` = '17153791', `col90` = 5478587.1108127078, `col91` = 4287091404.7004304000, `col92` = 'Boulez\'s', `col93` = '2931278';
CHECK TABLE table0 EXTENDED; CHECK TABLE table0 EXTENDED;
SET GLOBAL innodb_file_format=@save_innodb_file_format;
SET GLOBAL innodb_file_format_check=@save_innodb_file_format_check;
SET GLOBAL innodb_file_per_table=@save_innodb_file_per_table;
DROP TABLE table0; DROP TABLE table0;
-- source include/have_innodb.inc -- source include/have_innodb.inc
SET @save_innodb_file_format=@@global.innodb_file_format;
SET @save_innodb_file_format_check=@@global.innodb_file_format_check;
SET @save_innodb_file_per_table=@@global.innodb_file_per_table;
SET GLOBAL innodb_file_format='Barracuda'; SET GLOBAL innodb_file_format='Barracuda';
SET GLOBAL innodb_file_per_table=ON; SET GLOBAL innodb_file_per_table=ON;
...@@ -35,4 +38,8 @@ DROP PROCEDURE insert_many; ...@@ -35,4 +38,8 @@ DROP PROCEDURE insert_many;
# The bug is hangup at the following statement # The bug is hangup at the following statement
ALTER TABLE test1 ENGINE=MyISAM; ALTER TABLE test1 ENGINE=MyISAM;
SET GLOBAL innodb_file_format=@save_innodb_file_format;
SET GLOBAL innodb_file_format_check=@save_innodb_file_format_check;
SET GLOBAL innodb_file_per_table=@save_innodb_file_per_table;
DROP TABLE test1; DROP TABLE test1;
...@@ -27,14 +27,14 @@ UPDATE t1 SET DATA = data*2 WHERE id = 3; ...@@ -27,14 +27,14 @@ UPDATE t1 SET DATA = data*2 WHERE id = 3;
# grouping/referencing in replace_regex is very slow on long strings, # grouping/referencing in replace_regex is very slow on long strings,
# removing all before/after the interesting row before grouping/referencing # removing all before/after the interesting row before grouping/referencing
--replace_regex /.*---TRANSACTION [0-9A-F]+, .*, OS thread id [0-9]+// /MySQL thread id [0-9]+, query id [0-9]+ .*// /.*([0-9]+ lock struct\(s\)), heap size [0-9]+, ([0-9]+ row lock\(s\)).*/\1 \2/ --replace_regex /.*LIST OF TRANSACTIONS FOR EACH SESSION:// /MySQL thread id [0-9]+, query id [0-9]+ .*// /.*([0-9]+ lock struct\(s\)), heap size [0-9]+, ([0-9]+ row lock\(s\)).*/\1 \2/
SHOW ENGINE InnoDB STATUS; SHOW ENGINE InnoDB STATUS;
UPDATE t1 SET data = data*2 WHERE data = 2; UPDATE t1 SET data = data*2 WHERE data = 2;
# grouping/referencing in replace_regex is very slow on long strings, # grouping/referencing in replace_regex is very slow on long strings,
# removing all before/after the interesting row before grouping/referencing # removing all before/after the interesting row before grouping/referencing
--replace_regex /.*---TRANSACTION [0-9A-F]+, .*, OS thread id [0-9]+// /MySQL thread id [0-9]+, query id [0-9]+ .*// /.*([0-9]+ lock struct\(s\)), heap size [0-9]+, ([0-9]+ row lock\(s\)).*/\1 \2/ --replace_regex /.*LIST OF TRANSACTIONS FOR EACH SESSION:// /MySQL thread id [0-9]+, query id [0-9]+ .*// /.*([0-9]+ lock struct\(s\)), heap size [0-9]+, ([0-9]+ row lock\(s\)).*/\1 \2/
SHOW ENGINE InnoDB STATUS; SHOW ENGINE InnoDB STATUS;
SET @@session.tx_isolation = @old_tx_isolation; SET @@session.tx_isolation = @old_tx_isolation;
......
...@@ -149,6 +149,35 @@ static inline void remove_from_active_list(safe_mutex_t *mp) ...@@ -149,6 +149,35 @@ static inline void remove_from_active_list(safe_mutex_t *mp)
mp->prev= mp->next= 0; mp->prev= mp->next= 0;
} }
/*
We initialise the hashes for deadlock detection lazily.
This greatly helps with performance when lots of mutexes are initiased but
only a few of them are actually used (eg. XtraDB).
*/
static int safe_mutex_lazy_init_deadlock_detection(safe_mutex_t *mp)
{
if (!my_multi_malloc(MY_FAE | MY_WME,
&mp->locked_mutex, sizeof(*mp->locked_mutex),
&mp->used_mutex, sizeof(*mp->used_mutex), NullS))
{
return 1; /* Error */
}
pthread_mutex_lock(&THR_LOCK_mutex);
mp->id= ++safe_mutex_id;
pthread_mutex_unlock(&THR_LOCK_mutex);
hash_init(mp->locked_mutex, &my_charset_bin,
1000,
offsetof(safe_mutex_deadlock_t, id),
sizeof(mp->id),
0, 0, HASH_UNIQUE);
hash_init(mp->used_mutex, &my_charset_bin,
1000,
offsetof(safe_mutex_t, id),
sizeof(mp->id),
0, 0, HASH_UNIQUE);
return 0;
}
int safe_mutex_init(safe_mutex_t *mp, int safe_mutex_init(safe_mutex_t *mp,
const pthread_mutexattr_t *attr __attribute__((unused)), const pthread_mutexattr_t *attr __attribute__((unused)),
...@@ -167,35 +196,8 @@ int safe_mutex_init(safe_mutex_t *mp, ...@@ -167,35 +196,8 @@ int safe_mutex_init(safe_mutex_t *mp,
mp->line= line; mp->line= line;
/* Skip the very common '&' prefix from the autogenerated name */ /* Skip the very common '&' prefix from the autogenerated name */
mp->name= name[0] == '&' ? name + 1 : name; mp->name= name[0] == '&' ? name + 1 : name;
/* Deadlock detection is initialised only lazily, on first use. */
if (safe_mutex_deadlock_detector && !( my_flags & MYF_NO_DEADLOCK_DETECTION))
{
if (!my_multi_malloc(MY_FAE | MY_WME,
&mp->locked_mutex, sizeof(*mp->locked_mutex),
&mp->used_mutex, sizeof(*mp->used_mutex), NullS))
{
/* Disable deadlock handling for this mutex */
my_flags|= MYF_NO_DEADLOCK_DETECTION;
}
else
{
pthread_mutex_lock(&THR_LOCK_mutex);
mp->id= ++safe_mutex_id;
pthread_mutex_unlock(&THR_LOCK_mutex);
hash_init(mp->locked_mutex, &my_charset_bin,
1000,
offsetof(safe_mutex_deadlock_t, id),
sizeof(mp->id),
0, 0, HASH_UNIQUE);
hash_init(mp->used_mutex, &my_charset_bin,
1000,
offsetof(safe_mutex_t, id),
sizeof(mp->id),
0, 0, HASH_UNIQUE);
}
}
else
my_flags|= MYF_NO_DEADLOCK_DETECTION;
mp->create_flags= my_flags; mp->create_flags= my_flags;
#ifdef SAFE_MUTEX_DETECT_DESTROY #ifdef SAFE_MUTEX_DETECT_DESTROY
...@@ -310,7 +312,8 @@ int safe_mutex_lock(safe_mutex_t *mp, myf my_flags, const char *file, ...@@ -310,7 +312,8 @@ int safe_mutex_lock(safe_mutex_t *mp, myf my_flags, const char *file,
/* Deadlock detection */ /* Deadlock detection */
mp->prev= mp->next= 0; mp->prev= mp->next= 0;
if (!(mp->active_flags & (MYF_TRY_LOCK | MYF_NO_DEADLOCK_DETECTION))) if (!(mp->active_flags & (MYF_TRY_LOCK | MYF_NO_DEADLOCK_DETECTION)) &&
(mp->used_mutex != NULL || !safe_mutex_lazy_init_deadlock_detection(mp)))
{ {
safe_mutex_t **mutex_in_use= my_thread_var_mutex_in_use(); safe_mutex_t **mutex_in_use= my_thread_var_mutex_in_use();
...@@ -643,7 +646,7 @@ int safe_mutex_destroy(safe_mutex_t *mp, const char *file, uint line) ...@@ -643,7 +646,7 @@ int safe_mutex_destroy(safe_mutex_t *mp, const char *file, uint line)
void safe_mutex_free_deadlock_data(safe_mutex_t *mp) void safe_mutex_free_deadlock_data(safe_mutex_t *mp)
{ {
/* Free all entries that points to this one */ /* Free all entries that points to this one */
if (!(mp->create_flags & MYF_NO_DEADLOCK_DETECTION)) if (!(mp->create_flags & MYF_NO_DEADLOCK_DETECTION) && mp->used_mutex != NULL)
{ {
pthread_mutex_lock(&THR_LOCK_mutex); pthread_mutex_lock(&THR_LOCK_mutex);
my_hash_iterate(mp->used_mutex, my_hash_iterate(mp->used_mutex,
......
...@@ -422,7 +422,12 @@ ibuf_init_at_db_start(void) ...@@ -422,7 +422,12 @@ ibuf_init_at_db_start(void)
grow in size, as the references on the upper levels of the tree can grow in size, as the references on the upper levels of the tree can
change */ change */
ibuf->max_size = ut_min( buf_pool_get_curr_size() / UNIV_PAGE_SIZE /* The default for ibuf_max_size is calculated from the requested
buffer pool size srv_buf_pool_size, not the actual size as returned
by buf_pool_get_curr_size(). The latter can differ from the former
by one page due to alignment requirements, and we do not want a
user-visible variable like INNODB_IBUF_MAX_SIZE to vary at random. */
ibuf->max_size = ut_min( srv_buf_pool_size / UNIV_PAGE_SIZE
/ IBUF_POOL_SIZE_PER_MAX_SIZE, (ulint) srv_ibuf_max_size / UNIV_PAGE_SIZE); / IBUF_POOL_SIZE_PER_MAX_SIZE, (ulint) srv_ibuf_max_size / UNIV_PAGE_SIZE);
srv_ibuf_max_size = (long long) ibuf->max_size * UNIV_PAGE_SIZE; srv_ibuf_max_size = (long long) ibuf->max_size * UNIV_PAGE_SIZE;
......
...@@ -357,6 +357,8 @@ rw_lock_get_x_lock_count( ...@@ -357,6 +357,8 @@ rw_lock_get_x_lock_count(
rw_lock_t* lock); /* in: rw-lock */ rw_lock_t* lock); /* in: rw-lock */
/************************************************************************ /************************************************************************
Accessor functions for rw lock. */ Accessor functions for rw lock. */
#ifdef INNODB_RW_LOCKS_USE_ATOMICS
UNIV_INLINE UNIV_INLINE
ulint ulint
rw_lock_get_s_waiters( rw_lock_get_s_waiters(
...@@ -372,6 +374,14 @@ ulint ...@@ -372,6 +374,14 @@ ulint
rw_lock_get_wx_waiters( rw_lock_get_wx_waiters(
/*================*/ /*================*/
rw_lock_t* lock); rw_lock_t* lock);
#else /* !INNODB_RW_LOCKS_USE_ATOMICS */
UNIV_INLINE
ulint
rw_lock_get_waiters(
/*==================*/
rw_lock_t* lock);
#endif /* INNODB_RW_LOCKS_USE_ATOMICS */
UNIV_INLINE UNIV_INLINE
ulint ulint
rw_lock_get_writer( rw_lock_get_writer(
...@@ -488,6 +498,7 @@ rw_lock_debug_print( ...@@ -488,6 +498,7 @@ rw_lock_debug_print(
rw_lock_debug_t* info); /* in: debug struct */ rw_lock_debug_t* info); /* in: debug struct */
#endif /* UNIV_SYNC_DEBUG */ #endif /* UNIV_SYNC_DEBUG */
/*
#ifndef INNODB_RW_LOCKS_USE_ATOMICS #ifndef INNODB_RW_LOCKS_USE_ATOMICS
#error INNODB_RW_LOCKS_USE_ATOMICS is not defined. Do you use enough new GCC or compatibles? #error INNODB_RW_LOCKS_USE_ATOMICS is not defined. Do you use enough new GCC or compatibles?
#error Or do you use exact options for CFLAGS? #error Or do you use exact options for CFLAGS?
...@@ -495,6 +506,7 @@ rw_lock_debug_print( ...@@ -495,6 +506,7 @@ rw_lock_debug_print(
#error e.g. (for Sparc_64): "-m64 -mcpu=v9" #error e.g. (for Sparc_64): "-m64 -mcpu=v9"
#error Otherwise, this build may be slower than normal version. #error Otherwise, this build may be slower than normal version.
#endif #endif
*/
/* NOTE! The structure appears here only for the compiler to know its size. /* NOTE! The structure appears here only for the compiler to know its size.
Do not use its fields directly! The structure used in the spin lock Do not use its fields directly! The structure used in the spin lock
......
...@@ -68,6 +68,8 @@ rw_lock_remove_debug_info( ...@@ -68,6 +68,8 @@ rw_lock_remove_debug_info(
/************************************************************************ /************************************************************************
Accessor functions for rw lock. */ Accessor functions for rw lock. */
#ifdef INNODB_RW_LOCKS_USE_ATOMICS
UNIV_INLINE UNIV_INLINE
ulint ulint
rw_lock_get_s_waiters( rw_lock_get_s_waiters(
...@@ -93,23 +95,32 @@ rw_lock_get_wx_waiters( ...@@ -93,23 +95,32 @@ rw_lock_get_wx_waiters(
{ {
return(lock->wait_ex_waiters); return(lock->wait_ex_waiters);
} }
#else /* !INNODB_RW_LOCKS_USE_ATOMICS */
UNIV_INLINE
ulint
rw_lock_get_waiters(
/*================*/
/* out: 1 if waiters, 0 otherwise */
rw_lock_t* lock) /* in: rw-lock */
{
return(lock->waiters);
}
#endif /* INNODB_RW_LOCKS_USE_ATOMICS */
/************************************************************************ /************************************************************************
Sets lock->waiters to 1. It is not an error if lock->waiters is already Sets lock->waiters to 1. It is not an error if lock->waiters is already
1. On platforms where ATOMIC builtins are used this function enforces a 1. On platforms where ATOMIC builtins are used this function enforces a
memory barrier. */ memory barrier. */
#ifdef INNODB_RW_LOCKS_USE_ATOMICS
UNIV_INLINE UNIV_INLINE
void void
rw_lock_set_s_waiter_flag( rw_lock_set_s_waiter_flag(
/*====================*/ /*====================*/
rw_lock_t* lock) /* in: rw-lock */ rw_lock_t* lock) /* in: rw-lock */
{ {
#ifdef INNODB_RW_LOCKS_USE_ATOMICS
// os_compare_and_swap(&lock->s_waiters, 0, 1); // os_compare_and_swap(&lock->s_waiters, 0, 1);
__sync_lock_test_and_set(&lock->s_waiters, 1); __sync_lock_test_and_set(&lock->s_waiters, 1);
#else /* INNODB_RW_LOCKS_USE_ATOMICS */
lock->s_waiters = 1;
#endif /* INNODB_RW_LOCKS_USE_ATOMICS */
} }
UNIV_INLINE UNIV_INLINE
void void
...@@ -117,12 +128,8 @@ rw_lock_set_x_waiter_flag( ...@@ -117,12 +128,8 @@ rw_lock_set_x_waiter_flag(
/*====================*/ /*====================*/
rw_lock_t* lock) /* in: rw-lock */ rw_lock_t* lock) /* in: rw-lock */
{ {
#ifdef INNODB_RW_LOCKS_USE_ATOMICS
// os_compare_and_swap(&lock->x_waiters, 0, 1); // os_compare_and_swap(&lock->x_waiters, 0, 1);
__sync_lock_test_and_set(&lock->x_waiters, 1); __sync_lock_test_and_set(&lock->x_waiters, 1);
#else /* INNODB_RW_LOCKS_USE_ATOMICS */
lock->x_waiters = 1;
#endif /* INNODB_RW_LOCKS_USE_ATOMICS */
} }
UNIV_INLINE UNIV_INLINE
void void
...@@ -130,30 +137,34 @@ rw_lock_set_wx_waiter_flag( ...@@ -130,30 +137,34 @@ rw_lock_set_wx_waiter_flag(
/*====================*/ /*====================*/
rw_lock_t* lock) /* in: rw-lock */ rw_lock_t* lock) /* in: rw-lock */
{ {
#ifdef INNODB_RW_LOCKS_USE_ATOMICS
// os_compare_and_swap(&lock->wait_ex_waiters, 0, 1); // os_compare_and_swap(&lock->wait_ex_waiters, 0, 1);
__sync_lock_test_and_set(&lock->wait_ex_waiters, 1); __sync_lock_test_and_set(&lock->wait_ex_waiters, 1);
#else /* INNODB_RW_LOCKS_USE_ATOMICS */
lock->wait_ex_waiters = 1;
#endif /* INNODB_RW_LOCKS_USE_ATOMICS */
} }
#else /* !INNODB_RW_LOCKS_USE_ATOMICS */
UNIV_INLINE
void
rw_lock_set_waiter_flag(
/*====================*/
rw_lock_t* lock) /* in: rw-lock */
{
lock->waiters = 1;
}
#endif /* INNODB_RW_LOCKS_USE_ATOMICS */
/************************************************************************ /************************************************************************
Resets lock->waiters to 0. It is not an error if lock->waiters is already Resets lock->waiters to 0. It is not an error if lock->waiters is already
0. On platforms where ATOMIC builtins are used this function enforces a 0. On platforms where ATOMIC builtins are used this function enforces a
memory barrier. */ memory barrier. */
#ifdef INNODB_RW_LOCKS_USE_ATOMICS
UNIV_INLINE UNIV_INLINE
void void
rw_lock_reset_s_waiter_flag( rw_lock_reset_s_waiter_flag(
/*======================*/ /*======================*/
rw_lock_t* lock) /* in: rw-lock */ rw_lock_t* lock) /* in: rw-lock */
{ {
#ifdef INNODB_RW_LOCKS_USE_ATOMICS
// os_compare_and_swap(&lock->s_waiters, 1, 0); // os_compare_and_swap(&lock->s_waiters, 1, 0);
__sync_lock_test_and_set(&lock->s_waiters, 0); __sync_lock_test_and_set(&lock->s_waiters, 0);
#else /* INNODB_RW_LOCKS_USE_ATOMICS */
lock->s_waiters = 0;
#endif /* INNODB_RW_LOCKS_USE_ATOMICS */
} }
UNIV_INLINE UNIV_INLINE
void void
...@@ -161,12 +172,8 @@ rw_lock_reset_x_waiter_flag( ...@@ -161,12 +172,8 @@ rw_lock_reset_x_waiter_flag(
/*======================*/ /*======================*/
rw_lock_t* lock) /* in: rw-lock */ rw_lock_t* lock) /* in: rw-lock */
{ {
#ifdef INNODB_RW_LOCKS_USE_ATOMICS
// os_compare_and_swap(&lock->x_waiters, 1, 0); // os_compare_and_swap(&lock->x_waiters, 1, 0);
__sync_lock_test_and_set(&lock->x_waiters, 0); __sync_lock_test_and_set(&lock->x_waiters, 0);
#else /* INNODB_RW_LOCKS_USE_ATOMICS */
lock->x_waiters = 0;
#endif /* INNODB_RW_LOCKS_USE_ATOMICS */
} }
UNIV_INLINE UNIV_INLINE
void void
...@@ -174,13 +181,19 @@ rw_lock_reset_wx_waiter_flag( ...@@ -174,13 +181,19 @@ rw_lock_reset_wx_waiter_flag(
/*======================*/ /*======================*/
rw_lock_t* lock) /* in: rw-lock */ rw_lock_t* lock) /* in: rw-lock */
{ {
#ifdef INNODB_RW_LOCKS_USE_ATOMICS
// os_compare_and_swap(&lock->wait_ex_waiters, 1, 0); // os_compare_and_swap(&lock->wait_ex_waiters, 1, 0);
__sync_lock_test_and_set(&lock->wait_ex_waiters, 0); __sync_lock_test_and_set(&lock->wait_ex_waiters, 0);
#else /* INNODB_RW_LOCKS_USE_ATOMICS */
lock->wait_ex_waiters = 0;
#endif /* INNODB_RW_LOCKS_USE_ATOMICS */
} }
#else /* !INNODB_RW_LOCKS_USE_ATOMICS */
UNIV_INLINE
void
rw_lock_reset_waiter_flag(
/*======================*/
rw_lock_t* lock) /* in: rw-lock */
{
lock->waiters = 0;
}
#endif /* INNODB_RW_LOCKS_USE_ATOMICS */
/********************************************************************** /**********************************************************************
Returns the write-status of the lock - this function made more sense Returns the write-status of the lock - this function made more sense
......
...@@ -210,7 +210,7 @@ operations (very slow); also UNIV_DEBUG must be defined */ ...@@ -210,7 +210,7 @@ operations (very slow); also UNIV_DEBUG must be defined */
#define UNIV_BTR_DEBUG /* check B-tree links */ #define UNIV_BTR_DEBUG /* check B-tree links */
#define UNIV_LIGHT_MEM_DEBUG /* light memory debugging */ #define UNIV_LIGHT_MEM_DEBUG /* light memory debugging */
#ifdef HAVE_purify #ifdef HAVE_valgrind
/* The following sets all new allocated memory to zero before use: /* The following sets all new allocated memory to zero before use:
this can be used to eliminate unnecessary Purify warnings, but note that this can be used to eliminate unnecessary Purify warnings, but note that
it also masks many bugs Purify could detect. For detailed Purify analysis it it also masks many bugs Purify could detect. For detailed Purify analysis it
......
#!/bin/sh
#
# Copyright (c) 1995, 2009, Innobase Oy. All Rights Reserved.
#
# This program is free software; you can redistribute it and/or modify it under
# the terms of the GNU General Public License as published by the Free Software
# Foundation; version 2 of the License.
#
# This program is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along with
# this program; if not, write to the Free Software Foundation, Inc., 59 Temple
# Place, Suite 330, Boston, MA 02111-1307 USA
#
# Prepare the MySQL source code tree for building
# with checked-out InnoDB Subversion directory.
# This script assumes that the current directory is storage/innobase.
set -eu
TARGETDIR=../storage/innobase
# link the build scripts
BUILDSCRIPTS="compile-innodb compile-innodb-debug"
for script in $BUILDSCRIPTS ; do
ln -sf $TARGETDIR/$script ../../BUILD/
done
cd ../../mysql-test/t
ln -sf ../$TARGETDIR/mysql-test/*.test ../$TARGETDIR/mysql-test/*.opt .
cd ../r
ln -sf ../$TARGETDIR/mysql-test/*.result .
cd ../include
ln -sf ../$TARGETDIR/mysql-test/*.inc .
# Apply any patches that are needed to make the mysql-test suite successful.
# These patches are usually needed because of deviations of behavior between
# the stock InnoDB and the InnoDB Plugin.
cd ../..
for patch in storage/innobase/mysql-test/patches/*.diff ; do
if [ "${patch}" != "storage/innobase/mysql-test/patches/*.diff" ] ; then
patch -p0 < ${patch}
fi
done
...@@ -124,7 +124,7 @@ static char* srv_monitor_file_name; ...@@ -124,7 +124,7 @@ static char* srv_monitor_file_name;
/* Avoid warnings when using purify */ /* Avoid warnings when using purify */
#ifdef HAVE_purify #ifdef HAVE_valgrind
static int inno_bcmp(register const char *s1, register const char *s2, static int inno_bcmp(register const char *s1, register const char *s2,
register uint len) register uint len)
{ {
......
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