Merge tag 'tokudb-engine/tokudb-7.5.7' into 5.5
This commit is contained in:
commit
7b05650c7d
1
.gitignore
vendored
1
.gitignore
vendored
@ -193,6 +193,7 @@ storage/tokudb/ft-index/tools/tokudb_dump
|
|||||||
storage/tokudb/ft-index/tools/tokudb_gen
|
storage/tokudb/ft-index/tools/tokudb_gen
|
||||||
storage/tokudb/ft-index/tools/tokudb_load
|
storage/tokudb/ft-index/tools/tokudb_load
|
||||||
storage/tokudb/ft-index/tools/tokuftdump
|
storage/tokudb/ft-index/tools/tokuftdump
|
||||||
|
storage/tokudb/ft-index/tools/tokuft_logprint
|
||||||
storage/tokudb/ft-index/ft/ftverify
|
storage/tokudb/ft-index/ft/ftverify
|
||||||
storage/tokudb/ft-index/ft/tdb-recover
|
storage/tokudb/ft-index/ft/tdb-recover
|
||||||
storage/tokudb/ft-index/ft/tdb_logprint
|
storage/tokudb/ft-index/ft/tdb_logprint
|
||||||
|
18
mysql-test/suite/tokudb.bugs/r/db805.result
Normal file
18
mysql-test/suite/tokudb.bugs/r/db805.result
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
drop table if exists t1,t3;
|
||||||
|
create table t3(a3 int,b3 decimal(0,0),c3 int,d3 int,primary key(a3,b3)) engine=TOKUDB;
|
||||||
|
LOCK TABLES t3 WRITE;
|
||||||
|
create temporary table t1(f1 int,index(f1)) engine=innodb;
|
||||||
|
INSERT INTO t1 VALUES(1),(1),(1);
|
||||||
|
select * from t1;
|
||||||
|
f1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
ALTER TABLE t1 engine=TOKUDB;
|
||||||
|
select * from t1;
|
||||||
|
f1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
unlock tables;
|
||||||
|
drop table t1,t3;
|
9
mysql-test/suite/tokudb.bugs/r/db806.result
Normal file
9
mysql-test/suite/tokudb.bugs/r/db806.result
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
drop table if exists t1,t3;
|
||||||
|
CREATE TABLE t3(a int,c int,d int)engine=TOKUDB;
|
||||||
|
lock table t3 read;
|
||||||
|
create temporary table t1 engine=tokudb as SELECT 1;
|
||||||
|
select * from t1;
|
||||||
|
1
|
||||||
|
1
|
||||||
|
unlock tables;
|
||||||
|
drop table t1,t3;
|
14
mysql-test/suite/tokudb.bugs/r/db811.result
Normal file
14
mysql-test/suite/tokudb.bugs/r/db811.result
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
drop table if exists t2,t3,t4;
|
||||||
|
CREATE TABLE t3(a INT,b INT,UNIQUE KEY (a,b)) engine=TOKUDB;
|
||||||
|
CREATE TABLE t4(c1 FLOAT ZEROFILL) engine=innodb;
|
||||||
|
CREATE TABLE t2(a int KEY,b CHAR (1)) engine=TOKUDB PARTITION BY HASH (a) PARTITIONS 13;
|
||||||
|
LOCK TABLES t4 WRITE,t3 WRITE,t2 WRITE;
|
||||||
|
INSERT INTO t2(a)VALUES (REPEAT(0,1));
|
||||||
|
ALTER TABLE t2 ADD COLUMN(c INT);
|
||||||
|
alter table t4 add column c int;
|
||||||
|
UPDATE t2 SET a=1;
|
||||||
|
select * from t2;
|
||||||
|
a b c
|
||||||
|
1 NULL NULL
|
||||||
|
unlock tables;
|
||||||
|
drop table t2,t3,t4;
|
14
mysql-test/suite/tokudb.bugs/r/db811s.result
Normal file
14
mysql-test/suite/tokudb.bugs/r/db811s.result
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
drop table if exists t2,t3,t4;
|
||||||
|
CREATE TABLE t3(a INT,b INT,UNIQUE KEY (a,b)) engine=TOKUDB;
|
||||||
|
CREATE TABLE t4(c1 FLOAT ZEROFILL) engine=innodb;
|
||||||
|
CREATE TABLE t2(a int KEY,b CHAR (1)) engine=TOKUDB PARTITION BY HASH (a) PARTITIONS 1;
|
||||||
|
LOCK TABLES t4 WRITE,t3 WRITE,t2 WRITE;
|
||||||
|
INSERT INTO t2(a)VALUES (REPEAT(0,1));
|
||||||
|
ALTER TABLE t2 ADD COLUMN(c INT);
|
||||||
|
alter table t4 add column c int;
|
||||||
|
UPDATE t2 SET a=1;
|
||||||
|
select * from t2;
|
||||||
|
a b c
|
||||||
|
1 NULL NULL
|
||||||
|
unlock tables;
|
||||||
|
drop table t2,t3,t4;
|
11
mysql-test/suite/tokudb.bugs/r/db823.result
Normal file
11
mysql-test/suite/tokudb.bugs/r/db823.result
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
drop table if exists s,t;
|
||||||
|
create table s (id int) engine=tokudb;
|
||||||
|
lock tables s write;
|
||||||
|
create temporary table t (id int, key(id)) engine=innodb;
|
||||||
|
insert into t values (1);
|
||||||
|
alter table t engine=tokudb;
|
||||||
|
select * from t;
|
||||||
|
id
|
||||||
|
1
|
||||||
|
unlock tables;
|
||||||
|
drop table s, t;
|
17
mysql-test/suite/tokudb.bugs/t/db805.test
Normal file
17
mysql-test/suite/tokudb.bugs/t/db805.test
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
# DB-805 test that conversion of t1 from innodb to tokudb can write rows
|
||||||
|
source include/have_tokudb.inc;
|
||||||
|
source include/have_innodb.inc;
|
||||||
|
disable_warnings;
|
||||||
|
drop table if exists t1,t3;
|
||||||
|
enable_warnings;
|
||||||
|
|
||||||
|
create table t3(a3 int,b3 decimal(0,0),c3 int,d3 int,primary key(a3,b3)) engine=TOKUDB;
|
||||||
|
LOCK TABLES t3 WRITE;
|
||||||
|
create temporary table t1(f1 int,index(f1)) engine=innodb;
|
||||||
|
INSERT INTO t1 VALUES(1),(1),(1);
|
||||||
|
select * from t1;
|
||||||
|
ALTER TABLE t1 engine=TOKUDB;
|
||||||
|
select * from t1;
|
||||||
|
unlock tables;
|
||||||
|
|
||||||
|
drop table t1,t3;
|
13
mysql-test/suite/tokudb.bugs/t/db806.test
Normal file
13
mysql-test/suite/tokudb.bugs/t/db806.test
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
# DB-806 test that lock tables and create select can write rows to the new table
|
||||||
|
source include/have_tokudb.inc;
|
||||||
|
disable_warnings;
|
||||||
|
drop table if exists t1,t3;
|
||||||
|
enable_warnings;
|
||||||
|
|
||||||
|
CREATE TABLE t3(a int,c int,d int)engine=TOKUDB;
|
||||||
|
lock table t3 read;
|
||||||
|
create temporary table t1 engine=tokudb as SELECT 1;
|
||||||
|
select * from t1;
|
||||||
|
unlock tables;
|
||||||
|
|
||||||
|
drop table t1,t3;
|
22
mysql-test/suite/tokudb.bugs/t/db811.test
Normal file
22
mysql-test/suite/tokudb.bugs/t/db811.test
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
# DB-811 test that alter table t2 updates both the schema (FRM) and the data (tokudb files)
|
||||||
|
|
||||||
|
source include/have_tokudb.inc;
|
||||||
|
source include/have_innodb.inc;
|
||||||
|
source include/have_partition.inc;
|
||||||
|
disable_warnings;
|
||||||
|
drop table if exists t2,t3,t4;
|
||||||
|
enable_warnings;
|
||||||
|
|
||||||
|
CREATE TABLE t3(a INT,b INT,UNIQUE KEY (a,b)) engine=TOKUDB;
|
||||||
|
CREATE TABLE t4(c1 FLOAT ZEROFILL) engine=innodb;
|
||||||
|
CREATE TABLE t2(a int KEY,b CHAR (1)) engine=TOKUDB PARTITION BY HASH (a) PARTITIONS 13;
|
||||||
|
LOCK TABLES t4 WRITE,t3 WRITE,t2 WRITE;
|
||||||
|
INSERT INTO t2(a)VALUES (REPEAT(0,1));
|
||||||
|
ALTER TABLE t2 ADD COLUMN(c INT);
|
||||||
|
alter table t4 add column c int;
|
||||||
|
UPDATE t2 SET a=1;
|
||||||
|
select * from t2;
|
||||||
|
unlock tables;
|
||||||
|
|
||||||
|
drop table t2,t3,t4;
|
||||||
|
|
22
mysql-test/suite/tokudb.bugs/t/db811s.test
Normal file
22
mysql-test/suite/tokudb.bugs/t/db811s.test
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
# DB-811 test that alter table t2 updates both the schema (FRM) and the data (tokudb files)
|
||||||
|
|
||||||
|
source include/have_tokudb.inc;
|
||||||
|
source include/have_innodb.inc;
|
||||||
|
source include/have_partition.inc;
|
||||||
|
disable_warnings;
|
||||||
|
drop table if exists t2,t3,t4;
|
||||||
|
enable_warnings;
|
||||||
|
|
||||||
|
CREATE TABLE t3(a INT,b INT,UNIQUE KEY (a,b)) engine=TOKUDB;
|
||||||
|
CREATE TABLE t4(c1 FLOAT ZEROFILL) engine=innodb;
|
||||||
|
CREATE TABLE t2(a int KEY,b CHAR (1)) engine=TOKUDB PARTITION BY HASH (a) PARTITIONS 1;
|
||||||
|
LOCK TABLES t4 WRITE,t3 WRITE,t2 WRITE;
|
||||||
|
INSERT INTO t2(a)VALUES (REPEAT(0,1));
|
||||||
|
ALTER TABLE t2 ADD COLUMN(c INT);
|
||||||
|
alter table t4 add column c int;
|
||||||
|
UPDATE t2 SET a=1;
|
||||||
|
select * from t2;
|
||||||
|
unlock tables;
|
||||||
|
|
||||||
|
drop table t2,t3,t4;
|
||||||
|
|
16
mysql-test/suite/tokudb.bugs/t/db823.test
Normal file
16
mysql-test/suite/tokudb.bugs/t/db823.test
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
# test DB-823
|
||||||
|
# test that the conversion of table t from innodb to tokudb succeeds.
|
||||||
|
source include/have_tokudb.inc;
|
||||||
|
source include/have_innodb.inc;
|
||||||
|
disable_warnings;
|
||||||
|
drop table if exists s,t;
|
||||||
|
enable_warnings;
|
||||||
|
create table s (id int) engine=tokudb;
|
||||||
|
lock tables s write;
|
||||||
|
create temporary table t (id int, key(id)) engine=innodb;
|
||||||
|
insert into t values (1);
|
||||||
|
alter table t engine=tokudb;
|
||||||
|
select * from t;
|
||||||
|
unlock tables;
|
||||||
|
drop table s, t;
|
||||||
|
|
@ -6207,6 +6207,12 @@ int ha_tokudb::external_lock(THD * thd, int lock_type) {
|
|||||||
if (error) { goto cleanup; }
|
if (error) { goto cleanup; }
|
||||||
thd_set_ha_data(thd, tokudb_hton, trx);
|
thd_set_ha_data(thd, tokudb_hton, trx);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (tokudb_debug & TOKUDB_DEBUG_TXN) {
|
||||||
|
TOKUDB_HANDLER_TRACE("trx %p %p %p %p %u %u", trx->all, trx->stmt, trx->sp_level, trx->sub_sp_level,
|
||||||
|
trx->tokudb_lock_count, trx->create_lock_count);
|
||||||
|
}
|
||||||
|
|
||||||
if (trx->all == NULL) {
|
if (trx->all == NULL) {
|
||||||
trx->sp_level = NULL;
|
trx->sp_level = NULL;
|
||||||
}
|
}
|
||||||
@ -6215,22 +6221,16 @@ int ha_tokudb::external_lock(THD * thd, int lock_type) {
|
|||||||
if (lock_type == F_WRLCK) {
|
if (lock_type == F_WRLCK) {
|
||||||
use_write_locks = true;
|
use_write_locks = true;
|
||||||
}
|
}
|
||||||
if (!trx->tokudb_lock_count++) {
|
if (!trx->stmt) {
|
||||||
if (trx->stmt) {
|
transaction = NULL; // Safety
|
||||||
if (tokudb_debug & TOKUDB_DEBUG_TXN) {
|
error = create_txn(thd, trx);
|
||||||
TOKUDB_HANDLER_TRACE("stmt already set %p %p %p %p", trx->all, trx->stmt, trx->sp_level, trx->sub_sp_level);
|
if (error) {
|
||||||
}
|
goto cleanup;
|
||||||
} else {
|
|
||||||
assert(trx->stmt == 0);
|
|
||||||
transaction = NULL; // Safety
|
|
||||||
error = create_txn(thd, trx);
|
|
||||||
if (error) {
|
|
||||||
trx->tokudb_lock_count--; // We didn't get the lock
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
trx->create_lock_count = trx->tokudb_lock_count;
|
||||||
}
|
}
|
||||||
transaction = trx->sub_sp_level;
|
transaction = trx->sub_sp_level;
|
||||||
|
trx->tokudb_lock_count++;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
tokudb_pthread_mutex_lock(&share->mutex);
|
tokudb_pthread_mutex_lock(&share->mutex);
|
||||||
@ -6245,21 +6245,24 @@ int ha_tokudb::external_lock(THD * thd, int lock_type) {
|
|||||||
added_rows = 0;
|
added_rows = 0;
|
||||||
deleted_rows = 0;
|
deleted_rows = 0;
|
||||||
share->rows_from_locked_table = 0;
|
share->rows_from_locked_table = 0;
|
||||||
if (trx->tokudb_lock_count > 0 && !--trx->tokudb_lock_count) {
|
if (trx->tokudb_lock_count > 0) {
|
||||||
if (trx->stmt) {
|
if (--trx->tokudb_lock_count <= trx->create_lock_count) {
|
||||||
/*
|
trx->create_lock_count = 0;
|
||||||
F_UNLCK is done without a transaction commit / rollback.
|
if (trx->stmt) {
|
||||||
This happens if the thread didn't update any rows
|
/*
|
||||||
We must in this case commit the work to keep the row locks
|
F_UNLCK is done without a transaction commit / rollback.
|
||||||
*/
|
This happens if the thread didn't update any rows
|
||||||
DBUG_PRINT("trans", ("commiting non-updating transaction"));
|
We must in this case commit the work to keep the row locks
|
||||||
reset_stmt_progress(&trx->stmt_progress);
|
*/
|
||||||
commit_txn(trx->stmt, 0);
|
DBUG_PRINT("trans", ("commiting non-updating transaction"));
|
||||||
trx->stmt = NULL;
|
reset_stmt_progress(&trx->stmt_progress);
|
||||||
trx->sub_sp_level = NULL;
|
commit_txn(trx->stmt, 0);
|
||||||
|
trx->stmt = NULL;
|
||||||
|
trx->sub_sp_level = NULL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
transaction = NULL;
|
||||||
}
|
}
|
||||||
transaction = NULL;
|
|
||||||
}
|
}
|
||||||
cleanup:
|
cleanup:
|
||||||
if (tokudb_debug & TOKUDB_DEBUG_LOCK)
|
if (tokudb_debug & TOKUDB_DEBUG_LOCK)
|
||||||
@ -6274,8 +6277,9 @@ cleanup:
|
|||||||
*/
|
*/
|
||||||
int ha_tokudb::start_stmt(THD * thd, thr_lock_type lock_type) {
|
int ha_tokudb::start_stmt(THD * thd, thr_lock_type lock_type) {
|
||||||
TOKUDB_HANDLER_DBUG_ENTER("cmd %d lock %d %s", thd_sql_command(thd), lock_type, share->table_name);
|
TOKUDB_HANDLER_DBUG_ENTER("cmd %d lock %d %s", thd_sql_command(thd), lock_type, share->table_name);
|
||||||
if (0)
|
if (tokudb_debug & TOKUDB_DEBUG_LOCK) {
|
||||||
TOKUDB_HANDLER_TRACE("q %s", thd->query());
|
TOKUDB_HANDLER_TRACE("q %s", thd->query());
|
||||||
|
}
|
||||||
|
|
||||||
int error = 0;
|
int error = 0;
|
||||||
tokudb_trx_data *trx = (tokudb_trx_data *) thd_get_ha_data(thd, tokudb_hton);
|
tokudb_trx_data *trx = (tokudb_trx_data *) thd_get_ha_data(thd, tokudb_hton);
|
||||||
@ -6285,6 +6289,11 @@ int ha_tokudb::start_stmt(THD * thd, thr_lock_type lock_type) {
|
|||||||
thd_set_ha_data(thd, tokudb_hton, trx);
|
thd_set_ha_data(thd, tokudb_hton, trx);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (tokudb_debug & TOKUDB_DEBUG_TXN) {
|
||||||
|
TOKUDB_HANDLER_TRACE("trx %p %p %p %p %u %u", trx->all, trx->stmt, trx->sp_level, trx->sub_sp_level,
|
||||||
|
trx->tokudb_lock_count, trx->create_lock_count);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
note that trx->stmt may have been already initialized as start_stmt()
|
note that trx->stmt may have been already initialized as start_stmt()
|
||||||
is called for *each table* not for each storage engine,
|
is called for *each table* not for each storage engine,
|
||||||
@ -6295,9 +6304,7 @@ int ha_tokudb::start_stmt(THD * thd, thr_lock_type lock_type) {
|
|||||||
if (error) {
|
if (error) {
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
if (tokudb_debug & TOKUDB_DEBUG_TXN) {
|
trx->create_lock_count = trx->tokudb_lock_count;
|
||||||
TOKUDB_HANDLER_TRACE("%p %p %p %p %u", trx->all, trx->stmt, trx->sp_level, trx->sub_sp_level, trx->tokudb_lock_count);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (tokudb_debug & TOKUDB_DEBUG_TXN) {
|
if (tokudb_debug & TOKUDB_DEBUG_TXN) {
|
||||||
|
@ -121,9 +121,10 @@ static int analyze_progress(void *v_extra, uint64_t rows) {
|
|||||||
progress_time = (float) (t_now - t_start) / (float) t_limit;
|
progress_time = (float) (t_now - t_start) / (float) t_limit;
|
||||||
char *write_status_msg = extra->write_status_msg;
|
char *write_status_msg = extra->write_status_msg;
|
||||||
TABLE_SHARE *table_share = extra->table_share;
|
TABLE_SHARE *table_share = extra->table_share;
|
||||||
sprintf(write_status_msg, "%s.%s.%s %u of %u %.lf%% rows %.lf%% time",
|
sprintf(write_status_msg, "%.*s.%.*s.%s %u of %u %.lf%% rows %.lf%% time",
|
||||||
table_share->db.str, table_share->table_name.str, extra->key_name,
|
(int) table_share->db.length, table_share->db.str,
|
||||||
extra->key_i, table_share->keys, progress_rows * 100.0, progress_time * 100.0);
|
(int) table_share->table_name.length, table_share->table_name.str,
|
||||||
|
extra->key_name, extra->key_i, table_share->keys, progress_rows * 100.0, progress_time * 100.0);
|
||||||
thd_proc_info(thd, write_status_msg);
|
thd_proc_info(thd, write_status_msg);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -338,8 +339,10 @@ static int ha_tokudb_check_progress(void *extra, float progress) {
|
|||||||
|
|
||||||
static void ha_tokudb_check_info(THD *thd, TABLE *table, const char *msg) {
|
static void ha_tokudb_check_info(THD *thd, TABLE *table, const char *msg) {
|
||||||
if (thd->vio_ok()) {
|
if (thd->vio_ok()) {
|
||||||
char tablename[256];
|
char tablename[table->s->db.length + 1 + table->s->table_name.length + 1];
|
||||||
snprintf(tablename, sizeof tablename, "%s.%s", table->s->db.str, table->s->table_name.str);
|
snprintf(tablename, sizeof tablename, "%.*s.%.*s",
|
||||||
|
(int) table->s->db.length, table->s->db.str,
|
||||||
|
(int) table->s->table_name.length, table->s->table_name.str);
|
||||||
thd->protocol->prepare_for_resend();
|
thd->protocol->prepare_for_resend();
|
||||||
thd->protocol->store(tablename, strlen(tablename), system_charset_info);
|
thd->protocol->store(tablename, strlen(tablename), system_charset_info);
|
||||||
thd->protocol->store("check", 5, system_charset_info);
|
thd->protocol->store("check", 5, system_charset_info);
|
||||||
@ -388,6 +391,11 @@ int ha_tokudb::check(THD *thd, HA_CHECK_OPT *check_opt) {
|
|||||||
}
|
}
|
||||||
struct check_context check_context = { thd };
|
struct check_context check_context = { thd };
|
||||||
r = db->verify_with_progress(db, ha_tokudb_check_progress, &check_context, (tokudb_debug & TOKUDB_DEBUG_CHECK) != 0, keep_going);
|
r = db->verify_with_progress(db, ha_tokudb_check_progress, &check_context, (tokudb_debug & TOKUDB_DEBUG_CHECK) != 0, keep_going);
|
||||||
|
if (r != 0) {
|
||||||
|
char msg[32 + strlen(kname)];
|
||||||
|
sprintf(msg, "Corrupt %s", kname);
|
||||||
|
ha_tokudb_check_info(thd, table, msg);
|
||||||
|
}
|
||||||
snprintf(write_status_msg, sizeof write_status_msg, "%s key=%s %u result=%d", share->table_name, kname, i, r);
|
snprintf(write_status_msg, sizeof write_status_msg, "%s key=%s %u result=%d", share->table_name, kname, i, r);
|
||||||
thd_proc_info(thd, write_status_msg);
|
thd_proc_info(thd, write_status_msg);
|
||||||
if (tokudb_debug & TOKUDB_DEBUG_CHECK) {
|
if (tokudb_debug & TOKUDB_DEBUG_CHECK) {
|
||||||
|
@ -784,13 +784,16 @@ bool ha_tokudb::commit_inplace_alter_table(TABLE *altered_table, Alter_inplace_i
|
|||||||
assert(trx->tokudb_lock_count > 0);
|
assert(trx->tokudb_lock_count > 0);
|
||||||
// for partitioned tables, we use a single transaction to do all of the partition changes. the tokudb_lock_count
|
// for partitioned tables, we use a single transaction to do all of the partition changes. the tokudb_lock_count
|
||||||
// is a reference count for each of the handlers to the same transaction. obviously, we want to only abort once.
|
// is a reference count for each of the handlers to the same transaction. obviously, we want to only abort once.
|
||||||
if (!--trx->tokudb_lock_count) {
|
if (trx->tokudb_lock_count > 0) {
|
||||||
abort_txn(ctx->alter_txn);
|
if (--trx->tokudb_lock_count <= trx->create_lock_count) {
|
||||||
ctx->alter_txn = NULL;
|
trx->create_lock_count = 0;
|
||||||
trx->stmt = NULL;
|
abort_txn(ctx->alter_txn);
|
||||||
trx->sub_sp_level = NULL;
|
ctx->alter_txn = NULL;
|
||||||
|
trx->stmt = NULL;
|
||||||
|
trx->sub_sp_level = NULL;
|
||||||
|
}
|
||||||
|
transaction = NULL;
|
||||||
}
|
}
|
||||||
transaction = NULL;
|
|
||||||
|
|
||||||
if (ctx->add_index_changed) {
|
if (ctx->add_index_changed) {
|
||||||
restore_add_index(table, ha_alter_info->index_add_count, ctx->incremented_num_DBs, ctx->modified_DBs);
|
restore_add_index(table, ha_alter_info->index_add_count, ctx->incremented_num_DBs, ctx->modified_DBs);
|
||||||
|
@ -355,6 +355,7 @@ typedef struct st_tokudb_trx_data {
|
|||||||
DB_TXN *sp_level;
|
DB_TXN *sp_level;
|
||||||
DB_TXN *sub_sp_level;
|
DB_TXN *sub_sp_level;
|
||||||
uint tokudb_lock_count;
|
uint tokudb_lock_count;
|
||||||
|
uint create_lock_count;
|
||||||
tokudb_stmt_progress stmt_progress;
|
tokudb_stmt_progress stmt_progress;
|
||||||
bool checkpoint_lock_taken;
|
bool checkpoint_lock_taken;
|
||||||
LIST *handlers;
|
LIST *handlers;
|
||||||
|
@ -1724,6 +1724,8 @@ static int tokudb_fractal_tree_info(TABLE *table, THD *thd) {
|
|||||||
error = tmp_cursor->c_get(tmp_cursor, &curr_key, &curr_val, DB_NEXT);
|
error = tmp_cursor->c_get(tmp_cursor, &curr_key, &curr_val, DB_NEXT);
|
||||||
if (!error) {
|
if (!error) {
|
||||||
error = tokudb_report_fractal_tree_info_for_db(&curr_key, &curr_val, table, thd);
|
error = tokudb_report_fractal_tree_info_for_db(&curr_key, &curr_val, table, thd);
|
||||||
|
if (error)
|
||||||
|
error = 0; // ignore read uncommitted errors
|
||||||
}
|
}
|
||||||
if (!error && thd_killed(thd))
|
if (!error && thd_killed(thd))
|
||||||
error = ER_QUERY_INTERRUPTED;
|
error = ER_QUERY_INTERRUPTED;
|
||||||
@ -2002,7 +2004,9 @@ struct tokudb_search_txn_extra {
|
|||||||
uint64_t match_client_id;
|
uint64_t match_client_id;
|
||||||
};
|
};
|
||||||
|
|
||||||
static int tokudb_search_txn_callback(uint64_t txn_id, uint64_t client_id, iterate_row_locks_callback iterate_locks, void *locks_extra, void *extra) {
|
static int tokudb_search_txn_callback(DB_TXN *txn, iterate_row_locks_callback iterate_locks, void *locks_extra, void *extra) {
|
||||||
|
uint64_t txn_id = txn->id64(txn);
|
||||||
|
uint64_t client_id = txn->get_client_id(txn);
|
||||||
struct tokudb_search_txn_extra *e = reinterpret_cast<struct tokudb_search_txn_extra *>(extra);
|
struct tokudb_search_txn_extra *e = reinterpret_cast<struct tokudb_search_txn_extra *>(extra);
|
||||||
if (e->match_txn_id == txn_id) {
|
if (e->match_txn_id == txn_id) {
|
||||||
e->match_found = true;
|
e->match_found = true;
|
||||||
@ -2134,6 +2138,7 @@ static struct st_mysql_information_schema tokudb_trx_information_schema = { MYSQ
|
|||||||
static ST_FIELD_INFO tokudb_trx_field_info[] = {
|
static ST_FIELD_INFO tokudb_trx_field_info[] = {
|
||||||
{"trx_id", 0, MYSQL_TYPE_LONGLONG, 0, 0, NULL, SKIP_OPEN_TABLE },
|
{"trx_id", 0, MYSQL_TYPE_LONGLONG, 0, 0, NULL, SKIP_OPEN_TABLE },
|
||||||
{"trx_mysql_thread_id", 0, MYSQL_TYPE_LONGLONG, 0, 0, NULL, SKIP_OPEN_TABLE },
|
{"trx_mysql_thread_id", 0, MYSQL_TYPE_LONGLONG, 0, 0, NULL, SKIP_OPEN_TABLE },
|
||||||
|
{"trx_time", 0, MYSQL_TYPE_LONGLONG, 0, 0, NULL, SKIP_OPEN_TABLE },
|
||||||
{NULL, 0, MYSQL_TYPE_NULL, 0, 0, NULL, SKIP_OPEN_TABLE}
|
{NULL, 0, MYSQL_TYPE_NULL, 0, 0, NULL, SKIP_OPEN_TABLE}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -2142,12 +2147,17 @@ struct tokudb_trx_extra {
|
|||||||
TABLE *table;
|
TABLE *table;
|
||||||
};
|
};
|
||||||
|
|
||||||
static int tokudb_trx_callback(uint64_t txn_id, uint64_t client_id, iterate_row_locks_callback iterate_locks, void *locks_extra, void *extra) {
|
static int tokudb_trx_callback(DB_TXN *txn, iterate_row_locks_callback iterate_locks, void *locks_extra, void *extra) {
|
||||||
|
uint64_t txn_id = txn->id64(txn);
|
||||||
|
uint64_t client_id = txn->get_client_id(txn);
|
||||||
|
uint64_t start_time = txn->get_start_time(txn);
|
||||||
struct tokudb_trx_extra *e = reinterpret_cast<struct tokudb_trx_extra *>(extra);
|
struct tokudb_trx_extra *e = reinterpret_cast<struct tokudb_trx_extra *>(extra);
|
||||||
THD *thd = e->thd;
|
THD *thd = e->thd;
|
||||||
TABLE *table = e->table;
|
TABLE *table = e->table;
|
||||||
table->field[0]->store(txn_id, false);
|
table->field[0]->store(txn_id, false);
|
||||||
table->field[1]->store(client_id, false);
|
table->field[1]->store(client_id, false);
|
||||||
|
uint64_t tnow = (uint64_t) time(NULL);
|
||||||
|
table->field[2]->store(tnow >= start_time ? tnow - start_time : 0, false);
|
||||||
int error = schema_table_store_record(thd, table);
|
int error = schema_table_store_record(thd, table);
|
||||||
if (!error && thd_killed(thd))
|
if (!error && thd_killed(thd))
|
||||||
error = ER_QUERY_INTERRUPTED;
|
error = ER_QUERY_INTERRUPTED;
|
||||||
@ -2295,7 +2305,9 @@ struct tokudb_locks_extra {
|
|||||||
TABLE *table;
|
TABLE *table;
|
||||||
};
|
};
|
||||||
|
|
||||||
static int tokudb_locks_callback(uint64_t txn_id, uint64_t client_id, iterate_row_locks_callback iterate_locks, void *locks_extra, void *extra) {
|
static int tokudb_locks_callback(DB_TXN *txn, iterate_row_locks_callback iterate_locks, void *locks_extra, void *extra) {
|
||||||
|
uint64_t txn_id = txn->id64(txn);
|
||||||
|
uint64_t client_id = txn->get_client_id(txn);
|
||||||
struct tokudb_locks_extra *e = reinterpret_cast<struct tokudb_locks_extra *>(extra);
|
struct tokudb_locks_extra *e = reinterpret_cast<struct tokudb_locks_extra *>(extra);
|
||||||
THD *thd = e->thd;
|
THD *thd = e->thd;
|
||||||
TABLE *table = e->table;
|
TABLE *table = e->table;
|
||||||
|
@ -2,7 +2,7 @@ set default_storage_engine='tokudb';
|
|||||||
set tokudb_prelock_empty=false;
|
set tokudb_prelock_empty=false;
|
||||||
drop table if exists t;
|
drop table if exists t;
|
||||||
create table t (id int primary key);
|
create table t (id int primary key);
|
||||||
select * from information_schema.tokudb_trx;
|
select trx_id,trx_mysql_thread_id from information_schema.tokudb_trx;
|
||||||
trx_id trx_mysql_thread_id
|
trx_id trx_mysql_thread_id
|
||||||
select * from information_schema.tokudb_locks;
|
select * from information_schema.tokudb_locks;
|
||||||
locks_trx_id locks_mysql_thread_id locks_dname locks_key_left locks_key_right locks_table_schema locks_table_name locks_table_dictionary_name
|
locks_trx_id locks_mysql_thread_id locks_dname locks_key_left locks_key_right locks_table_schema locks_table_name locks_table_dictionary_name
|
||||||
@ -19,7 +19,7 @@ TRX_ID MYSQL_ID ./test/t-main 0001000000 0001000000 test t main
|
|||||||
select * from information_schema.tokudb_lock_waits;
|
select * from information_schema.tokudb_lock_waits;
|
||||||
requesting_trx_id blocking_trx_id lock_waits_dname lock_waits_key_left lock_waits_key_right lock_waits_start_time lock_waits_table_schema lock_waits_table_name lock_waits_table_dictionary_name
|
requesting_trx_id blocking_trx_id lock_waits_dname lock_waits_key_left lock_waits_key_right lock_waits_start_time lock_waits_table_schema lock_waits_table_name lock_waits_table_dictionary_name
|
||||||
REQUEST_TRX_ID BLOCK_TRX_ID ./test/t-main 0001000000 0001000000 LOCK_WAITS_START_TIME test t main
|
REQUEST_TRX_ID BLOCK_TRX_ID ./test/t-main 0001000000 0001000000 LOCK_WAITS_START_TIME test t main
|
||||||
select * from information_schema.tokudb_trx;
|
select trx_id,trx_mysql_thread_id from information_schema.tokudb_trx;
|
||||||
trx_id trx_mysql_thread_id
|
trx_id trx_mysql_thread_id
|
||||||
TRX_ID MYSQL_ID
|
TRX_ID MYSQL_ID
|
||||||
TRX_ID MYSQL_ID
|
TRX_ID MYSQL_ID
|
||||||
@ -31,7 +31,7 @@ select * from information_schema.tokudb_lock_waits;
|
|||||||
requesting_trx_id blocking_trx_id lock_waits_dname lock_waits_key_left lock_waits_key_right lock_waits_start_time lock_waits_table_schema lock_waits_table_name lock_waits_table_dictionary_name
|
requesting_trx_id blocking_trx_id lock_waits_dname lock_waits_key_left lock_waits_key_right lock_waits_start_time lock_waits_table_schema lock_waits_table_name lock_waits_table_dictionary_name
|
||||||
ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
|
ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
|
||||||
commit;
|
commit;
|
||||||
select * from information_schema.tokudb_trx;
|
select trx_id,trx_mysql_thread_id from information_schema.tokudb_trx;
|
||||||
trx_id trx_mysql_thread_id
|
trx_id trx_mysql_thread_id
|
||||||
select * from information_schema.tokudb_locks;
|
select * from information_schema.tokudb_locks;
|
||||||
locks_trx_id locks_mysql_thread_id locks_dname locks_key_left locks_key_right locks_table_schema locks_table_name locks_table_dictionary_name
|
locks_trx_id locks_mysql_thread_id locks_dname locks_key_left locks_key_right locks_table_schema locks_table_name locks_table_dictionary_name
|
||||||
@ -48,7 +48,7 @@ TRX_ID MYSQL_ID ./test/t-main 0001000000 0001000000 test t main
|
|||||||
select * from information_schema.tokudb_lock_waits;
|
select * from information_schema.tokudb_lock_waits;
|
||||||
requesting_trx_id blocking_trx_id lock_waits_dname lock_waits_key_left lock_waits_key_right lock_waits_start_time lock_waits_table_schema lock_waits_table_name lock_waits_table_dictionary_name
|
requesting_trx_id blocking_trx_id lock_waits_dname lock_waits_key_left lock_waits_key_right lock_waits_start_time lock_waits_table_schema lock_waits_table_name lock_waits_table_dictionary_name
|
||||||
REQUEST_TRX_ID BLOCK_TRX_ID ./test/t-main 0001000000 0001000000 LOCK_WAITS_START_TIME test t main
|
REQUEST_TRX_ID BLOCK_TRX_ID ./test/t-main 0001000000 0001000000 LOCK_WAITS_START_TIME test t main
|
||||||
select * from information_schema.tokudb_trx;
|
select trx_id,trx_mysql_thread_id from information_schema.tokudb_trx;
|
||||||
trx_id trx_mysql_thread_id
|
trx_id trx_mysql_thread_id
|
||||||
TRX_ID MYSQL_ID
|
TRX_ID MYSQL_ID
|
||||||
TRX_ID MYSQL_ID
|
TRX_ID MYSQL_ID
|
||||||
@ -59,7 +59,7 @@ TRX_ID MYSQL_ID ./test/t-main 0001000000 0001000000 test t main
|
|||||||
select * from information_schema.tokudb_lock_waits;
|
select * from information_schema.tokudb_lock_waits;
|
||||||
requesting_trx_id blocking_trx_id lock_waits_dname lock_waits_key_left lock_waits_key_right lock_waits_start_time lock_waits_table_schema lock_waits_table_name lock_waits_table_dictionary_name
|
requesting_trx_id blocking_trx_id lock_waits_dname lock_waits_key_left lock_waits_key_right lock_waits_start_time lock_waits_table_schema lock_waits_table_name lock_waits_table_dictionary_name
|
||||||
commit;
|
commit;
|
||||||
select * from information_schema.tokudb_trx;
|
select trx_id,trx_mysql_thread_id from information_schema.tokudb_trx;
|
||||||
trx_id trx_mysql_thread_id
|
trx_id trx_mysql_thread_id
|
||||||
select * from information_schema.tokudb_locks;
|
select * from information_schema.tokudb_locks;
|
||||||
locks_trx_id locks_mysql_thread_id locks_dname locks_key_left locks_key_right locks_table_schema locks_table_name locks_table_dictionary_name
|
locks_trx_id locks_mysql_thread_id locks_dname locks_key_left locks_key_right locks_table_schema locks_table_name locks_table_dictionary_name
|
||||||
|
@ -2,7 +2,7 @@ set default_storage_engine='tokudb';
|
|||||||
set tokudb_prelock_empty=false;
|
set tokudb_prelock_empty=false;
|
||||||
drop table if exists t;
|
drop table if exists t;
|
||||||
create table t (id int primary key);
|
create table t (id int primary key);
|
||||||
select * from information_schema.tokudb_trx;
|
select trx_id,trx_mysql_thread_id from information_schema.tokudb_trx;
|
||||||
trx_id trx_mysql_thread_id
|
trx_id trx_mysql_thread_id
|
||||||
select * from information_schema.tokudb_locks;
|
select * from information_schema.tokudb_locks;
|
||||||
locks_trx_id locks_mysql_thread_id locks_dname locks_key_left locks_key_right locks_table_schema locks_table_name locks_table_dictionary_name
|
locks_trx_id locks_mysql_thread_id locks_dname locks_key_left locks_key_right locks_table_schema locks_table_name locks_table_dictionary_name
|
||||||
@ -19,7 +19,7 @@ TRX_ID MYSQL_ID ./test/t-main 0001000000 0001000000 test t main
|
|||||||
select * from information_schema.tokudb_lock_waits;
|
select * from information_schema.tokudb_lock_waits;
|
||||||
requesting_trx_id blocking_trx_id lock_waits_dname lock_waits_key_left lock_waits_key_right lock_waits_start_time lock_waits_table_schema lock_waits_table_name lock_waits_table_dictionary_name
|
requesting_trx_id blocking_trx_id lock_waits_dname lock_waits_key_left lock_waits_key_right lock_waits_start_time lock_waits_table_schema lock_waits_table_name lock_waits_table_dictionary_name
|
||||||
REQUEST_TRX_ID BLOCK_TRX_ID ./test/t-main 0001000000 0001000000 LOCK_WAITS_START_TIME test t main
|
REQUEST_TRX_ID BLOCK_TRX_ID ./test/t-main 0001000000 0001000000 LOCK_WAITS_START_TIME test t main
|
||||||
select * from information_schema.tokudb_trx;
|
select trx_id,trx_mysql_thread_id from information_schema.tokudb_trx;
|
||||||
trx_id trx_mysql_thread_id
|
trx_id trx_mysql_thread_id
|
||||||
TRX_ID MYSQL_ID
|
TRX_ID MYSQL_ID
|
||||||
TRX_ID MYSQL_ID
|
TRX_ID MYSQL_ID
|
||||||
@ -30,7 +30,7 @@ select * from information_schema.tokudb_lock_waits;
|
|||||||
requesting_trx_id blocking_trx_id lock_waits_dname lock_waits_key_left lock_waits_key_right lock_waits_start_time lock_waits_table_schema lock_waits_table_name lock_waits_table_dictionary_name
|
requesting_trx_id blocking_trx_id lock_waits_dname lock_waits_key_left lock_waits_key_right lock_waits_start_time lock_waits_table_schema lock_waits_table_name lock_waits_table_dictionary_name
|
||||||
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
|
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
|
||||||
commit;
|
commit;
|
||||||
select * from information_schema.tokudb_trx;
|
select trx_id,trx_mysql_thread_id from information_schema.tokudb_trx;
|
||||||
trx_id trx_mysql_thread_id
|
trx_id trx_mysql_thread_id
|
||||||
select * from information_schema.tokudb_locks;
|
select * from information_schema.tokudb_locks;
|
||||||
locks_trx_id locks_mysql_thread_id locks_dname locks_key_left locks_key_right locks_table_schema locks_table_name locks_table_dictionary_name
|
locks_trx_id locks_mysql_thread_id locks_dname locks_key_left locks_key_right locks_table_schema locks_table_name locks_table_dictionary_name
|
||||||
|
@ -1,23 +1,23 @@
|
|||||||
set default_storage_engine='tokudb';
|
set default_storage_engine='tokudb';
|
||||||
set tokudb_prelock_empty=false;
|
set tokudb_prelock_empty=false;
|
||||||
drop table if exists t;
|
drop table if exists t;
|
||||||
select * from information_schema.tokudb_trx;
|
select trx_id,trx_mysql_thread_id from information_schema.tokudb_trx;
|
||||||
trx_id trx_mysql_thread_id
|
trx_id trx_mysql_thread_id
|
||||||
set autocommit=0;
|
set autocommit=0;
|
||||||
create table t (id int primary key);
|
create table t (id int primary key);
|
||||||
insert into t values (1);
|
insert into t values (1);
|
||||||
select * from information_schema.tokudb_trx;
|
select trx_id,trx_mysql_thread_id from information_schema.tokudb_trx;
|
||||||
trx_id trx_mysql_thread_id
|
trx_id trx_mysql_thread_id
|
||||||
TXN_ID_DEFAULT CLIENT_ID_DEFAULT
|
TXN_ID_DEFAULT CLIENT_ID_DEFAULT
|
||||||
commit;
|
commit;
|
||||||
select * from information_schema.tokudb_trx;
|
select trx_id,trx_mysql_thread_id from information_schema.tokudb_trx;
|
||||||
trx_id trx_mysql_thread_id
|
trx_id trx_mysql_thread_id
|
||||||
set autocommit=0;
|
set autocommit=0;
|
||||||
insert into t values (2);
|
insert into t values (2);
|
||||||
select * from information_schema.tokudb_trx;
|
select trx_id,trx_mysql_thread_id from information_schema.tokudb_trx;
|
||||||
trx_id trx_mysql_thread_id
|
trx_id trx_mysql_thread_id
|
||||||
TXN_ID_A CLIENT_ID_A
|
TXN_ID_A CLIENT_ID_A
|
||||||
commit;
|
commit;
|
||||||
select * from information_schema.tokudb_trx;
|
select trx_id,trx_mysql_thread_id from information_schema.tokudb_trx;
|
||||||
trx_id trx_mysql_thread_id
|
trx_id trx_mysql_thread_id
|
||||||
drop table t;
|
drop table t;
|
||||||
|
@ -13,7 +13,7 @@ create table t (id int primary key);
|
|||||||
# verify that txn_a insert (1) blocks txn_b insert (1) and txn_b gets a duplicate key error
|
# verify that txn_a insert (1) blocks txn_b insert (1) and txn_b gets a duplicate key error
|
||||||
|
|
||||||
# should be empty
|
# should be empty
|
||||||
select * from information_schema.tokudb_trx;
|
select trx_id,trx_mysql_thread_id from information_schema.tokudb_trx;
|
||||||
select * from information_schema.tokudb_locks;
|
select * from information_schema.tokudb_locks;
|
||||||
select * from information_schema.tokudb_lock_waits;
|
select * from information_schema.tokudb_lock_waits;
|
||||||
|
|
||||||
@ -43,7 +43,7 @@ select * from information_schema.tokudb_lock_waits;
|
|||||||
|
|
||||||
# should find the presence of two transactions
|
# should find the presence of two transactions
|
||||||
replace_column 1 TRX_ID 2 MYSQL_ID;
|
replace_column 1 TRX_ID 2 MYSQL_ID;
|
||||||
select * from information_schema.tokudb_trx;
|
select trx_id,trx_mysql_thread_id from information_schema.tokudb_trx;
|
||||||
|
|
||||||
connection conn_a;
|
connection conn_a;
|
||||||
commit;
|
commit;
|
||||||
@ -66,7 +66,7 @@ disconnect conn_b;
|
|||||||
|
|
||||||
# verify that the lock on the 2nd transaction has been released
|
# verify that the lock on the 2nd transaction has been released
|
||||||
# should be be empty
|
# should be be empty
|
||||||
select * from information_schema.tokudb_trx;
|
select trx_id,trx_mysql_thread_id from information_schema.tokudb_trx;
|
||||||
select * from information_schema.tokudb_locks;
|
select * from information_schema.tokudb_locks;
|
||||||
select * from information_schema.tokudb_lock_waits;
|
select * from information_schema.tokudb_lock_waits;
|
||||||
|
|
||||||
@ -96,7 +96,7 @@ select * from information_schema.tokudb_lock_waits;
|
|||||||
|
|
||||||
# should find the presence of two transactions
|
# should find the presence of two transactions
|
||||||
replace_column 1 TRX_ID 2 MYSQL_ID;
|
replace_column 1 TRX_ID 2 MYSQL_ID;
|
||||||
select * from information_schema.tokudb_trx;
|
select trx_id,trx_mysql_thread_id from information_schema.tokudb_trx;
|
||||||
|
|
||||||
connection conn_a;
|
connection conn_a;
|
||||||
commit;
|
commit;
|
||||||
@ -116,7 +116,7 @@ disconnect conn_b;
|
|||||||
|
|
||||||
# verify that the lock on the 2nd transaction has been released
|
# verify that the lock on the 2nd transaction has been released
|
||||||
# should be be empty
|
# should be be empty
|
||||||
select * from information_schema.tokudb_trx;
|
select trx_id,trx_mysql_thread_id from information_schema.tokudb_trx;
|
||||||
select * from information_schema.tokudb_locks;
|
select * from information_schema.tokudb_locks;
|
||||||
select * from information_schema.tokudb_lock_waits;
|
select * from information_schema.tokudb_lock_waits;
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@ enable_warnings;
|
|||||||
create table t (id int primary key);
|
create table t (id int primary key);
|
||||||
|
|
||||||
# should be empty
|
# should be empty
|
||||||
select * from information_schema.tokudb_trx;
|
select trx_id,trx_mysql_thread_id from information_schema.tokudb_trx;
|
||||||
select * from information_schema.tokudb_locks;
|
select * from information_schema.tokudb_locks;
|
||||||
select * from information_schema.tokudb_lock_waits;
|
select * from information_schema.tokudb_lock_waits;
|
||||||
|
|
||||||
@ -40,7 +40,7 @@ select * from information_schema.tokudb_lock_waits;
|
|||||||
|
|
||||||
# should find the presence of two transactions
|
# should find the presence of two transactions
|
||||||
replace_column 1 TRX_ID 2 MYSQL_ID;
|
replace_column 1 TRX_ID 2 MYSQL_ID;
|
||||||
select * from information_schema.tokudb_trx;
|
select trx_id,trx_mysql_thread_id from information_schema.tokudb_trx;
|
||||||
|
|
||||||
connection conn_a;
|
connection conn_a;
|
||||||
sleep 5; # sleep longer than the lock timer to force a lock timeout on txn_b
|
sleep 5; # sleep longer than the lock timer to force a lock timeout on txn_b
|
||||||
@ -61,7 +61,7 @@ disconnect conn_a;
|
|||||||
disconnect conn_b;
|
disconnect conn_b;
|
||||||
|
|
||||||
# should be be empty
|
# should be be empty
|
||||||
select * from information_schema.tokudb_trx;
|
select trx_id,trx_mysql_thread_id from information_schema.tokudb_trx;
|
||||||
select * from information_schema.tokudb_locks;
|
select * from information_schema.tokudb_locks;
|
||||||
select * from information_schema.tokudb_lock_waits;
|
select * from information_schema.tokudb_lock_waits;
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ drop table if exists t;
|
|||||||
enable_warnings;
|
enable_warnings;
|
||||||
|
|
||||||
# should be empty
|
# should be empty
|
||||||
select * from information_schema.tokudb_trx;
|
select trx_id,trx_mysql_thread_id from information_schema.tokudb_trx;
|
||||||
|
|
||||||
# should have my txn
|
# should have my txn
|
||||||
let $default_id=`select connection_id()`;
|
let $default_id=`select connection_id()`;
|
||||||
@ -16,11 +16,11 @@ set autocommit=0;
|
|||||||
create table t (id int primary key);
|
create table t (id int primary key);
|
||||||
insert into t values (1);
|
insert into t values (1);
|
||||||
replace_column 1 TXN_ID_DEFAULT 2 CLIENT_ID_DEFAULT;
|
replace_column 1 TXN_ID_DEFAULT 2 CLIENT_ID_DEFAULT;
|
||||||
eval select * from information_schema.tokudb_trx;
|
eval select trx_id,trx_mysql_thread_id from information_schema.tokudb_trx;
|
||||||
|
|
||||||
# should be empty
|
# should be empty
|
||||||
commit;
|
commit;
|
||||||
select * from information_schema.tokudb_trx;
|
select trx_id,trx_mysql_thread_id from information_schema.tokudb_trx;
|
||||||
|
|
||||||
connect(conn_a,localhost,root,,);
|
connect(conn_a,localhost,root,,);
|
||||||
let a_id=`select connection_id()`;
|
let a_id=`select connection_id()`;
|
||||||
@ -29,13 +29,13 @@ insert into t values (2);
|
|||||||
|
|
||||||
connection default;
|
connection default;
|
||||||
replace_column 1 TXN_ID_A 2 CLIENT_ID_A;
|
replace_column 1 TXN_ID_A 2 CLIENT_ID_A;
|
||||||
eval select * from information_schema.tokudb_trx;
|
eval select trx_id,trx_mysql_thread_id from information_schema.tokudb_trx;
|
||||||
connection conn_a;
|
connection conn_a;
|
||||||
commit;
|
commit;
|
||||||
connection default;
|
connection default;
|
||||||
|
|
||||||
# should be empty
|
# should be empty
|
||||||
select * from information_schema.tokudb_trx;
|
select trx_id,trx_mysql_thread_id from information_schema.tokudb_trx;
|
||||||
|
|
||||||
disconnect conn_a;
|
disconnect conn_a;
|
||||||
|
|
||||||
|
@ -3,7 +3,8 @@ drop table if exists t;
|
|||||||
create table t (id int primary key);
|
create table t (id int primary key);
|
||||||
begin;
|
begin;
|
||||||
insert into t values (1),(2);
|
insert into t values (1),(2);
|
||||||
select * from information_schema.tokudb_fractal_tree_info;
|
select dictionary_name from information_schema.tokudb_fractal_tree_info;
|
||||||
ERROR HY000: Got error -30994 from storage engine
|
dictionary_name
|
||||||
|
./test/t-status
|
||||||
commit;
|
commit;
|
||||||
drop table t;
|
drop table t;
|
||||||
|
@ -7,7 +7,6 @@ enable_warnings;
|
|||||||
create table t (id int primary key);
|
create table t (id int primary key);
|
||||||
begin;
|
begin;
|
||||||
insert into t values (1),(2);
|
insert into t values (1),(2);
|
||||||
--error 1030
|
select dictionary_name from information_schema.tokudb_fractal_tree_info;
|
||||||
select * from information_schema.tokudb_fractal_tree_info;
|
|
||||||
commit;
|
commit;
|
||||||
drop table t;
|
drop table t;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user