mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
Copy of
commit de1e8c7bfe7c875ea284b55040e8f3cd3a56fcc2 Author: Abhinav Sharma <abhinavsharma@fb.com> Date: Thu Aug 23 14:34:39 2018 -0700 Log updates to semi-sync whitelist in the error log Summary: Plugin variable changes are not logged in the error log even when log_global_var_changes is enabled. Logging updates to whitelist will help in debugging. Reviewed By: guokeno0 Differential Revision: D9483807 fbshipit-source-id: e111cda773d
This commit is contained in:
@@ -82,32 +82,43 @@ ENDIF()
|
|||||||
|
|
||||||
SET(rocksdb_static_libs )
|
SET(rocksdb_static_libs )
|
||||||
IF (WITH_SNAPPY)
|
IF (WITH_SNAPPY)
|
||||||
|
FIND_LIBRARY(SNAPPY_LIBRARY
|
||||||
|
NAMES libsnappy${PIC_EXT}.a snappy
|
||||||
|
HINTS ${WITH_SNAPPY}/lib)
|
||||||
SET(rocksdb_static_libs ${rocksdb_static_libs}
|
SET(rocksdb_static_libs ${rocksdb_static_libs}
|
||||||
${WITH_SNAPPY}/lib/libsnappy${PIC_EXT}.a)
|
${SNAPPY_LIBRARY})
|
||||||
ADD_DEFINITIONS(-DSNAPPY)
|
ADD_DEFINITIONS(-DSNAPPY)
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
|
||||||
IF (WITH_LZ4)
|
IF (WITH_LZ4)
|
||||||
|
FIND_LIBRARY(LZ4_LIBRARY
|
||||||
|
NAMES liblz4${PIC_EXT}.a lz4
|
||||||
|
HINTS ${WITH_LZ4}/lib)
|
||||||
SET(rocksdb_static_libs ${rocksdb_static_libs}
|
SET(rocksdb_static_libs ${rocksdb_static_libs}
|
||||||
${WITH_LZ4}/lib/liblz4${PIC_EXT}.a)
|
${LZ4_LIBRARY})
|
||||||
ADD_DEFINITIONS(-DLZ4)
|
ADD_DEFINITIONS(-DLZ4)
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
|
||||||
IF (WITH_BZ2)
|
IF (WITH_BZ2)
|
||||||
|
FIND_LIBRARY(BZ2_LIBRARY
|
||||||
|
NAMES libbz2${PIC_EXT}.a bz2
|
||||||
|
HINTS ${WITH_BZ2}/lib)
|
||||||
SET(rocksdb_static_libs ${rocksdb_static_libs}
|
SET(rocksdb_static_libs ${rocksdb_static_libs}
|
||||||
${WITH_BZ2}/lib/libbz2${PIC_EXT}.a)
|
${BZ2_LIBRARY})
|
||||||
ADD_DEFINITIONS(-DBZIP2)
|
ADD_DEFINITIONS(-DBZIP2)
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
|
||||||
IF (WITH_ZSTD)
|
IF (WITH_ZSTD)
|
||||||
SET(rocksdb_static_libs ${rocksdb_static_libs}
|
SET(rocksdb_static_libs ${rocksdb_static_libs} ${ZSTD_LIBRARY})
|
||||||
${WITH_ZSTD}/lib/libzstd${PIC_EXT}.a)
|
|
||||||
ADD_DEFINITIONS(-DZSTD)
|
ADD_DEFINITIONS(-DZSTD)
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
|
||||||
IF (WITH_TBB)
|
IF (WITH_TBB)
|
||||||
|
FIND_LIBRARY(TBB_LIBRARY
|
||||||
|
NAMES libtbb${PIC_EXT}.a tbb
|
||||||
|
HINTS ${WITH_TBB}/lib)
|
||||||
SET(rocksdb_static_libs ${rocksdb_static_libs}
|
SET(rocksdb_static_libs ${rocksdb_static_libs}
|
||||||
${WITH_TBB}/lib/libtbb${PIC_EXT}.a)
|
${TBB_LIBRARY})
|
||||||
ADD_DEFINITIONS(-DTBB)
|
ADD_DEFINITIONS(-DTBB)
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
|
||||||
|
File diff suppressed because it is too large
Load Diff
@@ -104,6 +104,7 @@ struct Rdb_deadlock_info {
|
|||||||
std::string table_name;
|
std::string table_name;
|
||||||
};
|
};
|
||||||
std::vector <Rdb_dl_trx_info> path;
|
std::vector <Rdb_dl_trx_info> path;
|
||||||
|
int64_t deadlock_time;
|
||||||
ulonglong victim_trx_id;
|
ulonglong victim_trx_id;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -144,6 +145,11 @@ const char *const BG_THREAD_NAME = "myrocks-bg";
|
|||||||
*/
|
*/
|
||||||
const char *const INDEX_THREAD_NAME = "myrocks-index";
|
const char *const INDEX_THREAD_NAME = "myrocks-index";
|
||||||
|
|
||||||
|
/*
|
||||||
|
Name for the manual compaction thread.
|
||||||
|
*/
|
||||||
|
const char *const MANUAL_COMPACTION_THREAD_NAME = "myrocks-mc";
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Separator between partition name and the qualifier. Sample usage:
|
Separator between partition name and the qualifier. Sample usage:
|
||||||
|
|
||||||
@@ -485,6 +491,12 @@ class ha_rocksdb : public my_core::handler {
|
|||||||
|
|
||||||
const rocksdb::Snapshot *m_scan_it_snapshot;
|
const rocksdb::Snapshot *m_scan_it_snapshot;
|
||||||
|
|
||||||
|
/* Buffers used for upper/lower bounds for m_scan_it. */
|
||||||
|
uchar *m_scan_it_lower_bound;
|
||||||
|
uchar *m_scan_it_upper_bound;
|
||||||
|
rocksdb::Slice m_scan_it_lower_bound_slice;
|
||||||
|
rocksdb::Slice m_scan_it_upper_bound_slice;
|
||||||
|
|
||||||
Rdb_tbl_def *m_tbl_def;
|
Rdb_tbl_def *m_tbl_def;
|
||||||
|
|
||||||
/* Primary Key encoder from KeyTupleFormat to StorageFormat */
|
/* Primary Key encoder from KeyTupleFormat to StorageFormat */
|
||||||
@@ -548,12 +560,6 @@ class ha_rocksdb : public my_core::handler {
|
|||||||
uchar *m_dup_sk_packed_tuple;
|
uchar *m_dup_sk_packed_tuple;
|
||||||
uchar *m_dup_sk_packed_tuple_old;
|
uchar *m_dup_sk_packed_tuple_old;
|
||||||
|
|
||||||
/* Buffers used for passing upper/bound eq conditions. */
|
|
||||||
uchar *m_eq_cond_lower_bound;
|
|
||||||
uchar *m_eq_cond_upper_bound;
|
|
||||||
rocksdb::Slice m_eq_cond_lower_bound_slice;
|
|
||||||
rocksdb::Slice m_eq_cond_upper_bound_slice;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Temporary space for packing VARCHARs (we provide it to
|
Temporary space for packing VARCHARs (we provide it to
|
||||||
pack_record()/pack_index_tuple() calls).
|
pack_record()/pack_index_tuple() calls).
|
||||||
@@ -635,13 +641,20 @@ class ha_rocksdb : public my_core::handler {
|
|||||||
enum ha_rkey_function find_flag) const
|
enum ha_rkey_function find_flag) const
|
||||||
MY_ATTRIBUTE((__nonnull__, __warn_unused_result__));
|
MY_ATTRIBUTE((__nonnull__, __warn_unused_result__));
|
||||||
void setup_iterator_bounds(const Rdb_key_def &kd,
|
void setup_iterator_bounds(const Rdb_key_def &kd,
|
||||||
const rocksdb::Slice &eq_cond);
|
const rocksdb::Slice &eq_cond, size_t bound_len,
|
||||||
|
uchar *const lower_bound, uchar *const upper_bound,
|
||||||
|
rocksdb::Slice *lower_bound_slice,
|
||||||
|
rocksdb::Slice *upper_bound_slice);
|
||||||
bool can_use_bloom_filter(THD *thd, const Rdb_key_def &kd,
|
bool can_use_bloom_filter(THD *thd, const Rdb_key_def &kd,
|
||||||
const rocksdb::Slice &eq_cond,
|
const rocksdb::Slice &eq_cond,
|
||||||
const bool use_all_keys);
|
const bool use_all_keys);
|
||||||
bool check_bloom_and_set_bounds(THD *thd, const Rdb_key_def &kd,
|
bool check_bloom_and_set_bounds(THD *thd, const Rdb_key_def &kd,
|
||||||
const rocksdb::Slice &eq_cond,
|
const rocksdb::Slice &eq_cond,
|
||||||
const bool use_all_keys);
|
const bool use_all_keys, size_t bound_len,
|
||||||
|
uchar *const lower_bound,
|
||||||
|
uchar *const upper_bound,
|
||||||
|
rocksdb::Slice *lower_bound_slice,
|
||||||
|
rocksdb::Slice *upper_bound_slice);
|
||||||
void setup_scan_iterator(const Rdb_key_def &kd, rocksdb::Slice *slice,
|
void setup_scan_iterator(const Rdb_key_def &kd, rocksdb::Slice *slice,
|
||||||
const bool use_all_keys, const uint eq_cond_len)
|
const bool use_all_keys, const uint eq_cond_len)
|
||||||
MY_ATTRIBUTE((__nonnull__));
|
MY_ATTRIBUTE((__nonnull__));
|
||||||
@@ -834,7 +847,7 @@ public:
|
|||||||
HA_REC_NOT_IN_SEQ | HA_CAN_INDEX_BLOBS |
|
HA_REC_NOT_IN_SEQ | HA_CAN_INDEX_BLOBS |
|
||||||
(m_pk_can_be_decoded ? HA_PRIMARY_KEY_IN_READ_INDEX : 0) |
|
(m_pk_can_be_decoded ? HA_PRIMARY_KEY_IN_READ_INDEX : 0) |
|
||||||
HA_PRIMARY_KEY_REQUIRED_FOR_POSITION | HA_NULL_IN_KEY |
|
HA_PRIMARY_KEY_REQUIRED_FOR_POSITION | HA_NULL_IN_KEY |
|
||||||
HA_PARTIAL_COLUMN_READ);
|
HA_PARTIAL_COLUMN_READ | HA_ONLINE_ANALYZE);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool init_with_fields() override;
|
bool init_with_fields() override;
|
||||||
@@ -1009,6 +1022,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
virtual double read_time(uint, uint, ha_rows rows) override;
|
virtual double read_time(uint, uint, ha_rows rows) override;
|
||||||
|
virtual void print_error(int error, myf errflag) override;
|
||||||
|
|
||||||
int open(const char *const name, int mode, uint test_if_locked) override
|
int open(const char *const name, int mode, uint test_if_locked) override
|
||||||
MY_ATTRIBUTE((__warn_unused_result__));
|
MY_ATTRIBUTE((__warn_unused_result__));
|
||||||
@@ -1123,7 +1137,7 @@ private:
|
|||||||
MY_ATTRIBUTE((__nonnull__));
|
MY_ATTRIBUTE((__nonnull__));
|
||||||
|
|
||||||
int compare_key_parts(const KEY *const old_key,
|
int compare_key_parts(const KEY *const old_key,
|
||||||
const KEY *const new_key) const;
|
const KEY *const new_key) const
|
||||||
MY_ATTRIBUTE((__nonnull__, __warn_unused_result__));
|
MY_ATTRIBUTE((__nonnull__, __warn_unused_result__));
|
||||||
|
|
||||||
int compare_keys(const KEY *const old_key, const KEY *const new_key) const
|
int compare_keys(const KEY *const old_key, const KEY *const new_key) const
|
||||||
@@ -1180,7 +1194,7 @@ private:
|
|||||||
int update_pk(const Rdb_key_def &kd, const struct update_row_info &row_info,
|
int update_pk(const Rdb_key_def &kd, const struct update_row_info &row_info,
|
||||||
const bool &pk_changed) MY_ATTRIBUTE((__warn_unused_result__));
|
const bool &pk_changed) MY_ATTRIBUTE((__warn_unused_result__));
|
||||||
int update_sk(const TABLE *const table_arg, const Rdb_key_def &kd,
|
int update_sk(const TABLE *const table_arg, const Rdb_key_def &kd,
|
||||||
const struct update_row_info &row_info)
|
const struct update_row_info &row_info, const bool bulk_load_sk)
|
||||||
MY_ATTRIBUTE((__warn_unused_result__));
|
MY_ATTRIBUTE((__warn_unused_result__));
|
||||||
int update_indexes(const struct update_row_info &row_info,
|
int update_indexes(const struct update_row_info &row_info,
|
||||||
const bool &pk_changed)
|
const bool &pk_changed)
|
||||||
@@ -1234,7 +1248,9 @@ private:
|
|||||||
int finalize_bulk_load(bool print_client_error = true)
|
int finalize_bulk_load(bool print_client_error = true)
|
||||||
MY_ATTRIBUTE((__warn_unused_result__));
|
MY_ATTRIBUTE((__warn_unused_result__));
|
||||||
|
|
||||||
public:
|
int calculate_stats_for_table() MY_ATTRIBUTE((__warn_unused_result__));
|
||||||
|
|
||||||
|
public:
|
||||||
int index_init(uint idx, bool sorted) override
|
int index_init(uint idx, bool sorted) override
|
||||||
MY_ATTRIBUTE((__warn_unused_result__));
|
MY_ATTRIBUTE((__warn_unused_result__));
|
||||||
int index_end() override MY_ATTRIBUTE((__warn_unused_result__));
|
int index_end() override MY_ATTRIBUTE((__warn_unused_result__));
|
||||||
@@ -1327,9 +1343,6 @@ public:
|
|||||||
MY_ATTRIBUTE((__warn_unused_result__));
|
MY_ATTRIBUTE((__warn_unused_result__));
|
||||||
int analyze(THD *const thd, HA_CHECK_OPT *const check_opt) override
|
int analyze(THD *const thd, HA_CHECK_OPT *const check_opt) override
|
||||||
MY_ATTRIBUTE((__warn_unused_result__));
|
MY_ATTRIBUTE((__warn_unused_result__));
|
||||||
int calculate_stats(const TABLE *const table_arg, THD *const thd,
|
|
||||||
HA_CHECK_OPT *const check_opt)
|
|
||||||
MY_ATTRIBUTE((__warn_unused_result__));
|
|
||||||
|
|
||||||
enum_alter_inplace_result check_if_supported_inplace_alter(
|
enum_alter_inplace_result check_if_supported_inplace_alter(
|
||||||
TABLE *altered_table,
|
TABLE *altered_table,
|
||||||
@@ -1356,7 +1369,7 @@ public:
|
|||||||
virtual void rpl_after_delete_rows() override;
|
virtual void rpl_after_delete_rows() override;
|
||||||
virtual void rpl_before_update_rows() override;
|
virtual void rpl_before_update_rows() override;
|
||||||
virtual void rpl_after_update_rows() override;
|
virtual void rpl_after_update_rows() override;
|
||||||
virtual bool use_read_free_rpl();
|
virtual bool use_read_free_rpl() override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
/* Flags tracking if we are inside different replication operation */
|
/* Flags tracking if we are inside different replication operation */
|
||||||
|
@@ -39,7 +39,12 @@ enum RDB_IO_ERROR_TYPE {
|
|||||||
const char *get_rdb_io_error_string(const RDB_IO_ERROR_TYPE err_type);
|
const char *get_rdb_io_error_string(const RDB_IO_ERROR_TYPE err_type);
|
||||||
|
|
||||||
void rdb_handle_io_error(const rocksdb::Status status,
|
void rdb_handle_io_error(const rocksdb::Status status,
|
||||||
const RDB_IO_ERROR_TYPE err_type);
|
const RDB_IO_ERROR_TYPE err_type)
|
||||||
|
#if defined(__clang__)
|
||||||
|
MY_ATTRIBUTE((optnone));
|
||||||
|
#else
|
||||||
|
MY_ATTRIBUTE((optimize("O0")));
|
||||||
|
#endif
|
||||||
|
|
||||||
int rdb_normalize_tablename(const std::string &tablename, std::string *str)
|
int rdb_normalize_tablename(const std::string &tablename, std::string *str)
|
||||||
MY_ATTRIBUTE((__nonnull__, __warn_unused_result__));
|
MY_ATTRIBUTE((__nonnull__, __warn_unused_result__));
|
||||||
|
6
storage/rocksdb/mysql-test/rocksdb/combinations
Normal file
6
storage/rocksdb/mysql-test/rocksdb/combinations
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
[write_committed]
|
||||||
|
rocksdb_write_policy=write_committed
|
||||||
|
|
||||||
|
[write_prepared]
|
||||||
|
rocksdb_write_policy=write_prepared
|
||||||
|
rocksdb_commit_time_batch_for_recovery=on
|
@@ -0,0 +1,3 @@
|
|||||||
|
if (`select count(*) = 0 from information_schema.session_variables where variable_name = 'rocksdb_write_policy' and variable_value = 'write_committed';`) {
|
||||||
|
--skip Test requires write_committed policy
|
||||||
|
}
|
@@ -287,11 +287,13 @@ set global rocksdb_bulk_load=1;
|
|||||||
show global variables like 'rocksdb_bulk_load%';
|
show global variables like 'rocksdb_bulk_load%';
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
rocksdb_bulk_load ON
|
rocksdb_bulk_load ON
|
||||||
|
rocksdb_bulk_load_allow_sk OFF
|
||||||
rocksdb_bulk_load_allow_unsorted OFF
|
rocksdb_bulk_load_allow_unsorted OFF
|
||||||
rocksdb_bulk_load_size 1000
|
rocksdb_bulk_load_size 1000
|
||||||
show session variables like 'rocksdb_bulk_load%';
|
show session variables like 'rocksdb_bulk_load%';
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
rocksdb_bulk_load ON
|
rocksdb_bulk_load ON
|
||||||
|
rocksdb_bulk_load_allow_sk OFF
|
||||||
rocksdb_bulk_load_allow_unsorted OFF
|
rocksdb_bulk_load_allow_unsorted OFF
|
||||||
rocksdb_bulk_load_size 1000
|
rocksdb_bulk_load_size 1000
|
||||||
CREATE TABLE t1 (i INT, j INT, PRIMARY KEY (i)) ENGINE = ROCKSDB;
|
CREATE TABLE t1 (i INT, j INT, PRIMARY KEY (i)) ENGINE = ROCKSDB;
|
||||||
@@ -335,6 +337,7 @@ SET session rocksdb_merge_buf_size = 340;
|
|||||||
show variables like 'rocksdb_bulk_load%';
|
show variables like 'rocksdb_bulk_load%';
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
rocksdb_bulk_load OFF
|
rocksdb_bulk_load OFF
|
||||||
|
rocksdb_bulk_load_allow_sk OFF
|
||||||
rocksdb_bulk_load_allow_unsorted OFF
|
rocksdb_bulk_load_allow_unsorted OFF
|
||||||
rocksdb_bulk_load_size 1000
|
rocksdb_bulk_load_size 1000
|
||||||
CREATE TABLE t1 (a VARCHAR(80)) ENGINE=RocksDB;
|
CREATE TABLE t1 (a VARCHAR(80)) ENGINE=RocksDB;
|
||||||
@@ -442,3 +445,24 @@ t1 CREATE TABLE `t1` (
|
|||||||
KEY `kb` (`b`(8))
|
KEY `kb` (`b`(8))
|
||||||
) ENGINE=ROCKSDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin
|
) ENGINE=ROCKSDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
SET @prior_rocksdb_table_stats_sampling_pct = @@rocksdb_table_stats_sampling_pct;
|
||||||
|
set global rocksdb_table_stats_sampling_pct = 100;
|
||||||
|
CREATE TABLE t1 (a INT, b INT, PRIMARY KEY ka(a)) ENGINE=RocksDB;
|
||||||
|
INSERT INTO t1 (a, b) VALUES (1, 10);
|
||||||
|
INSERT INTO t1 (a, b) VALUES (2, 10);
|
||||||
|
INSERT INTO t1 (a, b) VALUES (3, 20);
|
||||||
|
INSERT INTO t1 (a, b) VALUES (4, 20);
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
analyze table t1;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.t1 analyze status OK
|
||||||
|
SHOW INDEX in t1;
|
||||||
|
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
|
||||||
|
t1 0 PRIMARY 1 a A 4 NULL NULL LSMTREE
|
||||||
|
ALTER TABLE t1 ADD INDEX kb(b), ALGORITHM=INPLACE;
|
||||||
|
SHOW INDEX in t1;
|
||||||
|
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
|
||||||
|
t1 0 PRIMARY 1 a A 4 NULL NULL LSMTREE
|
||||||
|
t1 1 kb 1 b A 2 NULL NULL YES LSMTREE
|
||||||
|
DROP TABLE t1;
|
||||||
|
SET global rocksdb_table_stats_sampling_pct = @prior_rocksdb_table_stats_sampling_pct;
|
||||||
|
@@ -15,7 +15,7 @@ count(b)
|
|||||||
3000000
|
3000000
|
||||||
ALTER TABLE t1 ADD INDEX kb(b), ALGORITHM=INPLACE;
|
ALTER TABLE t1 ADD INDEX kb(b), ALGORITHM=INPLACE;
|
||||||
ALTER TABLE t1 ADD INDEX kb_copy(b), ALGORITHM=COPY;
|
ALTER TABLE t1 ADD INDEX kb_copy(b), ALGORITHM=COPY;
|
||||||
ERROR HY000: Status error 10 received from RocksDB: Operation aborted: Failed to acquire lock due to max_num_locks limit
|
ERROR HY000: Got error 10 'Operation aborted: Failed to acquire lock due to max_num_locks limit' from ROCKSDB
|
||||||
set session rocksdb_bulk_load=1;
|
set session rocksdb_bulk_load=1;
|
||||||
ALTER TABLE t1 ADD INDEX kb_copy(b), ALGORITHM=COPY;
|
ALTER TABLE t1 ADD INDEX kb_copy(b), ALGORITHM=COPY;
|
||||||
set session rocksdb_bulk_load=0;
|
set session rocksdb_bulk_load=0;
|
||||||
|
@@ -262,3 +262,28 @@ SELECT * FROM t1;
|
|||||||
a b
|
a b
|
||||||
36 foo
|
36 foo
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
|
# Issue #834/MDEV-15304 ALTER TABLE table_with_hidden_pk causes Can't
|
||||||
|
# write; duplicate key in table error and/or crash
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (a INT, KEY(a)) ENGINE=RocksDB;
|
||||||
|
INSERT INTO t1 VALUES (1),(1+1);
|
||||||
|
create table t2 (a int);
|
||||||
|
insert into t2 values (10),(20),(30);
|
||||||
|
BEGIN;
|
||||||
|
select * from t2;
|
||||||
|
a
|
||||||
|
10
|
||||||
|
20
|
||||||
|
30
|
||||||
|
alter table t1 force;
|
||||||
|
select * from t1;
|
||||||
|
a
|
||||||
|
insert into t1 values (100);
|
||||||
|
select * from t1;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
2
|
||||||
|
100
|
||||||
|
rollback;
|
||||||
|
drop table t1,t2;
|
||||||
|
@@ -59,12 +59,10 @@ insert into t values ();
|
|||||||
set debug="+d,crash_commit_before";
|
set debug="+d,crash_commit_before";
|
||||||
commit;
|
commit;
|
||||||
ERROR HY000: Lost connection to MySQL server during query
|
ERROR HY000: Lost connection to MySQL server during query
|
||||||
select table_schema, table_name, auto_increment from information_schema.tables where table_name = 't';
|
select max(i) into @row_max from t;
|
||||||
table_schema table_name auto_increment
|
select table_schema, table_name, auto_increment > @row_max from information_schema.tables where table_name = 't';
|
||||||
test t 4
|
table_schema table_name auto_increment > @row_max
|
||||||
select max(i) from t;
|
test t 1
|
||||||
max(i)
|
|
||||||
3
|
|
||||||
# After engine prepare
|
# After engine prepare
|
||||||
begin;
|
begin;
|
||||||
insert into t values ();
|
insert into t values ();
|
||||||
@@ -72,12 +70,10 @@ insert into t values ();
|
|||||||
set debug="+d,crash_commit_after_prepare";
|
set debug="+d,crash_commit_after_prepare";
|
||||||
commit;
|
commit;
|
||||||
ERROR HY000: Lost connection to MySQL server during query
|
ERROR HY000: Lost connection to MySQL server during query
|
||||||
select table_schema, table_name, auto_increment from information_schema.tables where table_name = 't';
|
select max(i) into @row_max from t;
|
||||||
table_schema table_name auto_increment
|
select table_schema, table_name, auto_increment > @row_max from information_schema.tables where table_name = 't';
|
||||||
test t 4
|
table_schema table_name auto_increment > @row_max
|
||||||
select max(i) from t;
|
test t 1
|
||||||
max(i)
|
|
||||||
3
|
|
||||||
# After binlog
|
# After binlog
|
||||||
begin;
|
begin;
|
||||||
insert into t values ();
|
insert into t values ();
|
||||||
@@ -85,12 +81,10 @@ insert into t values ();
|
|||||||
set debug="+d,crash_commit_after_log";
|
set debug="+d,crash_commit_after_log";
|
||||||
commit;
|
commit;
|
||||||
ERROR HY000: Lost connection to MySQL server during query
|
ERROR HY000: Lost connection to MySQL server during query
|
||||||
select table_schema, table_name, auto_increment from information_schema.tables where table_name = 't';
|
select max(i) into @row_max from t;
|
||||||
table_schema table_name auto_increment
|
select table_schema, table_name, auto_increment > @row_max from information_schema.tables where table_name = 't';
|
||||||
test t 6
|
table_schema table_name auto_increment > @row_max
|
||||||
select max(i) from t;
|
test t 1
|
||||||
max(i)
|
|
||||||
5
|
|
||||||
# After everything
|
# After everything
|
||||||
begin;
|
begin;
|
||||||
insert into t values ();
|
insert into t values ();
|
||||||
@@ -98,10 +92,8 @@ insert into t values ();
|
|||||||
set debug="+d,crash_commit_after";
|
set debug="+d,crash_commit_after";
|
||||||
commit;
|
commit;
|
||||||
ERROR HY000: Lost connection to MySQL server during query
|
ERROR HY000: Lost connection to MySQL server during query
|
||||||
select table_schema, table_name, auto_increment from information_schema.tables where table_name = 't';
|
select max(i) into @row_max from t;
|
||||||
table_schema table_name auto_increment
|
select table_schema, table_name, auto_increment > @row_max from information_schema.tables where table_name = 't';
|
||||||
test t 8
|
table_schema table_name auto_increment > @row_max
|
||||||
select max(i) from t;
|
test t 1
|
||||||
max(i)
|
|
||||||
7
|
|
||||||
drop table t;
|
drop table t;
|
||||||
|
@@ -141,3 +141,21 @@ SELECT * FROM t1;
|
|||||||
a b
|
a b
|
||||||
18446744073709551613 a
|
18446744073709551613 a
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
#----------------------------------
|
||||||
|
# Issue #792 Crash in autoincrement
|
||||||
|
#----------------------------------
|
||||||
|
CREATE TABLE t1(C1 DOUBLE AUTO_INCREMENT KEY,C2 CHAR) ENGINE=ROCKSDB;
|
||||||
|
INSERT INTO t1 VALUES(2177,0);
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t0(c0 BLOB) ENGINE=ROCKSDB;
|
||||||
|
INSERT INTO t0 VALUES(0);
|
||||||
|
ALTER TABLE t0 AUTO_INCREMENT=0;
|
||||||
|
DROP TABLE t0;
|
||||||
|
#----------------------------------
|
||||||
|
# Issue #869 Crash in autoincrement
|
||||||
|
#----------------------------------
|
||||||
|
CREATE TABLE t1 (pk INT AUTO_INCREMENT, a INT, PRIMARY KEY(pk)) ENGINE=RocksDB;
|
||||||
|
INSERT INTO t1 (a) VALUES (1);
|
||||||
|
UPDATE t1 SET pk = 3;
|
||||||
|
ALTER TABLE t1 AUTO_INCREMENT 2;
|
||||||
|
DROP TABLE t1;
|
||||||
|
62
storage/rocksdb/mysql-test/rocksdb/r/bloomfilter5.result
Normal file
62
storage/rocksdb/mysql-test/rocksdb/r/bloomfilter5.result
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
#
|
||||||
|
# Issue #809: Wrong query result with bloom filters
|
||||||
|
#
|
||||||
|
create table t1 (
|
||||||
|
id1 bigint not null,
|
||||||
|
id2 bigint not null,
|
||||||
|
id3 varchar(100) not null,
|
||||||
|
id4 int not null,
|
||||||
|
id5 int not null,
|
||||||
|
value bigint,
|
||||||
|
value2 varchar(100),
|
||||||
|
primary key (id1, id2, id3, id4) COMMENT 'rev:bf5_1'
|
||||||
|
) engine=ROCKSDB;
|
||||||
|
create table t2(a int);
|
||||||
|
insert into t2 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
|
||||||
|
create table t3(seq int);
|
||||||
|
insert into t3
|
||||||
|
select
|
||||||
|
1+ A.a + B.a* 10 + C.a * 100 + D.a * 1000
|
||||||
|
from t2 A, t2 B, t2 C, t2 D;
|
||||||
|
insert t1
|
||||||
|
select
|
||||||
|
(seq+9) div 10, (seq+4) div 5, (seq+4) div 5, seq, seq, 1000, "aaabbbccc"
|
||||||
|
from t3;
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
# Full table scan
|
||||||
|
explain
|
||||||
|
select * from t1 limit 10;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t1 ALL NULL NULL NULL NULL 10000 NULL
|
||||||
|
select * from t1 limit 10;
|
||||||
|
id1 id2 id3 id4 id5 value value2
|
||||||
|
1000 2000 2000 10000 10000 1000 aaabbbccc
|
||||||
|
1000 2000 2000 9999 9999 1000 aaabbbccc
|
||||||
|
1000 2000 2000 9998 9998 1000 aaabbbccc
|
||||||
|
1000 2000 2000 9997 9997 1000 aaabbbccc
|
||||||
|
1000 2000 2000 9996 9996 1000 aaabbbccc
|
||||||
|
1000 1999 1999 9995 9995 1000 aaabbbccc
|
||||||
|
1000 1999 1999 9994 9994 1000 aaabbbccc
|
||||||
|
1000 1999 1999 9993 9993 1000 aaabbbccc
|
||||||
|
1000 1999 1999 9992 9992 1000 aaabbbccc
|
||||||
|
1000 1999 1999 9991 9991 1000 aaabbbccc
|
||||||
|
# An index scan starting from the end of the table:
|
||||||
|
explain
|
||||||
|
select * from t1 order by id1 desc,id2 desc, id3 desc, id4 desc limit 1;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t1 index NULL PRIMARY 122 NULL 1 NULL
|
||||||
|
select * from t1 order by id1 desc,id2 desc, id3 desc, id4 desc limit 1;
|
||||||
|
id1 id2 id3 id4 id5 value value2
|
||||||
|
1000 2000 2000 10000 10000 1000 aaabbbccc
|
||||||
|
create table t4 (
|
||||||
|
pk int unsigned not null primary key,
|
||||||
|
kp1 int unsigned not null,
|
||||||
|
kp2 int unsigned not null,
|
||||||
|
col1 int unsigned,
|
||||||
|
key(kp1, kp2) comment 'rev:bf5_2'
|
||||||
|
) engine=rocksdb;
|
||||||
|
insert into t4 values (1, 0xFFFF, 0xFFF, 12345);
|
||||||
|
# This must not fail an assert:
|
||||||
|
select * from t4 force index(kp1) where kp1=0xFFFFFFFF and kp2<=0xFFFFFFFF order by kp2 desc;
|
||||||
|
pk kp1 kp2 col1
|
||||||
|
drop table t1,t2,t3,t4;
|
@@ -0,0 +1,15 @@
|
|||||||
|
create table r1 (id bigint primary key, value bigint) engine=rocksdb;
|
||||||
|
create table r2 (id bigint, value bigint, primary key (id) comment 'cf2') engine=rocksdb;
|
||||||
|
set session rocksdb_bulk_load=1;
|
||||||
|
set session rocksdb_bulk_load=0;
|
||||||
|
select variable_value into @h from information_schema.global_status where variable_name='rocksdb_block_cache_filter_hit';
|
||||||
|
insert into r1 values (100, 100);
|
||||||
|
select variable_value-@h from information_schema.global_status where variable_name='rocksdb_block_cache_filter_hit';
|
||||||
|
variable_value-@h
|
||||||
|
1
|
||||||
|
select variable_value into @h from information_schema.global_status where variable_name='rocksdb_block_cache_filter_hit';
|
||||||
|
insert into r2 values (100, 100);
|
||||||
|
select variable_value-@h from information_schema.global_status where variable_name='rocksdb_block_cache_filter_hit';
|
||||||
|
variable_value-@h
|
||||||
|
0
|
||||||
|
DROP TABLE r1, r2;
|
229
storage/rocksdb/mysql-test/rocksdb/r/bulk_load_sk.result
Normal file
229
storage/rocksdb/mysql-test/rocksdb/r/bulk_load_sk.result
Normal file
@@ -0,0 +1,229 @@
|
|||||||
|
SET rocksdb_bulk_load_size=15;
|
||||||
|
CREATE TABLE t4 (a INT, b INT, c INT,
|
||||||
|
PRIMARY KEY (a),
|
||||||
|
KEY (b),
|
||||||
|
KEY (c) COMMENT "rev:cf") ENGINE=ROCKSDB;
|
||||||
|
CREATE TABLE t3 (a INT, b INT, c INT,
|
||||||
|
PRIMARY KEY (a),
|
||||||
|
KEY (b),
|
||||||
|
KEY (c) COMMENT "rev:cf") ENGINE=ROCKSDB;
|
||||||
|
CREATE TABLE t2 (a INT, b INT, c INT,
|
||||||
|
PRIMARY KEY (a),
|
||||||
|
KEY (b),
|
||||||
|
KEY (c) COMMENT "rev:cf") ENGINE=ROCKSDB;
|
||||||
|
CREATE TABLE t1 (a INT, b INT, c INT,
|
||||||
|
PRIMARY KEY (a),
|
||||||
|
KEY (b),
|
||||||
|
KEY (c) COMMENT "rev:cf") ENGINE=ROCKSDB;
|
||||||
|
SET rocksdb_bulk_load=1;
|
||||||
|
INSERT INTO t1 SELECT * FROM t3 FORCE INDEX (PRIMARY) ORDER BY a;
|
||||||
|
SELECT count(*) FROM t1 FORCE INDEX (PRIMARY);
|
||||||
|
count(*)
|
||||||
|
0
|
||||||
|
SELECT count(*) FROM t1 FORCE INDEX (b);
|
||||||
|
count(*)
|
||||||
|
10
|
||||||
|
SELECT count(*) FROM t1 FORCE INDEX (c);
|
||||||
|
count(*)
|
||||||
|
10
|
||||||
|
SET rocksdb_bulk_load=0;
|
||||||
|
SELECT * FROM t1 FORCE INDEX (PRIMARY);
|
||||||
|
a b c
|
||||||
|
-9 11 11
|
||||||
|
-7 9 9
|
||||||
|
-5 7 7
|
||||||
|
-3 5 5
|
||||||
|
-1 3 3
|
||||||
|
2 0 0
|
||||||
|
4 -2 -2
|
||||||
|
6 -4 -4
|
||||||
|
8 -6 -6
|
||||||
|
10 -8 -8
|
||||||
|
SELECT b FROM t1 FORCE INDEX (b);
|
||||||
|
b
|
||||||
|
-8
|
||||||
|
-6
|
||||||
|
-4
|
||||||
|
-2
|
||||||
|
0
|
||||||
|
3
|
||||||
|
5
|
||||||
|
7
|
||||||
|
9
|
||||||
|
11
|
||||||
|
SELECT c FROM t1 FORCE INDEX (c);
|
||||||
|
c
|
||||||
|
-8
|
||||||
|
-6
|
||||||
|
-4
|
||||||
|
-2
|
||||||
|
0
|
||||||
|
3
|
||||||
|
5
|
||||||
|
7
|
||||||
|
9
|
||||||
|
11
|
||||||
|
Checksums should match
|
||||||
|
CHECKSUM TABLE t3;
|
||||||
|
Table Checksum
|
||||||
|
test.t3 3862424802
|
||||||
|
CHECKSUM TABLE t1;
|
||||||
|
Table Checksum
|
||||||
|
test.t1 3862424802
|
||||||
|
SET rocksdb_bulk_load_allow_sk=1;
|
||||||
|
SET rocksdb_bulk_load=1;
|
||||||
|
INSERT INTO t4 SELECT * FROM t3 FORCE INDEX (PRIMARY) ORDER BY a;
|
||||||
|
SELECT count(*) FROM t4 FORCE INDEX (PRIMARY);
|
||||||
|
count(*)
|
||||||
|
0
|
||||||
|
SELECT count(*) FROM t4 FORCE INDEX (b);
|
||||||
|
count(*)
|
||||||
|
0
|
||||||
|
SELECT count(*) FROM t4 FORCE INDEX (c);
|
||||||
|
count(*)
|
||||||
|
0
|
||||||
|
SET rocksdb_bulk_load=0;
|
||||||
|
SELECT * FROM t4 FORCE INDEX (PRIMARY);
|
||||||
|
a b c
|
||||||
|
-9 11 11
|
||||||
|
-7 9 9
|
||||||
|
-5 7 7
|
||||||
|
-3 5 5
|
||||||
|
-1 3 3
|
||||||
|
2 0 0
|
||||||
|
4 -2 -2
|
||||||
|
6 -4 -4
|
||||||
|
8 -6 -6
|
||||||
|
10 -8 -8
|
||||||
|
SELECT b FROM t4 FORCE INDEX (b);
|
||||||
|
b
|
||||||
|
-8
|
||||||
|
-6
|
||||||
|
-4
|
||||||
|
-2
|
||||||
|
0
|
||||||
|
3
|
||||||
|
5
|
||||||
|
7
|
||||||
|
9
|
||||||
|
11
|
||||||
|
SELECT c FROM t4 FORCE INDEX (c);
|
||||||
|
c
|
||||||
|
-8
|
||||||
|
-6
|
||||||
|
-4
|
||||||
|
-2
|
||||||
|
0
|
||||||
|
3
|
||||||
|
5
|
||||||
|
7
|
||||||
|
9
|
||||||
|
11
|
||||||
|
Checksums should match
|
||||||
|
CHECKSUM TABLE t3;
|
||||||
|
Table Checksum
|
||||||
|
test.t3 3862424802
|
||||||
|
CHECKSUM TABLE t4;
|
||||||
|
Table Checksum
|
||||||
|
test.t4 3862424802
|
||||||
|
SET rocksdb_bulk_load_allow_unsorted=1;
|
||||||
|
SET rocksdb_bulk_load_allow_sk=1;
|
||||||
|
SET rocksdb_bulk_load=1;
|
||||||
|
INSERT INTO t2 SELECT * FROM t3 WHERE b >= 0 ORDER BY b;
|
||||||
|
INSERT INTO t2 SELECT * FROM t3 WHERE b < 0 ORDER BY b;
|
||||||
|
SELECT count(*) FROM t2 FORCE INDEX (PRIMARY);
|
||||||
|
count(*)
|
||||||
|
0
|
||||||
|
SELECT count(*) FROM t2 FORCE INDEX (b);
|
||||||
|
count(*)
|
||||||
|
0
|
||||||
|
SELECT count(*) FROM t2 FORCE INDEX (c);
|
||||||
|
count(*)
|
||||||
|
0
|
||||||
|
SELECT count(*) FROM t2 FORCE INDEX (PRIMARY);
|
||||||
|
count(*)
|
||||||
|
0
|
||||||
|
SELECT count(*) FROM t2 FORCE INDEX (b);
|
||||||
|
count(*)
|
||||||
|
0
|
||||||
|
SELECT count(*) FROM t2 FORCE INDEX (c);
|
||||||
|
count(*)
|
||||||
|
0
|
||||||
|
SET rocksdb_bulk_load=0;
|
||||||
|
SELECT * FROM t2 FORCE INDEX (PRIMARY);
|
||||||
|
a b c
|
||||||
|
-19 21 21
|
||||||
|
-17 19 19
|
||||||
|
-15 17 17
|
||||||
|
-13 15 15
|
||||||
|
-11 13 13
|
||||||
|
-9 11 11
|
||||||
|
-7 9 9
|
||||||
|
-5 7 7
|
||||||
|
-3 5 5
|
||||||
|
-1 3 3
|
||||||
|
2 0 0
|
||||||
|
4 -2 -2
|
||||||
|
6 -4 -4
|
||||||
|
8 -6 -6
|
||||||
|
10 -8 -8
|
||||||
|
12 -10 -10
|
||||||
|
14 -12 -12
|
||||||
|
16 -14 -14
|
||||||
|
18 -16 -16
|
||||||
|
20 -18 -18
|
||||||
|
SELECT b FROM t2 FORCE INDEX (b);
|
||||||
|
b
|
||||||
|
-18
|
||||||
|
-16
|
||||||
|
-14
|
||||||
|
-12
|
||||||
|
-10
|
||||||
|
-8
|
||||||
|
-6
|
||||||
|
-4
|
||||||
|
-2
|
||||||
|
0
|
||||||
|
3
|
||||||
|
5
|
||||||
|
7
|
||||||
|
9
|
||||||
|
11
|
||||||
|
13
|
||||||
|
15
|
||||||
|
17
|
||||||
|
19
|
||||||
|
21
|
||||||
|
SELECT c FROM t2 FORCE INDEX (c);
|
||||||
|
c
|
||||||
|
-18
|
||||||
|
-16
|
||||||
|
-14
|
||||||
|
-12
|
||||||
|
-10
|
||||||
|
-8
|
||||||
|
-6
|
||||||
|
-4
|
||||||
|
-2
|
||||||
|
0
|
||||||
|
3
|
||||||
|
5
|
||||||
|
7
|
||||||
|
9
|
||||||
|
11
|
||||||
|
13
|
||||||
|
15
|
||||||
|
17
|
||||||
|
19
|
||||||
|
21
|
||||||
|
Checksums should match
|
||||||
|
CHECKSUM TABLE t3;
|
||||||
|
Table Checksum
|
||||||
|
test.t3 1495594118
|
||||||
|
CHECKSUM TABLE t2;
|
||||||
|
Table Checksum
|
||||||
|
test.t2 1495594118
|
||||||
|
DROP TABLE t1;
|
||||||
|
DROP TABLE t2;
|
||||||
|
DROP TABLE t3;
|
||||||
|
DROP TABLE t4;
|
@@ -82,4 +82,19 @@ t1 1 t1_5 2 c1 A 100000 NULL NULL YES LSMTREE
|
|||||||
SELECT table_name, table_rows FROM information_schema.tables WHERE table_schema = DATABASE();
|
SELECT table_name, table_rows FROM information_schema.tables WHERE table_schema = DATABASE();
|
||||||
table_name table_rows
|
table_name table_rows
|
||||||
t1 100000
|
t1 100000
|
||||||
drop table t1;
|
CREATE TABLE t2 (a INT, b INT, c INT, d INT, e INT, f INT, g INT,
|
||||||
|
PRIMARY KEY (a), KEY (c, b, a, d, e, f, g))
|
||||||
|
ENGINE=ROCKSDB;
|
||||||
|
SET GLOBAL rocksdb_force_flush_memtable_now = 1;
|
||||||
|
ANALYZE TABLE t2;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.t2 analyze status OK
|
||||||
|
cardinality of the columns after 'a' must be equal to the cardinality of column 'a'
|
||||||
|
SELECT CARDINALITY INTO @c FROM information_schema.statistics WHERE TABLE_NAME='t2' AND INDEX_NAME='c' AND COLUMN_NAME='a';
|
||||||
|
SELECT COLUMN_NAME, CARDINALITY = @c FROM information_schema.statistics WHERE TABLE_NAME='t2' AND INDEX_NAME='c' AND SEQ_IN_INDEX > 3;
|
||||||
|
COLUMN_NAME CARDINALITY = @c
|
||||||
|
d 1
|
||||||
|
e 1
|
||||||
|
f 1
|
||||||
|
g 1
|
||||||
|
drop table t1, t2;
|
||||||
|
@@ -1,6 +1,7 @@
|
|||||||
SET @start_global_value = @@global.ROCKSDB_STRICT_COLLATION_EXCEPTIONS;
|
call mtr.add_suppression("Invalid pattern");
|
||||||
DROP TABLE IF EXISTS t1;
|
|
||||||
CREATE TABLE t1 (id INT primary key, value varchar(50), value2 varbinary(50), value3 text) engine=rocksdb charset utf8;
|
CREATE TABLE t1 (id INT primary key, value varchar(50), value2 varbinary(50), value3 text) engine=rocksdb charset utf8;
|
||||||
|
ALTER TABLE t1 ADD INDEX (value);
|
||||||
|
ERROR HY000: Unsupported collation on string indexed column test.t1.value Use binary collation (binary, latin1_bin, utf8_bin).
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
CREATE TABLE t1 (id INT primary key, value varchar(50), value2 varbinary(50), value3 text, index(value)) engine=rocksdb charset utf8;
|
CREATE TABLE t1 (id INT primary key, value varchar(50), value2 varbinary(50), value3 text, index(value)) engine=rocksdb charset utf8;
|
||||||
ERROR HY000: Unsupported collation on string indexed column test.t1.value Use binary collation (binary, latin1_bin, utf8_bin).
|
ERROR HY000: Unsupported collation on string indexed column test.t1.value Use binary collation (binary, latin1_bin, utf8_bin).
|
||||||
@@ -13,6 +14,7 @@ SET GLOBAL rocksdb_strict_collation_check=1;
|
|||||||
CREATE TABLE t1 (id INT primary key, value varchar(50), value2 varbinary(50), value3 text, index(value2)) engine=rocksdb charset utf8;
|
CREATE TABLE t1 (id INT primary key, value varchar(50), value2 varbinary(50), value3 text, index(value2)) engine=rocksdb charset utf8;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
CREATE TABLE t1 (id varchar(20), value varchar(50), value2 varchar(50), value3 text, primary key (id), index(value, value2)) engine=rocksdb charset latin1 collate latin1_bin;
|
CREATE TABLE t1 (id varchar(20), value varchar(50), value2 varchar(50), value3 text, primary key (id), index(value, value2)) engine=rocksdb charset latin1 collate latin1_bin;
|
||||||
|
ALTER TABLE t1 collate=latin1_general_ci;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
CREATE TABLE t1 (id varchar(20), value varchar(50), value2 varchar(50), value3 text, primary key (id), index(value, value2)) engine=rocksdb charset utf8 collate utf8_bin;
|
CREATE TABLE t1 (id varchar(20), value varchar(50), value2 varchar(50), value3 text, primary key (id), index(value, value2)) engine=rocksdb charset utf8 collate utf8_bin;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
@@ -126,4 +128,16 @@ CREATE TABLE abcd (id INT PRIMARY KEY, value varchar(50), index(value)) engine=r
|
|||||||
ERROR HY000: Unsupported collation on string indexed column test.abcd.value Use binary collation (binary, latin1_bin, utf8_bin).
|
ERROR HY000: Unsupported collation on string indexed column test.abcd.value Use binary collation (binary, latin1_bin, utf8_bin).
|
||||||
DROP TABLE abc;
|
DROP TABLE abc;
|
||||||
SET GLOBAL rocksdb_strict_collation_exceptions=null;
|
SET GLOBAL rocksdb_strict_collation_exceptions=null;
|
||||||
SET GLOBAL rocksdb_strict_collation_exceptions=@start_global_value;
|
SET GLOBAL rocksdb_strict_collation_check=1;
|
||||||
|
CREATE TABLE t1 (id INT primary key, value varchar(50), value2 varbinary(50), value3 text, index(value)) engine=rocksdb charset utf8;
|
||||||
|
Warnings:
|
||||||
|
Warning 1210 Unsupported collation on string indexed column test.t1.value Use binary collation (binary, latin1_bin, utf8_bin).
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (id INT primary key, value varchar(50), value2 varbinary(50), value3 text) engine=rocksdb charset utf8;
|
||||||
|
ALTER TABLE t1 ADD INDEX (value);
|
||||||
|
Warnings:
|
||||||
|
Warning 1210 Unsupported collation on string indexed column test.t1.value Use binary collation (binary, latin1_bin, utf8_bin).
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (id varchar(20), value varchar(50), value2 varchar(50), value3 text, primary key (id), index(value, value2)) engine=rocksdb charset latin1 collate latin1_bin;
|
||||||
|
ALTER TABLE t1 collate=latin1_general_ci;
|
||||||
|
DROP TABLE t1;
|
||||||
|
21
storage/rocksdb/mysql-test/rocksdb/r/com_rpc_tx.result
Normal file
21
storage/rocksdb/mysql-test/rocksdb/r/com_rpc_tx.result
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
CREATE DATABASE db_rpc;
|
||||||
|
USE db_rpc;
|
||||||
|
CREATE TABLE t1(pk INT PRIMARY KEY) ENGINE=rocksdb;
|
||||||
|
SET GLOBAL rocksdb_enable_2pc=1;
|
||||||
|
SET autocommit = 0;
|
||||||
|
SET autocommit = 0;
|
||||||
|
BEGIN;
|
||||||
|
BEGIN;
|
||||||
|
SELECT * from t1;
|
||||||
|
pk
|
||||||
|
SELECT * from t1;
|
||||||
|
pk
|
||||||
|
INSERT INTO t1 VALUES(1);
|
||||||
|
INSERT INTO t1 VALUES(2);
|
||||||
|
COMMIT;
|
||||||
|
COMMIT;
|
||||||
|
SELECT * from db_rpc.t1;
|
||||||
|
pk
|
||||||
|
1
|
||||||
|
2
|
||||||
|
DROP DATABASE db_rpc;
|
@@ -0,0 +1,38 @@
|
|||||||
|
USE mysql;
|
||||||
|
CREATE TABLE mysql_table (a INT) ENGINE=ROCKSDB;
|
||||||
|
CREATE TABLE test.mysql_table (a INT) ENGINE=ROCKSDB;
|
||||||
|
ERROR HY000: Table without primary key cannot be created outside mysql schema.
|
||||||
|
USE test;
|
||||||
|
CREATE TABLE mysql_table (a INT) ENGINE=ROCKSDB;
|
||||||
|
ERROR HY000: Table without primary key cannot be created outside mysql schema.
|
||||||
|
CREATE TABLE IF NOT EXISTS mysql_table_2 (a INT) ENGINE=ROCKSDB;
|
||||||
|
ERROR HY000: Table without primary key cannot be created outside mysql schema.
|
||||||
|
CREATE TABLE mysql_table_no_cols ENGINE=ROCKSDB;
|
||||||
|
ERROR HY000: Table without primary key cannot be created outside mysql schema.
|
||||||
|
CREATE TABLE mysql.mysql_table_2 (a INT) ENGINE=ROCKSDB;
|
||||||
|
CREATE TABLE mysql_primkey (a INT PRIMARY KEY, b INT, c INT, d INT, INDEX (c)) ENGINE=ROCKSDB;
|
||||||
|
ALTER TABLE mysql_primkey DROP b, DROP a, ADD (f INT PRIMARY KEY);
|
||||||
|
ALTER TABLE mysql_primkey DROP PRIMARY KEY;
|
||||||
|
ERROR HY000: Table without primary key cannot be created outside mysql schema.
|
||||||
|
CREATE TABLE mysql_primkey2 (a INT PRIMARY KEY, b INT, c INT) ENGINE=ROCKSDB;
|
||||||
|
ALTER TABLE mysql_primkey2 DROP b;
|
||||||
|
ALTER TABLE mysql_primkey2 ADD (b INT);
|
||||||
|
ALTER TABLE mysql_primkey2 DROP c, DROP A;
|
||||||
|
ERROR HY000: Table without primary key cannot be created outside mysql schema.
|
||||||
|
CREATE TABLE mysql_primkey3 (a INT PRIMARY KEY, b INT, c INT, INDEX indexonb (b), INDEX indexonc (c)) ENGINE=ROCKSDB;
|
||||||
|
ALTER TABLE mysql_primkey3 DROP INDEX indexonb;
|
||||||
|
ALTER TABLE mysql_primkey3 DROP c;
|
||||||
|
ALTER TABLE mysql_primkey3 DROP PRIMARY KEY, ADD PRIMARY KEY(b);
|
||||||
|
CREATE TABLE mysql_primkey4(a INT, b INT, PRIMARY KEY(a), INDEX si (a, b)) ENGINE=ROCKSDB;
|
||||||
|
DROP INDEX si ON mysql_primkey4;
|
||||||
|
DROP INDEX `PRIMARY` ON mysql_primkey4;
|
||||||
|
ERROR HY000: Table without primary key cannot be created outside mysql schema.
|
||||||
|
ALTER TABLE mysql.mysql_table ADD PRIMARY KEY (a);
|
||||||
|
ALTER TABLE mysql.mysql_table DROP PRIMARY KEY;
|
||||||
|
DROP TABLE mysql_primkey;
|
||||||
|
DROP TABLE mysql_primkey2;
|
||||||
|
DROP TABLE mysql_primkey3;
|
||||||
|
DROP TABLE mysql_primkey4;
|
||||||
|
USE mysql;
|
||||||
|
DROP TABLE mysql_table;
|
||||||
|
DROP TABLE mysql_table_2;
|
@@ -45,7 +45,7 @@ set high_priority_ddl = 1;
|
|||||||
select @@high_priority_ddl;
|
select @@high_priority_ddl;
|
||||||
@@high_priority_ddl
|
@@high_priority_ddl
|
||||||
1
|
1
|
||||||
lock tables t1 write;
|
rename table t1 to t2;
|
||||||
ERROR HY000: Lock wait timeout exceeded; try restarting transaction: Timeout on table metadata: test.t1
|
ERROR HY000: Lock wait timeout exceeded; try restarting transaction: Timeout on table metadata: test.t1
|
||||||
alter table t1 modify i bigint;;
|
alter table t1 modify i bigint;;
|
||||||
set high_priority_ddl = 0;
|
set high_priority_ddl = 0;
|
||||||
@@ -98,7 +98,7 @@ set high_priority_ddl = 1;
|
|||||||
select @@high_priority_ddl;
|
select @@high_priority_ddl;
|
||||||
@@high_priority_ddl
|
@@high_priority_ddl
|
||||||
1
|
1
|
||||||
lock tables t1 write;
|
rename table t1 to t2;
|
||||||
ERROR HY000: Lock wait timeout exceeded; try restarting transaction: Timeout on table metadata: test.t1
|
ERROR HY000: Lock wait timeout exceeded; try restarting transaction: Timeout on table metadata: test.t1
|
||||||
alter table t1 rename t1_new;;
|
alter table t1 rename t1_new;;
|
||||||
set high_priority_ddl = 0;
|
set high_priority_ddl = 0;
|
||||||
@@ -152,7 +152,7 @@ set high_priority_ddl = 1;
|
|||||||
select @@high_priority_ddl;
|
select @@high_priority_ddl;
|
||||||
@@high_priority_ddl
|
@@high_priority_ddl
|
||||||
1
|
1
|
||||||
lock tables t1 write;
|
rename table t1 to t2;
|
||||||
ERROR HY000: Lock wait timeout exceeded; try restarting transaction: Timeout on table metadata: test.t1
|
ERROR HY000: Lock wait timeout exceeded; try restarting transaction: Timeout on table metadata: test.t1
|
||||||
drop table t1;;
|
drop table t1;;
|
||||||
ERROR HY000: Lock wait timeout exceeded; try restarting transaction: Timeout on table metadata: test.t1
|
ERROR HY000: Lock wait timeout exceeded; try restarting transaction: Timeout on table metadata: test.t1
|
||||||
@@ -202,7 +202,7 @@ set high_priority_ddl = 1;
|
|||||||
select @@high_priority_ddl;
|
select @@high_priority_ddl;
|
||||||
@@high_priority_ddl
|
@@high_priority_ddl
|
||||||
1
|
1
|
||||||
lock tables t1 write;
|
rename table t1 to t2;
|
||||||
ERROR HY000: Lock wait timeout exceeded; try restarting transaction: Timeout on table metadata: test.t1
|
ERROR HY000: Lock wait timeout exceeded; try restarting transaction: Timeout on table metadata: test.t1
|
||||||
drop table t1;;
|
drop table t1;;
|
||||||
set high_priority_ddl = 0;
|
set high_priority_ddl = 0;
|
||||||
@@ -251,7 +251,7 @@ set high_priority_ddl = 1;
|
|||||||
select @@high_priority_ddl;
|
select @@high_priority_ddl;
|
||||||
@@high_priority_ddl
|
@@high_priority_ddl
|
||||||
1
|
1
|
||||||
lock tables t1 write;
|
rename table t1 to t2;
|
||||||
ERROR HY000: Lock wait timeout exceeded; try restarting transaction: Timeout on table metadata: test.t1
|
ERROR HY000: Lock wait timeout exceeded; try restarting transaction: Timeout on table metadata: test.t1
|
||||||
alter table t1 modify i bigint;;
|
alter table t1 modify i bigint;;
|
||||||
ERROR HY000: Lock wait timeout exceeded; try restarting transaction: Timeout on table metadata: test.t1
|
ERROR HY000: Lock wait timeout exceeded; try restarting transaction: Timeout on table metadata: test.t1
|
||||||
@@ -302,7 +302,7 @@ set high_priority_ddl = 1;
|
|||||||
select @@high_priority_ddl;
|
select @@high_priority_ddl;
|
||||||
@@high_priority_ddl
|
@@high_priority_ddl
|
||||||
1
|
1
|
||||||
lock tables t1 write;
|
rename table t1 to t2;
|
||||||
ERROR HY000: Lock wait timeout exceeded; try restarting transaction: Timeout on table metadata: test.t1
|
ERROR HY000: Lock wait timeout exceeded; try restarting transaction: Timeout on table metadata: test.t1
|
||||||
create index idx1 on t1 (i);;
|
create index idx1 on t1 (i);;
|
||||||
set high_priority_ddl = 0;
|
set high_priority_ddl = 0;
|
||||||
@@ -342,7 +342,7 @@ set high_priority_ddl = 1;
|
|||||||
select @@high_priority_ddl;
|
select @@high_priority_ddl;
|
||||||
@@high_priority_ddl
|
@@high_priority_ddl
|
||||||
1
|
1
|
||||||
lock tables t1 write;
|
rename table t1 to t2;
|
||||||
ERROR HY000: Lock wait timeout exceeded; try restarting transaction: Timeout on table metadata: test.t1
|
ERROR HY000: Lock wait timeout exceeded; try restarting transaction: Timeout on table metadata: test.t1
|
||||||
drop index idx1 on t1;;
|
drop index idx1 on t1;;
|
||||||
set high_priority_ddl = 0;
|
set high_priority_ddl = 0;
|
||||||
@@ -390,7 +390,7 @@ set high_priority_ddl = 1;
|
|||||||
select @@high_priority_ddl;
|
select @@high_priority_ddl;
|
||||||
@@high_priority_ddl
|
@@high_priority_ddl
|
||||||
1
|
1
|
||||||
lock tables t1 write;
|
rename table t1 to t2;
|
||||||
ERROR HY000: Lock wait timeout exceeded; try restarting transaction: Timeout on table metadata: test.t1
|
ERROR HY000: Lock wait timeout exceeded; try restarting transaction: Timeout on table metadata: test.t1
|
||||||
truncate t1;;
|
truncate t1;;
|
||||||
set high_priority_ddl = 0;
|
set high_priority_ddl = 0;
|
||||||
@@ -438,7 +438,7 @@ set high_priority_ddl = 1;
|
|||||||
select @@high_priority_ddl;
|
select @@high_priority_ddl;
|
||||||
@@high_priority_ddl
|
@@high_priority_ddl
|
||||||
1
|
1
|
||||||
lock tables t1 write;
|
rename table t1 to t2;
|
||||||
ERROR HY000: Lock wait timeout exceeded; try restarting transaction: Timeout on table metadata: test.t1
|
ERROR HY000: Lock wait timeout exceeded; try restarting transaction: Timeout on table metadata: test.t1
|
||||||
create trigger ins_sum before insert on t1 for each row set @sum = @sum + new.i;;
|
create trigger ins_sum before insert on t1 for each row set @sum = @sum + new.i;;
|
||||||
set high_priority_ddl = 0;
|
set high_priority_ddl = 0;
|
||||||
@@ -478,7 +478,7 @@ set high_priority_ddl = 1;
|
|||||||
select @@high_priority_ddl;
|
select @@high_priority_ddl;
|
||||||
@@high_priority_ddl
|
@@high_priority_ddl
|
||||||
1
|
1
|
||||||
lock tables t1 write;
|
rename table t1 to t2;
|
||||||
ERROR HY000: Lock wait timeout exceeded; try restarting transaction: Timeout on table metadata: test.t1
|
ERROR HY000: Lock wait timeout exceeded; try restarting transaction: Timeout on table metadata: test.t1
|
||||||
drop trigger ins_sum;;
|
drop trigger ins_sum;;
|
||||||
set high_priority_ddl = 0;
|
set high_priority_ddl = 0;
|
||||||
@@ -528,7 +528,7 @@ set high_priority_ddl = 1;
|
|||||||
select @@high_priority_ddl;
|
select @@high_priority_ddl;
|
||||||
@@high_priority_ddl
|
@@high_priority_ddl
|
||||||
1
|
1
|
||||||
lock tables t1 write;
|
rename table t1 to t2;
|
||||||
ERROR HY000: Lock wait timeout exceeded; try restarting transaction: Timeout on table metadata: test.t1
|
ERROR HY000: Lock wait timeout exceeded; try restarting transaction: Timeout on table metadata: test.t1
|
||||||
optimize table t1;;
|
optimize table t1;;
|
||||||
Table Op Msg_type Msg_text
|
Table Op Msg_type Msg_text
|
||||||
@@ -538,6 +538,55 @@ connection: default (for show processlist)
|
|||||||
show processlist;
|
show processlist;
|
||||||
Id User Host db Command Time State Info Rows examined Rows sent Tid Srv_Id
|
Id User Host db Command Time State Info Rows examined Rows sent Tid Srv_Id
|
||||||
<Id> root <Host> test <Command> <Time> <State> <Info> <RExam> <RSent> <TID> 0
|
<Id> root <Host> test <Command> <Time> <State> <Info> <RExam> <RSent> <TID> 0
|
||||||
|
|
||||||
|
## Test parameters:
|
||||||
|
## use_sys_var = 1;
|
||||||
|
## con_block = con1
|
||||||
|
## con_kill = default
|
||||||
|
## cmd = lock tables t1 write;
|
||||||
|
## high_priority_cmd = optimize high_priority table t1;
|
||||||
|
## should_kill = 1
|
||||||
|
## recreate_table = 1
|
||||||
|
## throw_error = 1
|
||||||
|
|
||||||
|
drop table if exists t1;
|
||||||
|
create table t1 (i int);
|
||||||
|
show create table t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`i` int(11) DEFAULT NULL
|
||||||
|
) ENGINE=ROCKSDB DEFAULT CHARSET=latin1
|
||||||
|
insert into t1 values (1), (2), (3);
|
||||||
|
connection: con1
|
||||||
|
lock tables t1 read;;
|
||||||
|
connection: default
|
||||||
|
set lock_wait_timeout = 0.02;
|
||||||
|
set high_priority_lock_wait_timeout = 0.02;
|
||||||
|
describe t1;
|
||||||
|
Field Type Null Key Default Extra
|
||||||
|
i int(11) YES NULL
|
||||||
|
connection: default (for show processlist)
|
||||||
|
# both con1 and default exist
|
||||||
|
show processlist;
|
||||||
|
Id User Host db Command Time State Info Rows examined Rows sent Tid Srv_Id
|
||||||
|
<Id> root <Host> test <Command> <Time> <State> <Info> <RExam> <RSent> <TID> 0
|
||||||
|
<Id> test_user1 <Host> test <Command> <Time> <State> <Info> <RExam> <RSent> <TID> 0
|
||||||
|
connection: default
|
||||||
|
lock tables t1 write;;
|
||||||
|
ERROR HY000: Lock wait timeout exceeded; try restarting transaction: Timeout on table metadata: test.t1
|
||||||
|
set high_priority_ddl = 1;
|
||||||
|
select @@high_priority_ddl;
|
||||||
|
@@high_priority_ddl
|
||||||
|
1
|
||||||
|
rename table t1 to t2;
|
||||||
|
ERROR HY000: Lock wait timeout exceeded; try restarting transaction: Timeout on table metadata: test.t1
|
||||||
|
lock tables t1 write;;
|
||||||
|
set high_priority_ddl = 0;
|
||||||
|
connection: default (for show processlist)
|
||||||
|
show processlist;
|
||||||
|
Id User Host db Command Time State Info Rows examined Rows sent Tid Srv_Id
|
||||||
|
<Id> root <Host> test <Command> <Time> <State> <Info> <RExam> <RSent> <TID> 0
|
||||||
|
unlock tables;
|
||||||
drop user test_user1@localhost;
|
drop user test_user1@localhost;
|
||||||
drop user test_user2@localhost;
|
drop user test_user2@localhost;
|
||||||
drop table if exists t1;
|
drop table if exists t1;
|
||||||
|
@@ -53,6 +53,7 @@ LIST OF SNAPSHOTS FOR EACH SESSION:
|
|||||||
|
|
||||||
*** DEADLOCK PATH
|
*** DEADLOCK PATH
|
||||||
=========================================
|
=========================================
|
||||||
|
TSTAMP
|
||||||
TXN_ID
|
TXN_ID
|
||||||
COLUMN FAMILY NAME: default
|
COLUMN FAMILY NAME: default
|
||||||
KEY
|
KEY
|
||||||
@@ -60,6 +61,7 @@ LOCK TYPE: EXCLUSIVE
|
|||||||
INDEX NAME: PRIMARY
|
INDEX NAME: PRIMARY
|
||||||
TABLE NAME: test.t
|
TABLE NAME: test.t
|
||||||
---------------WAITING FOR---------------
|
---------------WAITING FOR---------------
|
||||||
|
TSTAMP
|
||||||
TXN_ID
|
TXN_ID
|
||||||
COLUMN FAMILY NAME: default
|
COLUMN FAMILY NAME: default
|
||||||
KEY
|
KEY
|
||||||
@@ -102,6 +104,7 @@ LIST OF SNAPSHOTS FOR EACH SESSION:
|
|||||||
|
|
||||||
*** DEADLOCK PATH
|
*** DEADLOCK PATH
|
||||||
=========================================
|
=========================================
|
||||||
|
TSTAMP
|
||||||
TXN_ID
|
TXN_ID
|
||||||
COLUMN FAMILY NAME: default
|
COLUMN FAMILY NAME: default
|
||||||
KEY
|
KEY
|
||||||
@@ -109,6 +112,7 @@ LOCK TYPE: EXCLUSIVE
|
|||||||
INDEX NAME: PRIMARY
|
INDEX NAME: PRIMARY
|
||||||
TABLE NAME: test.t
|
TABLE NAME: test.t
|
||||||
---------------WAITING FOR---------------
|
---------------WAITING FOR---------------
|
||||||
|
TSTAMP
|
||||||
TXN_ID
|
TXN_ID
|
||||||
COLUMN FAMILY NAME: default
|
COLUMN FAMILY NAME: default
|
||||||
KEY
|
KEY
|
||||||
@@ -120,6 +124,7 @@ TABLE NAME: test.t
|
|||||||
|
|
||||||
*** DEADLOCK PATH
|
*** DEADLOCK PATH
|
||||||
=========================================
|
=========================================
|
||||||
|
TSTAMP
|
||||||
TXN_ID
|
TXN_ID
|
||||||
COLUMN FAMILY NAME: default
|
COLUMN FAMILY NAME: default
|
||||||
KEY
|
KEY
|
||||||
@@ -127,6 +132,7 @@ LOCK TYPE: EXCLUSIVE
|
|||||||
INDEX NAME: PRIMARY
|
INDEX NAME: PRIMARY
|
||||||
TABLE NAME: test.t
|
TABLE NAME: test.t
|
||||||
---------------WAITING FOR---------------
|
---------------WAITING FOR---------------
|
||||||
|
TSTAMP
|
||||||
TXN_ID
|
TXN_ID
|
||||||
COLUMN FAMILY NAME: default
|
COLUMN FAMILY NAME: default
|
||||||
KEY
|
KEY
|
||||||
@@ -170,6 +176,7 @@ LIST OF SNAPSHOTS FOR EACH SESSION:
|
|||||||
|
|
||||||
*** DEADLOCK PATH
|
*** DEADLOCK PATH
|
||||||
=========================================
|
=========================================
|
||||||
|
TSTAMP
|
||||||
TXN_ID
|
TXN_ID
|
||||||
COLUMN FAMILY NAME: default
|
COLUMN FAMILY NAME: default
|
||||||
KEY
|
KEY
|
||||||
@@ -177,6 +184,7 @@ LOCK TYPE: EXCLUSIVE
|
|||||||
INDEX NAME: PRIMARY
|
INDEX NAME: PRIMARY
|
||||||
TABLE NAME: test.t
|
TABLE NAME: test.t
|
||||||
---------------WAITING FOR---------------
|
---------------WAITING FOR---------------
|
||||||
|
TSTAMP
|
||||||
TXN_ID
|
TXN_ID
|
||||||
COLUMN FAMILY NAME: default
|
COLUMN FAMILY NAME: default
|
||||||
KEY
|
KEY
|
||||||
@@ -188,6 +196,7 @@ TABLE NAME: test.t
|
|||||||
|
|
||||||
*** DEADLOCK PATH
|
*** DEADLOCK PATH
|
||||||
=========================================
|
=========================================
|
||||||
|
TSTAMP
|
||||||
TXN_ID
|
TXN_ID
|
||||||
COLUMN FAMILY NAME: default
|
COLUMN FAMILY NAME: default
|
||||||
KEY
|
KEY
|
||||||
@@ -195,6 +204,7 @@ LOCK TYPE: EXCLUSIVE
|
|||||||
INDEX NAME: PRIMARY
|
INDEX NAME: PRIMARY
|
||||||
TABLE NAME: test.t
|
TABLE NAME: test.t
|
||||||
---------------WAITING FOR---------------
|
---------------WAITING FOR---------------
|
||||||
|
TSTAMP
|
||||||
TXN_ID
|
TXN_ID
|
||||||
COLUMN FAMILY NAME: default
|
COLUMN FAMILY NAME: default
|
||||||
KEY
|
KEY
|
||||||
@@ -206,6 +216,7 @@ TABLE NAME: test.t
|
|||||||
|
|
||||||
*** DEADLOCK PATH
|
*** DEADLOCK PATH
|
||||||
=========================================
|
=========================================
|
||||||
|
TSTAMP
|
||||||
TXN_ID
|
TXN_ID
|
||||||
COLUMN FAMILY NAME: default
|
COLUMN FAMILY NAME: default
|
||||||
KEY
|
KEY
|
||||||
@@ -213,6 +224,7 @@ LOCK TYPE: EXCLUSIVE
|
|||||||
INDEX NAME: PRIMARY
|
INDEX NAME: PRIMARY
|
||||||
TABLE NAME: test.t
|
TABLE NAME: test.t
|
||||||
---------------WAITING FOR---------------
|
---------------WAITING FOR---------------
|
||||||
|
TSTAMP
|
||||||
TXN_ID
|
TXN_ID
|
||||||
COLUMN FAMILY NAME: default
|
COLUMN FAMILY NAME: default
|
||||||
KEY
|
KEY
|
||||||
@@ -240,6 +252,7 @@ LIST OF SNAPSHOTS FOR EACH SESSION:
|
|||||||
|
|
||||||
*** DEADLOCK PATH
|
*** DEADLOCK PATH
|
||||||
=========================================
|
=========================================
|
||||||
|
TSTAMP
|
||||||
TXN_ID
|
TXN_ID
|
||||||
COLUMN FAMILY NAME: default
|
COLUMN FAMILY NAME: default
|
||||||
KEY
|
KEY
|
||||||
@@ -247,6 +260,7 @@ LOCK TYPE: EXCLUSIVE
|
|||||||
INDEX NAME: PRIMARY
|
INDEX NAME: PRIMARY
|
||||||
TABLE NAME: test.t
|
TABLE NAME: test.t
|
||||||
---------------WAITING FOR---------------
|
---------------WAITING FOR---------------
|
||||||
|
TSTAMP
|
||||||
TXN_ID
|
TXN_ID
|
||||||
COLUMN FAMILY NAME: default
|
COLUMN FAMILY NAME: default
|
||||||
KEY
|
KEY
|
||||||
@@ -352,6 +366,7 @@ LIST OF SNAPSHOTS FOR EACH SESSION:
|
|||||||
|
|
||||||
*** DEADLOCK PATH
|
*** DEADLOCK PATH
|
||||||
=========================================
|
=========================================
|
||||||
|
TSTAMP
|
||||||
TXN_ID
|
TXN_ID
|
||||||
COLUMN FAMILY NAME: default
|
COLUMN FAMILY NAME: default
|
||||||
KEY
|
KEY
|
||||||
@@ -359,6 +374,7 @@ LOCK TYPE: EXCLUSIVE
|
|||||||
INDEX NAME: PRIMARY
|
INDEX NAME: PRIMARY
|
||||||
TABLE NAME: test.t
|
TABLE NAME: test.t
|
||||||
---------------WAITING FOR---------------
|
---------------WAITING FOR---------------
|
||||||
|
TSTAMP
|
||||||
TXN_ID
|
TXN_ID
|
||||||
COLUMN FAMILY NAME: default
|
COLUMN FAMILY NAME: default
|
||||||
KEY
|
KEY
|
||||||
@@ -373,6 +389,25 @@ TABLE NAME: test.t
|
|||||||
END OF ROCKSDB TRANSACTION MONITOR OUTPUT
|
END OF ROCKSDB TRANSACTION MONITOR OUTPUT
|
||||||
=========================================
|
=========================================
|
||||||
|
|
||||||
|
Deadlock #6
|
||||||
|
create table t1 (id int primary key, value int) engine=rocksdb;
|
||||||
|
insert into t1 values (1,1),(2,2),(3,3),(4,4),(5,5);
|
||||||
|
begin;
|
||||||
|
update t1 set value=value+100 where id=1;
|
||||||
|
update t1 set value=value+100 where id=2;
|
||||||
|
begin;
|
||||||
|
update t1 set value=value+200 where id=3;
|
||||||
|
update t1 set value=value+100 where id=3;
|
||||||
|
update t1 set value=value+200 where id=1;
|
||||||
|
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
|
||||||
|
select * from t1;
|
||||||
|
id value
|
||||||
|
1 101
|
||||||
|
2 102
|
||||||
|
3 103
|
||||||
|
4 4
|
||||||
|
5 5
|
||||||
|
drop table t1;
|
||||||
set global rocksdb_lock_wait_timeout = @prior_lock_wait_timeout;
|
set global rocksdb_lock_wait_timeout = @prior_lock_wait_timeout;
|
||||||
set global rocksdb_deadlock_detect = @prior_deadlock_detect;
|
set global rocksdb_deadlock_detect = @prior_deadlock_detect;
|
||||||
drop table t;
|
drop table t;
|
||||||
@@ -390,6 +425,7 @@ LIST OF SNAPSHOTS FOR EACH SESSION:
|
|||||||
|
|
||||||
*** DEADLOCK PATH
|
*** DEADLOCK PATH
|
||||||
=========================================
|
=========================================
|
||||||
|
TSTAMP
|
||||||
TXN_ID
|
TXN_ID
|
||||||
COLUMN FAMILY NAME: default
|
COLUMN FAMILY NAME: default
|
||||||
KEY
|
KEY
|
||||||
@@ -397,6 +433,27 @@ LOCK TYPE: EXCLUSIVE
|
|||||||
INDEX NAME: NOT FOUND; IDX_ID
|
INDEX NAME: NOT FOUND; IDX_ID
|
||||||
TABLE NAME: NOT FOUND; IDX_ID
|
TABLE NAME: NOT FOUND; IDX_ID
|
||||||
---------------WAITING FOR---------------
|
---------------WAITING FOR---------------
|
||||||
|
TSTAMP
|
||||||
|
TXN_ID
|
||||||
|
COLUMN FAMILY NAME: default
|
||||||
|
KEY
|
||||||
|
LOCK TYPE: EXCLUSIVE
|
||||||
|
INDEX NAME: NOT FOUND; IDX_ID
|
||||||
|
TABLE NAME: NOT FOUND; IDX_ID
|
||||||
|
|
||||||
|
--------TXN_ID GOT DEADLOCK---------
|
||||||
|
|
||||||
|
*** DEADLOCK PATH
|
||||||
|
=========================================
|
||||||
|
TSTAMP
|
||||||
|
TXN_ID
|
||||||
|
COLUMN FAMILY NAME: default
|
||||||
|
KEY
|
||||||
|
LOCK TYPE: EXCLUSIVE
|
||||||
|
INDEX NAME: NOT FOUND; IDX_ID
|
||||||
|
TABLE NAME: NOT FOUND; IDX_ID
|
||||||
|
---------------WAITING FOR---------------
|
||||||
|
TSTAMP
|
||||||
TXN_ID
|
TXN_ID
|
||||||
COLUMN FAMILY NAME: default
|
COLUMN FAMILY NAME: default
|
||||||
KEY
|
KEY
|
||||||
|
@@ -43,6 +43,17 @@ DELETE FROM t4;
|
|||||||
drop table t3;
|
drop table t3;
|
||||||
DELETE FROM t1;
|
DELETE FROM t1;
|
||||||
DELETE FROM t4;
|
DELETE FROM t4;
|
||||||
|
SET GLOBAL rocksdb_max_manual_compactions = 2;
|
||||||
|
SET GLOBAL rocksdb_debug_manual_compaction_delay = 3600;
|
||||||
|
SET GLOBAL rocksdb_compact_cf='cf1';
|
||||||
|
SET GLOBAL rocksdb_compact_cf='rev:cf2';
|
||||||
|
select * from information_schema.global_status where variable_name='rocksdb_manual_compactions_running';
|
||||||
|
VARIABLE_NAME VARIABLE_VALUE
|
||||||
|
ROCKSDB_MANUAL_COMPACTIONS_RUNNING 1
|
||||||
|
SET GLOBAL rocksdb_compact_cf='cf1';
|
||||||
|
ERROR HY000: Internal error: Can't schedule more manual compactions. Increase rocksdb_max_manual_compactions or stop issuing more manual compactions.
|
||||||
|
SET GLOBAL rocksdb_compact_cf='rev:cf2';
|
||||||
|
ERROR HY000: Internal error: Can't schedule more manual compactions. Increase rocksdb_max_manual_compactions or stop issuing more manual compactions.
|
||||||
drop table t4;
|
drop table t4;
|
||||||
CREATE TABLE t5 (
|
CREATE TABLE t5 (
|
||||||
a int not null,
|
a int not null,
|
||||||
|
265
storage/rocksdb/mysql-test/rocksdb/r/explicit_snapshot.result
Normal file
265
storage/rocksdb/mysql-test/rocksdb/r/explicit_snapshot.result
Normal file
@@ -0,0 +1,265 @@
|
|||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
CREATE TABLE T1 (a INT PRIMARY KEY AUTO_INCREMENT) ENGINE=ROCKSDB;
|
||||||
|
INSERT INTO T1 VALUES();
|
||||||
|
"con1: Creating explict snapshot"
|
||||||
|
SELECT * FROM T1;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
"con2: Inserting a row"
|
||||||
|
INSERT INTO T1 VALUES();
|
||||||
|
SELECT * FROM T1;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
2
|
||||||
|
"con2: Attaching snapshot id 1"
|
||||||
|
ATTACH EXPLICIT ROCKSDB SNAPSHOT 1;
|
||||||
|
"con2: New row should not be visible"
|
||||||
|
SELECT * FROM T1;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
"con2: Releasing snapshot"
|
||||||
|
RELEASE EXPLICIT ROCKSDB SNAPSHOT;
|
||||||
|
"con2: New row should be visible"
|
||||||
|
SELECT * FROM T1;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
2
|
||||||
|
"con1: New row should not be visible"
|
||||||
|
SELECT * FROM T1;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
"con1: Releasing snapshot"
|
||||||
|
RELEASE EXPLICIT ROCKSDB SNAPSHOT;
|
||||||
|
"con1: New row should be visible"
|
||||||
|
SELECT * FROM T1;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
2
|
||||||
|
"con1: Starting shared snapshot"
|
||||||
|
SELECT * FROM T1;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
2
|
||||||
|
"con2: Inserting a row"
|
||||||
|
INSERT INTO T1 VALUES();
|
||||||
|
SELECT * FROM T1;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
2
|
||||||
|
3
|
||||||
|
"con2: Starting existing snapshot"
|
||||||
|
START TRANSACTION WITH EXISTING ROCKSDB SNAPSHOT 2;
|
||||||
|
"con2: New row should not be visible"
|
||||||
|
SELECT * FROM T1;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
2
|
||||||
|
COMMIT;
|
||||||
|
"con2: New row should be visible"
|
||||||
|
SELECT * FROM T1;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
2
|
||||||
|
3
|
||||||
|
COMMIT;
|
||||||
|
"con1: New row should be visible"
|
||||||
|
SELECT * FROM T1;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
2
|
||||||
|
3
|
||||||
|
"con1: Creating explict snapshot"
|
||||||
|
"con2: Trying to insert row"
|
||||||
|
INSERT INTO T1 VALUES();
|
||||||
|
ERROR HY000: Can't execute updates when an explicit snapshot is associated with the connection using CREATE|ATTACH EXPLICIT [ENGINE] SNAPSHOT
|
||||||
|
"con2: Attaching existing snapshot"
|
||||||
|
ATTACH EXPLICIT ROCKSDB SNAPSHOT 3;
|
||||||
|
"con2: Trying to insert row"
|
||||||
|
INSERT INTO T1 VALUES();
|
||||||
|
ERROR HY000: Can't execute updates when an explicit snapshot is associated with the connection using CREATE|ATTACH EXPLICIT [ENGINE] SNAPSHOT
|
||||||
|
RELEASE EXPLICIT ROCKSDB SNAPSHOT;
|
||||||
|
RELEASE EXPLICIT ROCKSDB SNAPSHOT;
|
||||||
|
"con1: Starting shared snapshot"
|
||||||
|
"con1: Trying to insert row"
|
||||||
|
INSERT INTO T1 VALUES();
|
||||||
|
ERROR HY000: Can't execute updates when you started a transaction with START TRANSACTION WITH CONSISTENT|SHARED|EXISTING [ROCKSDB] SNAPSHOT.
|
||||||
|
"con2: Starting existing snapshot"
|
||||||
|
START TRANSACTION WITH EXISTING ROCKSDB SNAPSHOT 4;
|
||||||
|
"con2: Trying to insert row"
|
||||||
|
INSERT INTO T1 VALUES();
|
||||||
|
ERROR HY000: Can't execute updates when you started a transaction with START TRANSACTION WITH CONSISTENT|SHARED|EXISTING [ROCKSDB] SNAPSHOT.
|
||||||
|
COMMIT;
|
||||||
|
COMMIT;
|
||||||
|
"con1: Creating explicit snapshot"
|
||||||
|
CREATE EXPLICIT ROCKSDB SNAPSHOT;
|
||||||
|
SELECT * FROM T1;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
2
|
||||||
|
3
|
||||||
|
"con2: Inserting a row"
|
||||||
|
INSERT INTO T1 VALUES();
|
||||||
|
SELECT * FROM T1;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
2
|
||||||
|
3
|
||||||
|
4
|
||||||
|
"con1: New row should not be seen"
|
||||||
|
SELECT * FROM T1;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
2
|
||||||
|
3
|
||||||
|
"con1: Creating another explicit snapshot"
|
||||||
|
CREATE EXPLICIT ROCKSDB SNAPSHOT;
|
||||||
|
"con1: Now the new row should be seen"
|
||||||
|
SELECT * FROM T1;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
2
|
||||||
|
3
|
||||||
|
4
|
||||||
|
"con1: Starting transaction with consistent snapshot"
|
||||||
|
START TRANSACTION WITH CONSISTENT ROCKSDB SNAPSHOT;
|
||||||
|
SELECT * FROM T1;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
2
|
||||||
|
3
|
||||||
|
4
|
||||||
|
"con2: Inserting a row"
|
||||||
|
INSERT INTO T1 VALUES();
|
||||||
|
SELECT * FROM T1;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
2
|
||||||
|
3
|
||||||
|
4
|
||||||
|
5
|
||||||
|
"con1: The new row should not be seen"
|
||||||
|
SELECT * FROM T1;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
2
|
||||||
|
3
|
||||||
|
4
|
||||||
|
"con1: Creating another explicit snapshot"
|
||||||
|
CREATE EXPLICIT ROCKSDB SNAPSHOT;
|
||||||
|
"con1: The new row should still not be seen"
|
||||||
|
SELECT * FROM T1;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
2
|
||||||
|
3
|
||||||
|
4
|
||||||
|
"con1: Committing trx"
|
||||||
|
COMMIT;
|
||||||
|
"con1: The new row should now be seen because of the new explicit snapshot created above"
|
||||||
|
SELECT * FROM T1;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
2
|
||||||
|
3
|
||||||
|
4
|
||||||
|
5
|
||||||
|
"con1: Releasing explicit snapshot"
|
||||||
|
RELEASE EXPLICIT ROCKSDB SNAPSHOT;
|
||||||
|
"con1: Starting transaction with shared snapshot"
|
||||||
|
START TRANSACTION WITH SHARED ROCKSDB SNAPSHOT;
|
||||||
|
SELECT * FROM T1;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
2
|
||||||
|
3
|
||||||
|
4
|
||||||
|
5
|
||||||
|
"con2: Inserting a row"
|
||||||
|
INSERT INTO T1 VALUES();
|
||||||
|
SELECT * FROM T1;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
2
|
||||||
|
3
|
||||||
|
4
|
||||||
|
5
|
||||||
|
6
|
||||||
|
"con1: The new row should not be seen"
|
||||||
|
SELECT * FROM T1;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
2
|
||||||
|
3
|
||||||
|
4
|
||||||
|
5
|
||||||
|
"con1: Starting another transaction with shared snapshot"
|
||||||
|
START TRANSACTION WITH SHARED ROCKSDB SNAPSHOT;
|
||||||
|
"con1: The new row should now be seen"
|
||||||
|
SELECT * FROM T1;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
2
|
||||||
|
3
|
||||||
|
4
|
||||||
|
5
|
||||||
|
6
|
||||||
|
COMMIT;
|
||||||
|
"con1: Creating explicit snapshot"
|
||||||
|
CREATE EXPLICIT ROCKSDB SNAPSHOT;
|
||||||
|
SELECT * FROM T1;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
2
|
||||||
|
3
|
||||||
|
4
|
||||||
|
5
|
||||||
|
6
|
||||||
|
"con1: Releasing explicit snapshot"
|
||||||
|
RELEASE EXPLICIT ROCKSDB SNAPSHOT;
|
||||||
|
"con1: Releasing explicit snapshot again"
|
||||||
|
RELEASE EXPLICIT ROCKSDB SNAPSHOT;
|
||||||
|
ERROR HY000: Cannot process explicit snapshot
|
||||||
|
"con1: Starting transaction with shared snapshot"
|
||||||
|
START TRANSACTION WITH SHARED ROCKSDB SNAPSHOT;
|
||||||
|
SELECT * FROM T1;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
2
|
||||||
|
3
|
||||||
|
4
|
||||||
|
5
|
||||||
|
6
|
||||||
|
"con2: Inserting a row"
|
||||||
|
INSERT INTO T1 VALUES();
|
||||||
|
SELECT * FROM T1;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
2
|
||||||
|
3
|
||||||
|
4
|
||||||
|
5
|
||||||
|
6
|
||||||
|
7
|
||||||
|
"con1: Creating explicit snapshot"
|
||||||
|
CREATE EXPLICIT ROCKSDB SNAPSHOT;
|
||||||
|
SELECT * FROM T1;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
2
|
||||||
|
3
|
||||||
|
4
|
||||||
|
5
|
||||||
|
6
|
||||||
|
"con1: Releasing explicit snapshot"
|
||||||
|
RELEASE EXPLICIT ROCKSDB SNAPSHOT;
|
||||||
|
"con1: The new row should not be seen"
|
||||||
|
SELECT* FROM T1;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
2
|
||||||
|
3
|
||||||
|
4
|
||||||
|
5
|
||||||
|
6
|
||||||
|
COMMIT;
|
||||||
|
DROP TABLE T1;
|
@@ -10,6 +10,7 @@ show create table information_schema.rocksdb_deadlock;
|
|||||||
Table Create Table
|
Table Create Table
|
||||||
ROCKSDB_DEADLOCK CREATE TEMPORARY TABLE `ROCKSDB_DEADLOCK` (
|
ROCKSDB_DEADLOCK CREATE TEMPORARY TABLE `ROCKSDB_DEADLOCK` (
|
||||||
`DEADLOCK_ID` bigint(8) NOT NULL DEFAULT '0',
|
`DEADLOCK_ID` bigint(8) NOT NULL DEFAULT '0',
|
||||||
|
`TIMESTAMP` bigint(8) NOT NULL DEFAULT '0',
|
||||||
`TRANSACTION_ID` bigint(8) NOT NULL DEFAULT '0',
|
`TRANSACTION_ID` bigint(8) NOT NULL DEFAULT '0',
|
||||||
`CF_NAME` varchar(193) NOT NULL DEFAULT '',
|
`CF_NAME` varchar(193) NOT NULL DEFAULT '',
|
||||||
`WAITING_KEY` varchar(513) NOT NULL DEFAULT '',
|
`WAITING_KEY` varchar(513) NOT NULL DEFAULT '',
|
||||||
@@ -21,7 +22,7 @@ ROCKSDB_DEADLOCK CREATE TEMPORARY TABLE `ROCKSDB_DEADLOCK` (
|
|||||||
create table t (i int primary key) engine=rocksdb;
|
create table t (i int primary key) engine=rocksdb;
|
||||||
insert into t values (1), (2), (3);
|
insert into t values (1), (2), (3);
|
||||||
select * from information_schema.rocksdb_deadlock;
|
select * from information_schema.rocksdb_deadlock;
|
||||||
DEADLOCK_ID TRANSACTION_ID CF_NAME WAITING_KEY LOCK_TYPE INDEX_NAME TABLE_NAME ROLLED_BACK
|
DEADLOCK_ID TIMESTAMP TRANSACTION_ID CF_NAME WAITING_KEY LOCK_TYPE INDEX_NAME TABLE_NAME ROLLED_BACK
|
||||||
Deadlock #1
|
Deadlock #1
|
||||||
begin;
|
begin;
|
||||||
select * from t where i=1 for update;
|
select * from t where i=1 for update;
|
||||||
@@ -39,9 +40,9 @@ i
|
|||||||
2
|
2
|
||||||
rollback;
|
rollback;
|
||||||
select * from information_schema.rocksdb_deadlock;
|
select * from information_schema.rocksdb_deadlock;
|
||||||
DEADLOCK_ID TRANSACTION_ID CF_NAME WAITING_KEY LOCK_TYPE INDEX_NAME TABLE_NAME ROLLED_BACK
|
DEADLOCK_ID TIMESTAMP TRANSACTION_ID CF_NAME WAITING_KEY LOCK_TYPE INDEX_NAME TABLE_NAME ROLLED_BACK
|
||||||
DEADLOCK_ID TRANSACTION_ID default WAITING_KEY EXCLUSIVE PRIMARY test.t 0
|
DEADLOCK_ID TIMESTAMP TRANSACTION_ID default WAITING_KEY EXCLUSIVE PRIMARY test.t 0
|
||||||
DEADLOCK_ID TRANSACTION_ID default WAITING_KEY EXCLUSIVE PRIMARY test.t 1
|
DEADLOCK_ID TIMESTAMP TRANSACTION_ID default WAITING_KEY EXCLUSIVE PRIMARY test.t 1
|
||||||
Deadlock #2
|
Deadlock #2
|
||||||
begin;
|
begin;
|
||||||
select * from t where i=1 for update;
|
select * from t where i=1 for update;
|
||||||
@@ -59,11 +60,11 @@ i
|
|||||||
2
|
2
|
||||||
rollback;
|
rollback;
|
||||||
select * from information_schema.rocksdb_deadlock;
|
select * from information_schema.rocksdb_deadlock;
|
||||||
DEADLOCK_ID TRANSACTION_ID CF_NAME WAITING_KEY LOCK_TYPE INDEX_NAME TABLE_NAME ROLLED_BACK
|
DEADLOCK_ID TIMESTAMP TRANSACTION_ID CF_NAME WAITING_KEY LOCK_TYPE INDEX_NAME TABLE_NAME ROLLED_BACK
|
||||||
DEADLOCK_ID TRANSACTION_ID default WAITING_KEY EXCLUSIVE PRIMARY test.t 0
|
DEADLOCK_ID TIMESTAMP TRANSACTION_ID default WAITING_KEY EXCLUSIVE PRIMARY test.t 0
|
||||||
DEADLOCK_ID TRANSACTION_ID default WAITING_KEY EXCLUSIVE PRIMARY test.t 1
|
DEADLOCK_ID TIMESTAMP TRANSACTION_ID default WAITING_KEY EXCLUSIVE PRIMARY test.t 1
|
||||||
DEADLOCK_ID TRANSACTION_ID default WAITING_KEY EXCLUSIVE PRIMARY test.t 0
|
DEADLOCK_ID TIMESTAMP TRANSACTION_ID default WAITING_KEY EXCLUSIVE PRIMARY test.t 0
|
||||||
DEADLOCK_ID TRANSACTION_ID default WAITING_KEY EXCLUSIVE PRIMARY test.t 1
|
DEADLOCK_ID TIMESTAMP TRANSACTION_ID default WAITING_KEY EXCLUSIVE PRIMARY test.t 1
|
||||||
set global rocksdb_max_latest_deadlocks = 10;
|
set global rocksdb_max_latest_deadlocks = 10;
|
||||||
Deadlock #3
|
Deadlock #3
|
||||||
begin;
|
begin;
|
||||||
@@ -82,18 +83,18 @@ i
|
|||||||
2
|
2
|
||||||
rollback;
|
rollback;
|
||||||
select * from information_schema.rocksdb_deadlock;
|
select * from information_schema.rocksdb_deadlock;
|
||||||
DEADLOCK_ID TRANSACTION_ID CF_NAME WAITING_KEY LOCK_TYPE INDEX_NAME TABLE_NAME ROLLED_BACK
|
DEADLOCK_ID TIMESTAMP TRANSACTION_ID CF_NAME WAITING_KEY LOCK_TYPE INDEX_NAME TABLE_NAME ROLLED_BACK
|
||||||
DEADLOCK_ID TRANSACTION_ID default WAITING_KEY EXCLUSIVE PRIMARY test.t 0
|
DEADLOCK_ID TIMESTAMP TRANSACTION_ID default WAITING_KEY EXCLUSIVE PRIMARY test.t 0
|
||||||
DEADLOCK_ID TRANSACTION_ID default WAITING_KEY EXCLUSIVE PRIMARY test.t 1
|
DEADLOCK_ID TIMESTAMP TRANSACTION_ID default WAITING_KEY EXCLUSIVE PRIMARY test.t 1
|
||||||
DEADLOCK_ID TRANSACTION_ID default WAITING_KEY EXCLUSIVE PRIMARY test.t 0
|
DEADLOCK_ID TIMESTAMP TRANSACTION_ID default WAITING_KEY EXCLUSIVE PRIMARY test.t 0
|
||||||
DEADLOCK_ID TRANSACTION_ID default WAITING_KEY EXCLUSIVE PRIMARY test.t 1
|
DEADLOCK_ID TIMESTAMP TRANSACTION_ID default WAITING_KEY EXCLUSIVE PRIMARY test.t 1
|
||||||
DEADLOCK_ID TRANSACTION_ID default WAITING_KEY EXCLUSIVE PRIMARY test.t 0
|
DEADLOCK_ID TIMESTAMP TRANSACTION_ID default WAITING_KEY EXCLUSIVE PRIMARY test.t 0
|
||||||
DEADLOCK_ID TRANSACTION_ID default WAITING_KEY EXCLUSIVE PRIMARY test.t 1
|
DEADLOCK_ID TIMESTAMP TRANSACTION_ID default WAITING_KEY EXCLUSIVE PRIMARY test.t 1
|
||||||
set global rocksdb_max_latest_deadlocks = 1;
|
set global rocksdb_max_latest_deadlocks = 1;
|
||||||
select * from information_schema.rocksdb_deadlock;
|
select * from information_schema.rocksdb_deadlock;
|
||||||
DEADLOCK_ID TRANSACTION_ID CF_NAME WAITING_KEY LOCK_TYPE INDEX_NAME TABLE_NAME ROLLED_BACK
|
DEADLOCK_ID TIMESTAMP TRANSACTION_ID CF_NAME WAITING_KEY LOCK_TYPE INDEX_NAME TABLE_NAME ROLLED_BACK
|
||||||
DEADLOCK_ID TRANSACTION_ID default WAITING_KEY EXCLUSIVE PRIMARY test.t 0
|
DEADLOCK_ID TIMESTAMP TRANSACTION_ID default WAITING_KEY EXCLUSIVE PRIMARY test.t 0
|
||||||
DEADLOCK_ID TRANSACTION_ID default WAITING_KEY EXCLUSIVE PRIMARY test.t 1
|
DEADLOCK_ID TIMESTAMP TRANSACTION_ID default WAITING_KEY EXCLUSIVE PRIMARY test.t 1
|
||||||
set rocksdb_deadlock_detect_depth = 2;
|
set rocksdb_deadlock_detect_depth = 2;
|
||||||
Deadlock #4
|
Deadlock #4
|
||||||
begin;
|
begin;
|
||||||
@@ -121,7 +122,7 @@ i
|
|||||||
rollback;
|
rollback;
|
||||||
set global rocksdb_max_latest_deadlocks = 5;
|
set global rocksdb_max_latest_deadlocks = 5;
|
||||||
select * from information_schema.rocksdb_deadlock;
|
select * from information_schema.rocksdb_deadlock;
|
||||||
DEADLOCK_ID TRANSACTION_ID CF_NAME WAITING_KEY LOCK_TYPE INDEX_NAME TABLE_NAME ROLLED_BACK
|
DEADLOCK_ID TIMESTAMP TRANSACTION_ID CF_NAME WAITING_KEY LOCK_TYPE INDEX_NAME TABLE_NAME ROLLED_BACK
|
||||||
Deadlock #5
|
Deadlock #5
|
||||||
begin;
|
begin;
|
||||||
select * from t where i=1 for update;
|
select * from t where i=1 for update;
|
||||||
@@ -155,18 +156,18 @@ i
|
|||||||
rollback;
|
rollback;
|
||||||
rollback;
|
rollback;
|
||||||
select * from information_schema.rocksdb_deadlock;
|
select * from information_schema.rocksdb_deadlock;
|
||||||
DEADLOCK_ID TRANSACTION_ID CF_NAME WAITING_KEY LOCK_TYPE INDEX_NAME TABLE_NAME ROLLED_BACK
|
DEADLOCK_ID TIMESTAMP TRANSACTION_ID CF_NAME WAITING_KEY LOCK_TYPE INDEX_NAME TABLE_NAME ROLLED_BACK
|
||||||
DEADLOCK_ID TRANSACTION_ID default WAITING_KEY EXCLUSIVE PRIMARY test.t 0
|
DEADLOCK_ID TIMESTAMP TRANSACTION_ID default WAITING_KEY EXCLUSIVE PRIMARY test.t 0
|
||||||
DEADLOCK_ID TRANSACTION_ID default WAITING_KEY SHARED PRIMARY test.t 1
|
DEADLOCK_ID TIMESTAMP TRANSACTION_ID default WAITING_KEY SHARED PRIMARY test.t 1
|
||||||
set global rocksdb_lock_wait_timeout = @prior_lock_wait_timeout;
|
set global rocksdb_lock_wait_timeout = @prior_lock_wait_timeout;
|
||||||
set global rocksdb_deadlock_detect = @prior_deadlock_detect;
|
set global rocksdb_deadlock_detect = @prior_deadlock_detect;
|
||||||
drop table t;
|
drop table t;
|
||||||
select * from information_schema.rocksdb_deadlock;
|
select * from information_schema.rocksdb_deadlock;
|
||||||
DEADLOCK_ID TRANSACTION_ID CF_NAME WAITING_KEY LOCK_TYPE INDEX_NAME TABLE_NAME ROLLED_BACK
|
DEADLOCK_ID TIMESTAMP TRANSACTION_ID CF_NAME WAITING_KEY LOCK_TYPE INDEX_NAME TABLE_NAME ROLLED_BACK
|
||||||
DEADLOCK_ID TRANSACTION_ID default WAITING_KEY EXCLUSIVE INDEX_NAME TABLE_NAME 0
|
DEADLOCK_ID TIMESTAMP TRANSACTION_ID default WAITING_KEY EXCLUSIVE INDEX_NAME TABLE_NAME 0
|
||||||
DEADLOCK_ID TRANSACTION_ID default WAITING_KEY SHARED INDEX_NAME TABLE_NAME 1
|
DEADLOCK_ID TIMESTAMP TRANSACTION_ID default WAITING_KEY SHARED INDEX_NAME TABLE_NAME 1
|
||||||
set global rocksdb_max_latest_deadlocks = 0;
|
set global rocksdb_max_latest_deadlocks = 0;
|
||||||
# Clears deadlock buffer of any existent deadlocks.
|
# Clears deadlock buffer of any existent deadlocks.
|
||||||
set global rocksdb_max_latest_deadlocks = @prior_max_latest_deadlocks;
|
set global rocksdb_max_latest_deadlocks = @prior_max_latest_deadlocks;
|
||||||
select * from information_schema.rocksdb_deadlock;
|
select * from information_schema.rocksdb_deadlock;
|
||||||
DEADLOCK_ID TRANSACTION_ID CF_NAME WAITING_KEY LOCK_TYPE INDEX_NAME TABLE_NAME ROLLED_BACK
|
DEADLOCK_ID TIMESTAMP TRANSACTION_ID CF_NAME WAITING_KEY LOCK_TYPE INDEX_NAME TABLE_NAME ROLLED_BACK
|
||||||
|
@@ -24,5 +24,8 @@ WHERE INDEX_NUMBER =
|
|||||||
WHERE TABLE_NAME = 't2' AND INDEX_NAME = "PRIMARY");
|
WHERE TABLE_NAME = 't2' AND INDEX_NAME = "PRIMARY");
|
||||||
COLUMN_FAMILY INDEX_NUMBER SST_NAME NUM_ROWS DATA_SIZE ENTRY_DELETES ENTRY_SINGLEDELETES ENTRY_MERGES ENTRY_OTHERS DISTINCT_KEYS_PREFIX
|
COLUMN_FAMILY INDEX_NUMBER SST_NAME NUM_ROWS DATA_SIZE ENTRY_DELETES ENTRY_SINGLEDELETES ENTRY_MERGES ENTRY_OTHERS DISTINCT_KEYS_PREFIX
|
||||||
# # SSTNAME 4 # # # # # 4
|
# # SSTNAME 4 # # # # # 4
|
||||||
|
select count(*) > 0 from information_schema.rocksdb_sst_props;
|
||||||
|
count(*) > 0
|
||||||
|
1
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
DROP TABLE t2;
|
DROP TABLE t2;
|
||||||
|
@@ -26,11 +26,11 @@ Table Op Msg_type Msg_text
|
|||||||
test.t0 analyze status OK
|
test.t0 analyze status OK
|
||||||
explain select * from t0 where key1 < 3 or key1 > 1020;
|
explain select * from t0 where key1 < 3 or key1 > 1020;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t0 range i1 i1 4 NULL 2 Using index condition
|
1 SIMPLE t0 range i1 i1 4 NULL 4 Using index condition
|
||||||
explain
|
explain
|
||||||
select * from t0 where key1 < 3 or key2 > 1020;
|
select * from t0 where key1 < 3 or key2 > 1020;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t0 index_merge i1,i2 i1,i2 4,4 NULL 2 Using sort_union(i1,i2); Using where
|
1 SIMPLE t0 index_merge i1,i2 i1,i2 4,4 NULL 4 Using sort_union(i1,i2); Using where
|
||||||
select * from t0 where key1 < 3 or key2 > 1020;
|
select * from t0 where key1 < 3 or key2 > 1020;
|
||||||
key1 key2 key3 key4 key5 key6 key7 key8
|
key1 key2 key3 key4 key5 key6 key7 key8
|
||||||
1 1 1 1 1 1 1 1023
|
1 1 1 1 1 1 1 1023
|
||||||
@@ -68,7 +68,7 @@ id select_type table type possible_keys key key_len ref rows Extra
|
|||||||
1 SIMPLE t0 index_merge i1,i2 i1,i2 4,4 NULL # Using sort_union(i1,i2); Using where
|
1 SIMPLE t0 index_merge i1,i2 i1,i2 4,4 NULL # Using sort_union(i1,i2); Using where
|
||||||
explain select * from t0 where (key1 > 1 or key2 > 2);
|
explain select * from t0 where (key1 > 1 or key2 > 2);
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t0 ALL i1,i2 NULL NULL NULL # Using where
|
1 SIMPLE t0 index_merge i1,i2 i1,i2 4,4 NULL # Using sort_union(i1,i2); Using where
|
||||||
explain select * from t0 force index (i1,i2) where (key1 > 1 or key2 > 2);
|
explain select * from t0 force index (i1,i2) where (key1 > 1 or key2 > 2);
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t0 index_merge i1,i2 i1,i2 4,4 NULL # Using sort_union(i1,i2); Using where
|
1 SIMPLE t0 index_merge i1,i2 i1,i2 4,4 NULL # Using sort_union(i1,i2); Using where
|
||||||
@@ -124,13 +124,13 @@ id select_type table type possible_keys key key_len ref rows Extra
|
|||||||
explain select * from t0 where
|
explain select * from t0 where
|
||||||
(key1 < 3 or key2 < 3) and (key3 < 1000);
|
(key1 < 3 or key2 < 3) and (key3 < 1000);
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t0 index_merge i1,i2,i3 i1,i2 4,4 NULL # Using sort_union(i1,i2); Using where
|
1 SIMPLE t0 range i1,i2,i3 i3 4 NULL # Using index condition; Using where
|
||||||
explain select * from t0 where
|
explain select * from t0 where
|
||||||
((key1 < 3 or key2 < 3) and (key2 <4 or key3 < 3))
|
((key1 < 3 or key2 < 3) and (key2 <4 or key3 < 3))
|
||||||
or
|
or
|
||||||
key2 > 4;
|
key2 > 4;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t0 ALL i1,i2,i3 NULL NULL NULL # Using where
|
1 SIMPLE t0 index_merge i1,i2,i3 i1,i2 4,4 NULL # Using sort_union(i1,i2); Using where
|
||||||
explain select * from t0 where
|
explain select * from t0 where
|
||||||
((key1 < 4 or key2 < 4) and (key2 <4 or key3 < 3))
|
((key1 < 4 or key2 < 4) and (key2 <4 or key3 < 3))
|
||||||
or
|
or
|
||||||
@@ -175,7 +175,7 @@ explain select * from t0 where
|
|||||||
or
|
or
|
||||||
((key3 >5 or key5 < 2) and (key5 < 5 or key6 < 6));
|
((key3 >5 or key5 < 2) and (key5 < 5 or key6 < 6));
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t0 ALL i1,i2,i3,i5,i6 NULL NULL NULL # Using where
|
1 SIMPLE t0 index_merge i1,i2,i3,i5,i6 i3,i5 4,4 NULL # Using sort_union(i3,i5); Using where
|
||||||
explain select * from t0 force index(i1, i2, i3, i4, i5, i6 ) where
|
explain select * from t0 force index(i1, i2, i3, i4, i5, i6 ) where
|
||||||
((key3 <3 or key5 < 4) and (key1 < 3 or key2 < 3))
|
((key3 <3 or key5 < 4) and (key1 < 3 or key2 < 3))
|
||||||
or
|
or
|
||||||
@@ -235,13 +235,13 @@ key1a key1b key2 key2_1 key2_2 key3
|
|||||||
4 4 0 4 4 4
|
4 4 0 4 4 4
|
||||||
explain select * from t4 where key1a = 3 or key1b = 4;
|
explain select * from t4 where key1a = 3 or key1b = 4;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t4 index_merge i1a,i1b i1a,i1b 4,4 NULL 2 Using sort_union(i1a,i1b); Using where
|
1 SIMPLE t4 index_merge i1a,i1b i1a,i1b 4,4 NULL 4 Using sort_union(i1a,i1b); Using where
|
||||||
explain select * from t4 where key2 = 1 and (key2_1 = 1 or key3 = 5);
|
explain select * from t4 where key2 = 1 and (key2_1 = 1 or key3 = 5);
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t4 ref i2_1,i2_2 i2_1 4 const 1 Using where
|
1 SIMPLE t4 ref i2_1,i2_2 i2_1 4 const 2 Using where
|
||||||
explain select * from t4 where key2 = 1 and (key2_1 = 1 or key2_2 = 5);
|
explain select * from t4 where key2 = 1 and (key2_1 = 1 or key2_2 = 5);
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t4 ref i2_1,i2_2 i2_1 4 const 1 Using where
|
1 SIMPLE t4 ref i2_1,i2_2 i2_1 4 const 2 Using where
|
||||||
explain select * from t4 where key2_1 = 1 or key2_2 = 5;
|
explain select * from t4 where key2_1 = 1 or key2_2 = 5;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t4 ALL NULL NULL NULL NULL # Using where
|
1 SIMPLE t4 ALL NULL NULL NULL NULL # Using where
|
||||||
@@ -250,7 +250,7 @@ insert into t1 select * from t0;
|
|||||||
explain select * from t0 left join t1 on (t0.key1=t1.key1)
|
explain select * from t0 left join t1 on (t0.key1=t1.key1)
|
||||||
where t0.key1=3 or t0.key2=4;
|
where t0.key1=3 or t0.key2=4;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t0 index_merge i1,i2 i1,i2 4,4 NULL 2 Using union(i1,i2); Using where
|
1 SIMPLE t0 index_merge i1,i2 i1,i2 4,4 NULL 4 Using union(i1,i2); Using where
|
||||||
1 SIMPLE t1 ref i1 i1 4 test.t0.key1 1 NULL
|
1 SIMPLE t1 ref i1 i1 4 test.t0.key1 1 NULL
|
||||||
select * from t0 left join t1 on (t0.key1=t1.key1)
|
select * from t0 left join t1 on (t0.key1=t1.key1)
|
||||||
where t0.key1=3 or t0.key2=4;
|
where t0.key1=3 or t0.key2=4;
|
||||||
@@ -260,19 +260,19 @@ key1 key2 key3 key4 key5 key6 key7 key8 key1 key2 key3 key4 key5 key6 key7 key8
|
|||||||
explain
|
explain
|
||||||
select * from t0,t1 where (t0.key1=t1.key1) and ( t0.key1=3 or t0.key2=4);
|
select * from t0,t1 where (t0.key1=t1.key1) and ( t0.key1=3 or t0.key2=4);
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t0 index_merge i1,i2 i1,i2 4,4 NULL 2 Using union(i1,i2); Using where
|
1 SIMPLE t0 index_merge i1,i2 i1,i2 4,4 NULL 4 Using union(i1,i2); Using where
|
||||||
1 SIMPLE t1 ref i1 i1 4 test.t0.key1 1 NULL
|
1 SIMPLE t1 ref i1 i1 4 test.t0.key1 1 NULL
|
||||||
explain
|
explain
|
||||||
select * from t0,t1 where (t0.key1=t1.key1) and
|
select * from t0,t1 where (t0.key1=t1.key1) and
|
||||||
(t0.key1=3 or t0.key2<4) and t1.key1=2;
|
(t0.key1=3 or t0.key2<4) and t1.key1=2;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t0 ref i1,i2 i1 4 const 1 Using where
|
1 SIMPLE t0 ref i1,i2 i1 4 const 2 Using where
|
||||||
1 SIMPLE t1 ref i1 i1 4 const 1 NULL
|
1 SIMPLE t1 ref i1 i1 4 const 2 NULL
|
||||||
explain select * from t0,t1 where t0.key1 = 5 and
|
explain select * from t0,t1 where t0.key1 = 5 and
|
||||||
(t1.key1 = t0.key1 or t1.key8 = t0.key1);
|
(t1.key1 = t0.key1 or t1.key8 = t0.key1);
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t0 ref i1 i1 4 const 1 NULL
|
1 SIMPLE t0 ref i1 i1 4 const 2 NULL
|
||||||
1 SIMPLE t1 index_merge i1,i8 i1,i8 4,4 NULL 2 Using union(i1,i8); Using where; Using join buffer (Block Nested Loop)
|
1 SIMPLE t1 index_merge i1,i8 i1,i8 4,4 NULL 4 Using union(i1,i8); Using where; Using join buffer (Block Nested Loop)
|
||||||
explain select * from t0,t1 where t0.key1 < 3 and
|
explain select * from t0,t1 where t0.key1 < 3 and
|
||||||
(t1.key1 = t0.key1 or t1.key8 = t0.key1);
|
(t1.key1 = t0.key1 or t1.key8 = t0.key1);
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
@@ -281,13 +281,13 @@ id select_type table type possible_keys key key_len ref rows Extra
|
|||||||
explain select * from t1 where key1=3 or key2=4
|
explain select * from t1 where key1=3 or key2=4
|
||||||
union select * from t1 where key1<4 or key3=5;
|
union select * from t1 where key1<4 or key3=5;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY t1 index_merge i1,i2 i1,i2 4,4 NULL 2 Using union(i1,i2); Using where
|
1 PRIMARY t1 index_merge i1,i2 i1,i2 4,4 NULL 4 Using union(i1,i2); Using where
|
||||||
2 UNION t1 index_merge i1,i3 i1,i3 4,4 NULL 2 Using sort_union(i1,i3); Using where
|
2 UNION t1 index_merge i1,i3 i1,i3 4,4 NULL 4 Using sort_union(i1,i3); Using where
|
||||||
NULL UNION RESULT <union1,2> ALL NULL NULL NULL NULL NULL Using temporary
|
NULL UNION RESULT <union1,2> ALL NULL NULL NULL NULL NULL Using temporary
|
||||||
explain select * from (select * from t1 where key1 = 3 or key2 =3) as Z where key8 >5;
|
explain select * from (select * from t1 where key1 = 3 or key2 =3) as Z where key8 >5;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY <derived2> ALL NULL NULL NULL NULL 2 Using where
|
1 PRIMARY <derived2> ALL NULL NULL NULL NULL 4 Using where
|
||||||
2 DERIVED t1 index_merge i1,i2 i1,i2 4,4 NULL 2 Using union(i1,i2); Using where
|
2 DERIVED t1 index_merge i1,i2 i1,i2 4,4 NULL 4 Using union(i1,i2); Using where
|
||||||
create table t3 like t0;
|
create table t3 like t0;
|
||||||
insert into t3 select * from t0;
|
insert into t3 select * from t0;
|
||||||
alter table t3 add key9 int not null, add index i9(key9);
|
alter table t3 add key9 int not null, add index i9(key9);
|
||||||
@@ -300,7 +300,7 @@ key1=1 or key2=2 or key3=3 or key4=4 or
|
|||||||
key5=5 or key6=6 or key7=7 or key8=8 or
|
key5=5 or key6=6 or key7=7 or key8=8 or
|
||||||
key9=9 or keyA=10 or keyB=11 or keyC=12;
|
key9=9 or keyA=10 or keyB=11 or keyC=12;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t3 index_merge i1,i2,i3,i4,i5,i6,i7,i8,i9,iA,iB,iC i1,i2,i3,i4,i5,i6,i7,i8,i9,iA,iB,iC 4,4,4,4,4,4,4,4,4,4,4,4 NULL 12 Using union(i1,i2,i3,i4,i5,i6,i7,i8,i9,iA,iB,iC); Using where
|
1 SIMPLE t3 index_merge i1,i2,i3,i4,i5,i6,i7,i8,i9,iA,iB,iC i1,i2,i3,i4,i5,i6,i7,i8,i9,iA,iB,iC 4,4,4,4,4,4,4,4,4,4,4,4 NULL 24 Using union(i1,i2,i3,i4,i5,i6,i7,i8,i9,iA,iB,iC); Using where
|
||||||
select * from t3 where
|
select * from t3 where
|
||||||
key1=1 or key2=2 or key3=3 or key4=4 or
|
key1=1 or key2=2 or key3=3 or key4=4 or
|
||||||
key5=5 or key6=6 or key7=7 or key8=8 or
|
key5=5 or key6=6 or key7=7 or key8=8 or
|
||||||
@@ -320,7 +320,7 @@ key1 key2 key3 key4 key5 key6 key7 key8 key9 keyA keyB keyC
|
|||||||
1016 1016 1016 1016 1016 1016 1016 8 1016 1016 1016 1016
|
1016 1016 1016 1016 1016 1016 1016 8 1016 1016 1016 1016
|
||||||
explain select * from t0 where key1 < 3 or key2 < 4;
|
explain select * from t0 where key1 < 3 or key2 < 4;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t0 index_merge i1,i2 i1,i2 4,4 NULL 2 Using sort_union(i1,i2); Using where
|
1 SIMPLE t0 index_merge i1,i2 i1,i2 4,4 NULL 4 Using sort_union(i1,i2); Using where
|
||||||
select * from t0 where key1 < 3 or key2 < 4;
|
select * from t0 where key1 < 3 or key2 < 4;
|
||||||
key1 key2 key3 key4 key5 key6 key7 key8
|
key1 key2 key3 key4 key5 key6 key7 key8
|
||||||
1 1 1 1 1 1 1 1023
|
1 1 1 1 1 1 1 1023
|
||||||
@@ -606,7 +606,7 @@ count(*)
|
|||||||
64801
|
64801
|
||||||
explain select key1,key2 from t1 where key1=100 and key2=100;
|
explain select key1,key2 from t1 where key1=100 and key2=100;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t1 index_merge key1,key2 key2,key1 5,5 NULL 2 Using intersect(key2,key1); Using where; Using index
|
1 SIMPLE t1 ref key1,key2 key1 5 const 2 Using where
|
||||||
select key1,key2 from t1 where key1=100 and key2=100;
|
select key1,key2 from t1 where key1=100 and key2=100;
|
||||||
key1 key2
|
key1 key2
|
||||||
100 100
|
100 100
|
||||||
@@ -699,7 +699,7 @@ count(a)
|
|||||||
4
|
4
|
||||||
expla_or_bin select count(a_or_b) from t2 where a_or_b='AAAAAAAA' a_or_bnd a_or_b='AAAAAAAA';
|
expla_or_bin select count(a_or_b) from t2 where a_or_b='AAAAAAAA' a_or_bnd a_or_b='AAAAAAAA';
|
||||||
id select_type ta_or_ba_or_ble type possia_or_ble_keys key key_len ref rows Extra_or_b
|
id select_type ta_or_ba_or_ble type possia_or_ble_keys key key_len ref rows Extra_or_b
|
||||||
1 SIMPLE t2 ref a_or_b,a_or_b a_or_b 6 const 1 Using where
|
1 SIMPLE t2 ref a_or_b,a_or_b a_or_b 6 const 2 Using where
|
||||||
select count(a) from t2 where a='AAAAAAAA' and b='AAAAAAAA';
|
select count(a) from t2 where a='AAAAAAAA' and b='AAAAAAAA';
|
||||||
count(a)
|
count(a)
|
||||||
4
|
4
|
||||||
@@ -709,7 +709,7 @@ count(a)
|
|||||||
insert into t2 values ('ab', 'ab', 'uh', 'oh');
|
insert into t2 values ('ab', 'ab', 'uh', 'oh');
|
||||||
explain select a from t2 where a='ab';
|
explain select a from t2 where a='ab';
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t2 ref a a 6 const 1 Using where
|
1 SIMPLE t2 ref a a 6 const 2 Using where
|
||||||
drop table t2;
|
drop table t2;
|
||||||
CREATE TABLE t1(c1 INT, c2 INT DEFAULT 0, c3 CHAR(255) DEFAULT '',
|
CREATE TABLE t1(c1 INT, c2 INT DEFAULT 0, c3 CHAR(255) DEFAULT '',
|
||||||
KEY(c1), KEY(c2), KEY(c3));
|
KEY(c1), KEY(c2), KEY(c3));
|
||||||
@@ -735,7 +735,7 @@ INDEX i2(key2)
|
|||||||
);
|
);
|
||||||
explain select * from t1 where key1 < 5 or key2 > 197;
|
explain select * from t1 where key1 < 5 or key2 > 197;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t1 index_merge i1,i2 i1,i2 4,4 NULL 2 Using sort_union(i1,i2); Using where
|
1 SIMPLE t1 index_merge i1,i2 i1,i2 4,4 NULL 4 Using sort_union(i1,i2); Using where
|
||||||
select * from t1 where key1 < 5 or key2 > 197;
|
select * from t1 where key1 < 5 or key2 > 197;
|
||||||
key1 key2
|
key1 key2
|
||||||
0 200
|
0 200
|
||||||
@@ -745,7 +745,7 @@ key1 key2
|
|||||||
4 196
|
4 196
|
||||||
explain select * from t1 where key1 < 3 or key2 > 195;
|
explain select * from t1 where key1 < 3 or key2 > 195;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t1 index_merge i1,i2 i1,i2 4,4 NULL 2 Using sort_union(i1,i2); Using where
|
1 SIMPLE t1 index_merge i1,i2 i1,i2 4,4 NULL 4 Using sort_union(i1,i2); Using where
|
||||||
select * from t1 where key1 < 3 or key2 > 195;
|
select * from t1 where key1 < 3 or key2 > 195;
|
||||||
key1 key2
|
key1 key2
|
||||||
0 200
|
0 200
|
||||||
@@ -761,7 +761,7 @@ update t1 set str1='aaa', str2='bbb', str3=concat(key2, '-', key1 div 2, '_' ,if
|
|||||||
alter table t1 add primary key (str1, zeroval, str2, str3);
|
alter table t1 add primary key (str1, zeroval, str2, str3);
|
||||||
explain select * from t1 where key1 < 5 or key2 > 197;
|
explain select * from t1 where key1 < 5 or key2 > 197;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t1 ALL i1,i2 NULL NULL NULL 200 Using where
|
1 SIMPLE t1 index_merge i1,i2 i1,i2 4,4 NULL 4 Using sort_union(i1,i2); Using where
|
||||||
select * from t1 where key1 < 5 or key2 > 197;
|
select * from t1 where key1 < 5 or key2 > 197;
|
||||||
key1 key2 str1 zeroval str2 str3
|
key1 key2 str1 zeroval str2 str3
|
||||||
4 196 aaa 0 bbb 196-2_a
|
4 196 aaa 0 bbb 196-2_a
|
||||||
@@ -771,7 +771,7 @@ key1 key2 str1 zeroval str2 str3
|
|||||||
0 200 aaa 0 bbb 200-0_a
|
0 200 aaa 0 bbb 200-0_a
|
||||||
explain select * from t1 where key1 < 3 or key2 > 195;
|
explain select * from t1 where key1 < 3 or key2 > 195;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t1 ALL i1,i2 NULL NULL NULL 200 Using where
|
1 SIMPLE t1 index_merge i1,i2 i1,i2 4,4 NULL 4 Using sort_union(i1,i2); Using where
|
||||||
select * from t1 where key1 < 3 or key2 > 195;
|
select * from t1 where key1 < 3 or key2 > 195;
|
||||||
key1 key2 str1 zeroval str2 str3
|
key1 key2 str1 zeroval str2 str3
|
||||||
4 196 aaa 0 bbb 196-2_a
|
4 196 aaa 0 bbb 196-2_a
|
||||||
@@ -792,7 +792,7 @@ show warnings;
|
|||||||
Level Code Message
|
Level Code Message
|
||||||
explain select pk from t1 where key1 = 1 and key2 = 1;
|
explain select pk from t1 where key1 = 1 and key2 = 1;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t1 ref key1,key2 key1 5 const 1 Using where
|
1 SIMPLE t1 ref key1,key2 key1 5 const 2 Using where
|
||||||
select pk from t1 where key2 = 1 and key1 = 1;
|
select pk from t1 where key2 = 1 and key1 = 1;
|
||||||
pk
|
pk
|
||||||
26
|
26
|
||||||
@@ -1060,7 +1060,7 @@ SELECT a
|
|||||||
FROM t1
|
FROM t1
|
||||||
WHERE c = 1 AND b = 1 AND d = 1;
|
WHERE c = 1 AND b = 1 AND d = 1;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t1 ref c,bd c 5 const 1 Using where
|
1 SIMPLE t1 ref c,bd c 5 const 2 Using where
|
||||||
CREATE TABLE t2 ( a INT )
|
CREATE TABLE t2 ( a INT )
|
||||||
SELECT a
|
SELECT a
|
||||||
FROM t1
|
FROM t1
|
||||||
@@ -1291,7 +1291,7 @@ primary key (pk1, pk2)
|
|||||||
);
|
);
|
||||||
explain select * from t1 where pk1 = 1 and pk2 < 80 and key1=0;
|
explain select * from t1 where pk1 = 1 and pk2 < 80 and key1=0;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t1 ref PRIMARY,key1 key1 8 const,const ROWS Using index condition
|
1 SIMPLE t1 range PRIMARY,key1 PRIMARY 8 NULL ROWS Using where
|
||||||
select * from t1 where pk1 = 1 and pk2 < 80 and key1=0;
|
select * from t1 where pk1 = 1 and pk2 < 80 and key1=0;
|
||||||
pk1 pk2 key1 key2 pktail1ok pktail2ok pktail3bad pktail4bad pktail5bad pk2copy badkey filler1 filler2
|
pk1 pk2 key1 key2 pktail1ok pktail2ok pktail3bad pktail4bad pktail5bad pk2copy badkey filler1 filler2
|
||||||
1 10 0 0 0 0 0 0 0 10 0 filler-data-10 filler2
|
1 10 0 0 0 0 0 0 0 10 0 filler-data-10 filler2
|
||||||
@@ -1306,7 +1306,7 @@ pk1 pk2 key1 key2 pktail1ok pktail2ok pktail3bad pktail4bad pktail5bad pk2copy b
|
|||||||
1 19 0 0 0 0 0 0 0 19 0 filler-data-19 filler2
|
1 19 0 0 0 0 0 0 0 19 0 filler-data-19 filler2
|
||||||
explain select pk1,pk2 from t1 where key1 = 10 and key2=10 and 2*pk1+1 < 2*96+1;
|
explain select pk1,pk2 from t1 where key1 = 10 and key2=10 and 2*pk1+1 < 2*96+1;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t1 ref key1,key2 key1 4 const 1 Using index condition; Using where
|
1 SIMPLE t1 index_merge key1,key2 key1,key2 4,4 NULL 1 Using intersect(key1,key2); Using where; Using index
|
||||||
select pk1,pk2 from t1 where key1 = 10 and key2=10 and 2*pk1+1 < 2*96+1;
|
select pk1,pk2 from t1 where key1 = 10 and key2=10 and 2*pk1+1 < 2*96+1;
|
||||||
pk1 pk2
|
pk1 pk2
|
||||||
95 50
|
95 50
|
||||||
@@ -1324,16 +1324,16 @@ id select_type table type possible_keys key key_len ref rows Extra
|
|||||||
1 SIMPLE t1 ref key1 key1 4 const ROWS Using where
|
1 SIMPLE t1 ref key1 key1 4 const ROWS Using where
|
||||||
explain select * from t1 where pk1 < 7500 and key1 = 10;
|
explain select * from t1 where pk1 < 7500 and key1 = 10;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t1 index_merge PRIMARY,key1 key1,PRIMARY 8,4 NULL ROWS Using intersect(key1,PRIMARY); Using where
|
1 SIMPLE t1 range PRIMARY,key1 PRIMARY 4 NULL ROWS Using where
|
||||||
explain select * from t1 where pktail1ok=1 and key1=10;
|
explain select * from t1 where pktail1ok=1 and key1=10;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t1 ref key1,pktail1ok key1 4 const 1 Using where
|
1 SIMPLE t1 index_merge key1,pktail1ok key1,pktail1ok 4,4 NULL 1 Using intersect(key1,pktail1ok); Using where
|
||||||
explain select * from t1 where pktail2ok=1 and key1=10;
|
explain select * from t1 where pktail2ok=1 and key1=10;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t1 ref key1,pktail2ok key1 4 const 1 Using where
|
1 SIMPLE t1 index_merge key1,pktail2ok key1,pktail2ok 4,4 NULL 1 Using intersect(key1,pktail2ok); Using where
|
||||||
explain select * from t1 where (pktail2ok=1 and pk1< 50000) or key1=10;
|
explain select * from t1 where (pktail2ok=1 and pk1< 50000) or key1=10;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t1 index_merge PRIMARY,key1,pktail2ok pktail2ok,key1 8,4 NULL ROWS Using sort_union(pktail2ok,key1); Using where
|
1 SIMPLE t1 index_merge PRIMARY,key1,pktail2ok PRIMARY,key1 4,4 NULL ROWS Using union(PRIMARY,key1); Using where
|
||||||
explain select * from t1 where pktail3bad=1 and key1=10;
|
explain select * from t1 where pktail3bad=1 and key1=10;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t1 ref key1,pktail3bad EITHER_KEY 4 const ROWS Using where
|
1 SIMPLE t1 ref key1,pktail3bad EITHER_KEY 4 const ROWS Using where
|
||||||
@@ -1345,7 +1345,7 @@ id select_type table type possible_keys key key_len ref rows Extra
|
|||||||
1 SIMPLE t1 ref key1,pktail5bad key1 4 const ROWS Using where
|
1 SIMPLE t1 ref key1,pktail5bad key1 4 const ROWS Using where
|
||||||
explain select pk1,pk2,key1,key2 from t1 where key1 = 10 and key2=10 limit 10;
|
explain select pk1,pk2,key1,key2 from t1 where key1 = 10 and key2=10 limit 10;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t1 ref key1,key2 key1 4 const 1 Using where
|
1 SIMPLE t1 index_merge key1,key2 key1,key2 4,4 NULL 1 Using intersect(key1,key2); Using where; Using index
|
||||||
select pk1,pk2,key1,key2 from t1 where key1 = 10 and key2=10 limit 10;
|
select pk1,pk2,key1,key2 from t1 where key1 = 10 and key2=10 limit 10;
|
||||||
pk1 pk2 key1 key2
|
pk1 pk2 key1 key2
|
||||||
95 50 10 10
|
95 50 10 10
|
||||||
@@ -1396,7 +1396,7 @@ EXPLAIN SELECT t1.f1 FROM t1
|
|||||||
WHERE (SELECT COUNT(*) FROM t2 WHERE t2.f3 = 'h' AND t2.f2 = t1.f1) = 0 AND t1.f1 = 2;
|
WHERE (SELECT COUNT(*) FROM t2 WHERE t2.f3 = 'h' AND t2.f2 = t1.f1) = 0 AND t1.f1 = 2;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY t1 const PRIMARY PRIMARY 4 const 1 Using index
|
1 PRIMARY t1 const PRIMARY PRIMARY 4 const 1 Using index
|
||||||
2 DEPENDENT SUBQUERY t2 ref f2,f3 f2 5 const 1 Using where
|
2 DEPENDENT SUBQUERY t2 ref f2,f3 f2 5 const 2 Using where
|
||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
set global rocksdb_force_flush_memtable_now=1;
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
#
|
#
|
||||||
@@ -1415,5 +1415,5 @@ INSERT INTO t1 SELECT id + 8, id2 + 8, id3 +8 FROM t1;
|
|||||||
INSERT INTO t1 SELECT id + 16, 7, 0 FROM t1;
|
INSERT INTO t1 SELECT id + 16, 7, 0 FROM t1;
|
||||||
EXPLAIN SELECT SQL_NO_CACHE count(*) FROM t1 WHERE id2=7 AND id3=0;
|
EXPLAIN SELECT SQL_NO_CACHE count(*) FROM t1 WHERE id2=7 AND id3=0;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t1 ref id2,id3,covering_index id2 4 const 1 Using where
|
1 SIMPLE t1 ref id2,id3,covering_index covering_index 8 const,const 2 Using index
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
@@ -12,6 +12,7 @@ count(*)
|
|||||||
select VALUE into @keysIn from INFORMATION_SCHEMA.ROCKSDB_COMPACTION_STATS where CF_NAME = 'default' and LEVEL = 'Sum' and TYPE = 'KeyIn';
|
select VALUE into @keysIn from INFORMATION_SCHEMA.ROCKSDB_COMPACTION_STATS where CF_NAME = 'default' and LEVEL = 'Sum' and TYPE = 'KeyIn';
|
||||||
CREATE TABLE t1 (i1 INT, i2 INT, PRIMARY KEY (i1)) ENGINE = ROCKSDB;
|
CREATE TABLE t1 (i1 INT, i2 INT, PRIMARY KEY (i1)) ENGINE = ROCKSDB;
|
||||||
INSERT INTO t1 VALUES (1, 1), (2, 2), (3, 3);
|
INSERT INTO t1 VALUES (1, 1), (2, 2), (3, 3);
|
||||||
|
set global rocksdb_force_flush_memtable_now = true;
|
||||||
select * from INFORMATION_SCHEMA.ROCKSDB_GLOBAL_INFO;
|
select * from INFORMATION_SCHEMA.ROCKSDB_GLOBAL_INFO;
|
||||||
TYPE NAME VALUE
|
TYPE NAME VALUE
|
||||||
BINLOG FILE master-bin.000001
|
BINLOG FILE master-bin.000001
|
||||||
|
@@ -46,7 +46,7 @@ pk
|
|||||||
127
|
127
|
||||||
SHOW TABLE STATUS LIKE 't1';
|
SHOW TABLE STATUS LIKE 't1';
|
||||||
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
|
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
|
||||||
t1 ROCKSDB 10 Fixed 2 15 30 0 0 0 127 NULL NULL NULL latin1_swedish_ci NULL
|
t1 ROCKSDB # Fixed 2 # # # # # 127 NULL NULL NULL latin1_swedish_ci NULL
|
||||||
INSERT INTO t1 VALUES ();
|
INSERT INTO t1 VALUES ();
|
||||||
ERROR 23000: Duplicate entry '127' for key 'PRIMARY'
|
ERROR 23000: Duplicate entry '127' for key 'PRIMARY'
|
||||||
SELECT * FROM t1;
|
SELECT * FROM t1;
|
||||||
|
@@ -106,3 +106,18 @@ SELECT a,b FROM t1;
|
|||||||
a b
|
a b
|
||||||
UNLOCK TABLES;
|
UNLOCK TABLES;
|
||||||
DROP TABLE t1, t2;
|
DROP TABLE t1, t2;
|
||||||
|
CREATE TABLE t1 (i INT) ENGINE=MyISAM;
|
||||||
|
HANDLER t1 OPEN h;
|
||||||
|
CREATE TABLE t2 (i INT) ENGINE=RocksDB;
|
||||||
|
LOCK TABLES t2 WRITE;
|
||||||
|
connect con1,localhost,root,,test;
|
||||||
|
connection con1;
|
||||||
|
FLUSH TABLES WITH READ LOCK;
|
||||||
|
connection default;
|
||||||
|
INSERT INTO t2 VALUES (1);
|
||||||
|
UNLOCK TABLES;
|
||||||
|
HANDLER h CLOSE;
|
||||||
|
connection con1;
|
||||||
|
disconnect con1;
|
||||||
|
connection default;
|
||||||
|
DROP TABLE t1, t2;
|
||||||
|
@@ -34,7 +34,10 @@ update r1 set value1=value1+100 where id1=1 and id2=1 and id3='1';
|
|||||||
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
|
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
|
||||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
|
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
|
||||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||||
/*!50601 SELECT count(*) INTO @is_rocksdb_supported FROM information_schema.SESSION_VARIABLES WHERE variable_name='rocksdb_bulk_load' */;
|
/*!50601 SELECT count(*) INTO @is_mysql8 FROM information_schema.TABLES WHERE table_schema='performance_schema' AND table_name='session_variables' */;
|
||||||
|
/*!50601 SET @check_rocksdb = CONCAT( 'SELECT count(*) INTO @is_rocksdb_supported FROM ', IF (@is_mysql8, 'performance', 'information'), '_schema.session_variables WHERE variable_name=\'rocksdb_bulk_load\'') */;
|
||||||
|
/*!50601 PREPARE s FROM @check_rocksdb */;
|
||||||
|
/*!50601 EXECUTE s */;
|
||||||
/*!50601 SET @enable_bulk_load = IF (@is_rocksdb_supported, 'SET SESSION rocksdb_bulk_load=1', 'SET @dummy = 0') */;
|
/*!50601 SET @enable_bulk_load = IF (@is_rocksdb_supported, 'SET SESSION rocksdb_bulk_load=1', 'SET @dummy = 0') */;
|
||||||
/*!50601 PREPARE s FROM @enable_bulk_load */;
|
/*!50601 PREPARE s FROM @enable_bulk_load */;
|
||||||
/*!50601 EXECUTE s */;
|
/*!50601 EXECUTE s */;
|
||||||
|
@@ -0,0 +1,19 @@
|
|||||||
|
CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=RocksDB;
|
||||||
|
INSERT INTO t1 VALUES (1), (2), (3);
|
||||||
|
SET DEBUG_SYNC="handler_ha_index_next_end SIGNAL idx_scan_in_progress WAIT_FOR finish_scan";
|
||||||
|
SELECT * FROM t1;
|
||||||
|
SET DEBUG_SYNC="now WAIT_FOR idx_scan_in_progress";
|
||||||
|
ANALYZE TABLE t1;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.t1 analyze status OK
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
2
|
||||||
|
3
|
||||||
|
SET DEBUG_SYNC="now SIGNAL finish_scan";
|
||||||
|
a
|
||||||
|
1
|
||||||
|
2
|
||||||
|
3
|
||||||
|
DROP TABLE t1;
|
@@ -24,11 +24,9 @@ CF_NAME OPTION_TYPE VALUE
|
|||||||
__system__ PREFIX_EXTRACTOR rocksdb.CappedPrefix.24
|
__system__ PREFIX_EXTRACTOR rocksdb.CappedPrefix.24
|
||||||
cf1 PREFIX_EXTRACTOR rocksdb.CappedPrefix.24
|
cf1 PREFIX_EXTRACTOR rocksdb.CappedPrefix.24
|
||||||
default PREFIX_EXTRACTOR rocksdb.CappedPrefix.24
|
default PREFIX_EXTRACTOR rocksdb.CappedPrefix.24
|
||||||
|
SET @@global.rocksdb_update_cf_options = 'cf1={prefix_extractor=capped:26};';
|
||||||
|
|
||||||
Restarting with new Prefix Extractor...
|
Changed Prefix Extractor (after update_cf_options set, without restart):
|
||||||
|
|
||||||
|
|
||||||
Changed Prefix Extractor (after restart):
|
|
||||||
|
|
||||||
SELECT * FROM information_schema.rocksdb_cf_options WHERE option_type like '%prefix_extractor%';
|
SELECT * FROM information_schema.rocksdb_cf_options WHERE option_type like '%prefix_extractor%';
|
||||||
CF_NAME OPTION_TYPE VALUE
|
CF_NAME OPTION_TYPE VALUE
|
||||||
@@ -65,6 +63,7 @@ COUNT(*)
|
|||||||
select variable_value-@u from information_schema.global_status where variable_name='rocksdb_bloom_filter_prefix_checked';
|
select variable_value-@u from information_schema.global_status where variable_name='rocksdb_bloom_filter_prefix_checked';
|
||||||
variable_value-@u
|
variable_value-@u
|
||||||
2
|
2
|
||||||
|
SET @@global.rocksdb_update_cf_options = '';
|
||||||
set global rocksdb_compact_cf='cf1';
|
set global rocksdb_compact_cf='cf1';
|
||||||
select variable_value into @u from information_schema.global_status where variable_name='rocksdb_bloom_filter_prefix_checked';
|
select variable_value into @u from information_schema.global_status where variable_name='rocksdb_bloom_filter_prefix_checked';
|
||||||
SELECT COUNT(*) FROM t1 WHERE id1=1 AND id2=30 AND id3=30;
|
SELECT COUNT(*) FROM t1 WHERE id1=1 AND id2=30 AND id3=30;
|
||||||
|
@@ -16,7 +16,7 @@ SELECT * FROM t1;
|
|||||||
id value
|
id value
|
||||||
1 1
|
1 1
|
||||||
INSERT INTO t1 values (2, 2);
|
INSERT INTO t1 values (2, 2);
|
||||||
ERROR HY000: Can't execute updates when you started a transaction with START TRANSACTION WITH CONSISTENT [ROCKSDB] SNAPSHOT.
|
ERROR HY000: Can't execute updates when you started a transaction with START TRANSACTION WITH CONSISTENT|SHARED|EXISTING [ROCKSDB] SNAPSHOT.
|
||||||
ROLLBACK;
|
ROLLBACK;
|
||||||
SELECT * FROM t1;
|
SELECT * FROM t1;
|
||||||
id value
|
id value
|
||||||
|
@@ -866,6 +866,7 @@ rocksdb_block_restart_interval 16
|
|||||||
rocksdb_block_size 4096
|
rocksdb_block_size 4096
|
||||||
rocksdb_block_size_deviation 10
|
rocksdb_block_size_deviation 10
|
||||||
rocksdb_bulk_load OFF
|
rocksdb_bulk_load OFF
|
||||||
|
rocksdb_bulk_load_allow_sk OFF
|
||||||
rocksdb_bulk_load_allow_unsorted OFF
|
rocksdb_bulk_load_allow_unsorted OFF
|
||||||
rocksdb_bulk_load_size 1000
|
rocksdb_bulk_load_size 1000
|
||||||
rocksdb_bytes_per_sync 0
|
rocksdb_bytes_per_sync 0
|
||||||
@@ -873,6 +874,7 @@ rocksdb_cache_index_and_filter_blocks ON
|
|||||||
rocksdb_checksums_pct 100
|
rocksdb_checksums_pct 100
|
||||||
rocksdb_collect_sst_properties ON
|
rocksdb_collect_sst_properties ON
|
||||||
rocksdb_commit_in_the_middle OFF
|
rocksdb_commit_in_the_middle OFF
|
||||||
|
rocksdb_commit_time_batch_for_recovery OFF
|
||||||
rocksdb_compact_cf
|
rocksdb_compact_cf
|
||||||
rocksdb_compaction_readahead_size 0
|
rocksdb_compaction_readahead_size 0
|
||||||
rocksdb_compaction_sequential_deletes 0
|
rocksdb_compaction_sequential_deletes 0
|
||||||
@@ -886,6 +888,7 @@ rocksdb_datadir ./.rocksdb
|
|||||||
rocksdb_db_write_buffer_size 0
|
rocksdb_db_write_buffer_size 0
|
||||||
rocksdb_deadlock_detect OFF
|
rocksdb_deadlock_detect OFF
|
||||||
rocksdb_deadlock_detect_depth 50
|
rocksdb_deadlock_detect_depth 50
|
||||||
|
rocksdb_debug_manual_compaction_delay 0
|
||||||
rocksdb_debug_optimizer_no_zero_cardinality ON
|
rocksdb_debug_optimizer_no_zero_cardinality ON
|
||||||
rocksdb_debug_ttl_ignore_pk OFF
|
rocksdb_debug_ttl_ignore_pk OFF
|
||||||
rocksdb_debug_ttl_read_filter_ts 0
|
rocksdb_debug_ttl_read_filter_ts 0
|
||||||
@@ -901,6 +904,7 @@ rocksdb_enable_ttl ON
|
|||||||
rocksdb_enable_ttl_read_filtering ON
|
rocksdb_enable_ttl_read_filtering ON
|
||||||
rocksdb_enable_write_thread_adaptive_yield OFF
|
rocksdb_enable_write_thread_adaptive_yield OFF
|
||||||
rocksdb_error_if_exists OFF
|
rocksdb_error_if_exists OFF
|
||||||
|
rocksdb_error_on_suboptimal_collation ON
|
||||||
rocksdb_flush_log_at_trx_commit 1
|
rocksdb_flush_log_at_trx_commit 1
|
||||||
rocksdb_force_compute_memtable_stats ON
|
rocksdb_force_compute_memtable_stats ON
|
||||||
rocksdb_force_compute_memtable_stats_cachetime 0
|
rocksdb_force_compute_memtable_stats_cachetime 0
|
||||||
@@ -919,12 +923,14 @@ rocksdb_lock_scanned_rows OFF
|
|||||||
rocksdb_lock_wait_timeout 1
|
rocksdb_lock_wait_timeout 1
|
||||||
rocksdb_log_file_time_to_roll 0
|
rocksdb_log_file_time_to_roll 0
|
||||||
rocksdb_manifest_preallocation_size 4194304
|
rocksdb_manifest_preallocation_size 4194304
|
||||||
|
rocksdb_manual_compaction_threads 0
|
||||||
rocksdb_manual_wal_flush ON
|
rocksdb_manual_wal_flush ON
|
||||||
rocksdb_master_skip_tx_api OFF
|
rocksdb_master_skip_tx_api OFF
|
||||||
rocksdb_max_background_jobs 2
|
rocksdb_max_background_jobs 2
|
||||||
rocksdb_max_latest_deadlocks 5
|
rocksdb_max_latest_deadlocks 5
|
||||||
rocksdb_max_log_file_size 0
|
rocksdb_max_log_file_size 0
|
||||||
rocksdb_max_manifest_file_size 18446744073709551615
|
rocksdb_max_manifest_file_size 1073741824
|
||||||
|
rocksdb_max_manual_compactions 10
|
||||||
rocksdb_max_row_locks 1048576
|
rocksdb_max_row_locks 1048576
|
||||||
rocksdb_max_subcompactions 1
|
rocksdb_max_subcompactions 1
|
||||||
rocksdb_max_total_wal_size 0
|
rocksdb_max_total_wal_size 0
|
||||||
@@ -953,6 +959,7 @@ rocksdb_skip_fill_cache OFF
|
|||||||
rocksdb_skip_unique_check_tables .*
|
rocksdb_skip_unique_check_tables .*
|
||||||
rocksdb_sst_mgr_rate_bytes_per_sec 0
|
rocksdb_sst_mgr_rate_bytes_per_sec 0
|
||||||
rocksdb_stats_dump_period_sec 600
|
rocksdb_stats_dump_period_sec 600
|
||||||
|
rocksdb_stats_recalc_rate 0
|
||||||
rocksdb_store_row_debug_checksums OFF
|
rocksdb_store_row_debug_checksums OFF
|
||||||
rocksdb_strict_collation_check OFF
|
rocksdb_strict_collation_check OFF
|
||||||
rocksdb_strict_collation_exceptions
|
rocksdb_strict_collation_exceptions
|
||||||
@@ -979,6 +986,7 @@ rocksdb_whole_key_filtering ON
|
|||||||
rocksdb_write_batch_max_bytes 0
|
rocksdb_write_batch_max_bytes 0
|
||||||
rocksdb_write_disable_wal OFF
|
rocksdb_write_disable_wal OFF
|
||||||
rocksdb_write_ignore_missing_column_families OFF
|
rocksdb_write_ignore_missing_column_families OFF
|
||||||
|
rocksdb_write_policy write_committed
|
||||||
create table t47 (pk int primary key, col1 varchar(12)) engine=rocksdb;
|
create table t47 (pk int primary key, col1 varchar(12)) engine=rocksdb;
|
||||||
insert into t47 values (1, 'row1');
|
insert into t47 values (1, 'row1');
|
||||||
insert into t47 values (2, 'row2');
|
insert into t47 values (2, 'row2');
|
||||||
@@ -1332,7 +1340,7 @@ insert into t1 select (@a:=@a+1), 1234 from information_schema.session_variables
|
|||||||
set @tmp1= @@rocksdb_max_row_locks;
|
set @tmp1= @@rocksdb_max_row_locks;
|
||||||
set rocksdb_max_row_locks= 20;
|
set rocksdb_max_row_locks= 20;
|
||||||
update t1 set a=a+10;
|
update t1 set a=a+10;
|
||||||
ERROR HY000: Status error 10 received from RocksDB: Operation aborted: Failed to acquire lock due to max_num_locks limit
|
ERROR HY000: Got error 10 'Operation aborted: Failed to acquire lock due to max_num_locks limit' from ROCKSDB
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
#
|
#
|
||||||
# Test AUTO_INCREMENT behavior problem,
|
# Test AUTO_INCREMENT behavior problem,
|
||||||
@@ -1476,6 +1484,8 @@ rocksdb_block_cache_index_miss #
|
|||||||
rocksdb_block_cache_miss #
|
rocksdb_block_cache_miss #
|
||||||
rocksdb_block_cachecompressed_hit #
|
rocksdb_block_cachecompressed_hit #
|
||||||
rocksdb_block_cachecompressed_miss #
|
rocksdb_block_cachecompressed_miss #
|
||||||
|
rocksdb_bloom_filter_full_positive #
|
||||||
|
rocksdb_bloom_filter_full_true_positive #
|
||||||
rocksdb_bloom_filter_prefix_checked #
|
rocksdb_bloom_filter_prefix_checked #
|
||||||
rocksdb_bloom_filter_prefix_useful #
|
rocksdb_bloom_filter_prefix_useful #
|
||||||
rocksdb_bloom_filter_useful #
|
rocksdb_bloom_filter_useful #
|
||||||
@@ -1494,6 +1504,8 @@ rocksdb_getupdatessince_calls #
|
|||||||
rocksdb_git_date #
|
rocksdb_git_date #
|
||||||
rocksdb_git_hash #
|
rocksdb_git_hash #
|
||||||
rocksdb_iter_bytes_read #
|
rocksdb_iter_bytes_read #
|
||||||
|
rocksdb_manual_compactions_processed #
|
||||||
|
rocksdb_manual_compactions_running #
|
||||||
rocksdb_memtable_hit #
|
rocksdb_memtable_hit #
|
||||||
rocksdb_memtable_miss #
|
rocksdb_memtable_miss #
|
||||||
rocksdb_no_file_closes #
|
rocksdb_no_file_closes #
|
||||||
@@ -1585,6 +1597,8 @@ ROCKSDB_BLOCK_CACHE_INDEX_MISS
|
|||||||
ROCKSDB_BLOCK_CACHE_MISS
|
ROCKSDB_BLOCK_CACHE_MISS
|
||||||
ROCKSDB_BLOCK_CACHECOMPRESSED_HIT
|
ROCKSDB_BLOCK_CACHECOMPRESSED_HIT
|
||||||
ROCKSDB_BLOCK_CACHECOMPRESSED_MISS
|
ROCKSDB_BLOCK_CACHECOMPRESSED_MISS
|
||||||
|
ROCKSDB_BLOOM_FILTER_FULL_POSITIVE
|
||||||
|
ROCKSDB_BLOOM_FILTER_FULL_TRUE_POSITIVE
|
||||||
ROCKSDB_BLOOM_FILTER_PREFIX_CHECKED
|
ROCKSDB_BLOOM_FILTER_PREFIX_CHECKED
|
||||||
ROCKSDB_BLOOM_FILTER_PREFIX_USEFUL
|
ROCKSDB_BLOOM_FILTER_PREFIX_USEFUL
|
||||||
ROCKSDB_BLOOM_FILTER_USEFUL
|
ROCKSDB_BLOOM_FILTER_USEFUL
|
||||||
@@ -1603,6 +1617,8 @@ ROCKSDB_GETUPDATESSINCE_CALLS
|
|||||||
ROCKSDB_GIT_DATE
|
ROCKSDB_GIT_DATE
|
||||||
ROCKSDB_GIT_HASH
|
ROCKSDB_GIT_HASH
|
||||||
ROCKSDB_ITER_BYTES_READ
|
ROCKSDB_ITER_BYTES_READ
|
||||||
|
ROCKSDB_MANUAL_COMPACTIONS_PROCESSED
|
||||||
|
ROCKSDB_MANUAL_COMPACTIONS_RUNNING
|
||||||
ROCKSDB_MEMTABLE_HIT
|
ROCKSDB_MEMTABLE_HIT
|
||||||
ROCKSDB_MEMTABLE_MISS
|
ROCKSDB_MEMTABLE_MISS
|
||||||
ROCKSDB_NO_FILE_CLOSES
|
ROCKSDB_NO_FILE_CLOSES
|
||||||
@@ -1696,6 +1712,8 @@ ROCKSDB_BLOCK_CACHE_INDEX_MISS
|
|||||||
ROCKSDB_BLOCK_CACHE_MISS
|
ROCKSDB_BLOCK_CACHE_MISS
|
||||||
ROCKSDB_BLOCK_CACHECOMPRESSED_HIT
|
ROCKSDB_BLOCK_CACHECOMPRESSED_HIT
|
||||||
ROCKSDB_BLOCK_CACHECOMPRESSED_MISS
|
ROCKSDB_BLOCK_CACHECOMPRESSED_MISS
|
||||||
|
ROCKSDB_BLOOM_FILTER_FULL_POSITIVE
|
||||||
|
ROCKSDB_BLOOM_FILTER_FULL_TRUE_POSITIVE
|
||||||
ROCKSDB_BLOOM_FILTER_PREFIX_CHECKED
|
ROCKSDB_BLOOM_FILTER_PREFIX_CHECKED
|
||||||
ROCKSDB_BLOOM_FILTER_PREFIX_USEFUL
|
ROCKSDB_BLOOM_FILTER_PREFIX_USEFUL
|
||||||
ROCKSDB_BLOOM_FILTER_USEFUL
|
ROCKSDB_BLOOM_FILTER_USEFUL
|
||||||
@@ -1714,6 +1732,8 @@ ROCKSDB_GETUPDATESSINCE_CALLS
|
|||||||
ROCKSDB_GIT_DATE
|
ROCKSDB_GIT_DATE
|
||||||
ROCKSDB_GIT_HASH
|
ROCKSDB_GIT_HASH
|
||||||
ROCKSDB_ITER_BYTES_READ
|
ROCKSDB_ITER_BYTES_READ
|
||||||
|
ROCKSDB_MANUAL_COMPACTIONS_PROCESSED
|
||||||
|
ROCKSDB_MANUAL_COMPACTIONS_RUNNING
|
||||||
ROCKSDB_MEMTABLE_HIT
|
ROCKSDB_MEMTABLE_HIT
|
||||||
ROCKSDB_MEMTABLE_MISS
|
ROCKSDB_MEMTABLE_MISS
|
||||||
ROCKSDB_NO_FILE_CLOSES
|
ROCKSDB_NO_FILE_CLOSES
|
||||||
|
@@ -52,9 +52,9 @@ create table t4 (pk int primary key, a int, b int, key(a), key(b)) engine=rocksd
|
|||||||
check table t4;
|
check table t4;
|
||||||
Table Op Msg_type Msg_text
|
Table Op Msg_type Msg_text
|
||||||
test.t4 check status OK
|
test.t4 check status OK
|
||||||
10000 index entries had around 500 checksums
|
4000 index entries had around 200 checksums
|
||||||
10000 index entries had around 500 checksums
|
4000 index entries had around 200 checksums
|
||||||
Around 500 table records had checksums
|
Around 200 table records had checksums
|
||||||
set session rocksdb_checksums_pct=100;
|
set session rocksdb_checksums_pct=100;
|
||||||
#
|
#
|
||||||
# Ok, table t2 has all rows with checksums. Simulate a few checksum mismatches.
|
# Ok, table t2 has all rows with checksums. Simulate a few checksum mismatches.
|
||||||
|
@@ -40,15 +40,27 @@ i
|
|||||||
3
|
3
|
||||||
insert into t values (4), (1);
|
insert into t values (4), (1);
|
||||||
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
|
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
|
||||||
# Statement should be rolled back
|
# Transaction should be rolled back
|
||||||
select * from t;
|
select * from t;
|
||||||
i
|
i
|
||||||
3
|
|
||||||
rollback;
|
rollback;
|
||||||
i
|
i
|
||||||
rollback;
|
rollback;
|
||||||
i
|
i
|
||||||
rollback;
|
rollback;
|
||||||
|
create table t1 (id int primary key, value int, value2 int, index(value)) engine=rocksdb;
|
||||||
|
insert into t1 values (1,1,1),(2,2,2),(3,3,3),(4,4,4),(5,5,5),(6,6,6),(7,7,7),(8,8,8),(9,9,9),(10,10,10);
|
||||||
|
begin;
|
||||||
|
update t1 force index (value) set value2=value2+1 where value=3;
|
||||||
|
begin;
|
||||||
|
update t1 force index (value) set value2=value2+1 where value=2;
|
||||||
|
update t1 force index (value) set value2=value2+1 where value=4;
|
||||||
|
update t1 force index (value) set value2=value2+1 where value=4;
|
||||||
|
update t1 force index (value) set value2=value2+1 where value=3;
|
||||||
|
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
|
||||||
|
rollback;
|
||||||
|
rollback;
|
||||||
|
drop table t1;
|
||||||
set global rocksdb_lock_wait_timeout = @prior_rocksdb_lock_wait_timeout;
|
set global rocksdb_lock_wait_timeout = @prior_rocksdb_lock_wait_timeout;
|
||||||
set global rocksdb_deadlock_detect = @prior_rocksdb_deadlock_detect;
|
set global rocksdb_deadlock_detect = @prior_rocksdb_deadlock_detect;
|
||||||
drop table t,r1,r2;
|
drop table t,r1,r2;
|
||||||
|
@@ -40,15 +40,27 @@ i
|
|||||||
3
|
3
|
||||||
insert into t values (4), (1);
|
insert into t values (4), (1);
|
||||||
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
|
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
|
||||||
# Statement should be rolled back
|
# Transaction should be rolled back
|
||||||
select * from t;
|
select * from t;
|
||||||
i
|
i
|
||||||
3
|
|
||||||
rollback;
|
rollback;
|
||||||
i
|
i
|
||||||
rollback;
|
rollback;
|
||||||
i
|
i
|
||||||
rollback;
|
rollback;
|
||||||
|
create table t1 (id int primary key, value int, value2 int, index(value)) engine=rocksdb;
|
||||||
|
insert into t1 values (1,1,1),(2,2,2),(3,3,3),(4,4,4),(5,5,5),(6,6,6),(7,7,7),(8,8,8),(9,9,9),(10,10,10);
|
||||||
|
begin;
|
||||||
|
update t1 force index (value) set value2=value2+1 where value=3;
|
||||||
|
begin;
|
||||||
|
update t1 force index (value) set value2=value2+1 where value=2;
|
||||||
|
update t1 force index (value) set value2=value2+1 where value=4;
|
||||||
|
update t1 force index (value) set value2=value2+1 where value=4;
|
||||||
|
update t1 force index (value) set value2=value2+1 where value=3;
|
||||||
|
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
|
||||||
|
rollback;
|
||||||
|
rollback;
|
||||||
|
drop table t1;
|
||||||
set global rocksdb_lock_wait_timeout = @prior_rocksdb_lock_wait_timeout;
|
set global rocksdb_lock_wait_timeout = @prior_rocksdb_lock_wait_timeout;
|
||||||
set global rocksdb_deadlock_detect = @prior_rocksdb_deadlock_detect;
|
set global rocksdb_deadlock_detect = @prior_rocksdb_deadlock_detect;
|
||||||
drop table t,r1,r2;
|
drop table t,r1,r2;
|
||||||
|
@@ -0,0 +1,11 @@
|
|||||||
|
create table t1 (a int primary key, b int unique key) engine = rocksdb;
|
||||||
|
insert into t1 values(1, 1);
|
||||||
|
begin;
|
||||||
|
update t1 set b = 2 where b = 1;
|
||||||
|
insert into t1 values(2, 1);
|
||||||
|
ERROR HY000: Lock wait timeout exceeded; try restarting transaction: Timeout on index: test.t1.b
|
||||||
|
rollback;
|
||||||
|
select * from t1;
|
||||||
|
a b
|
||||||
|
1 1
|
||||||
|
drop table t1;
|
@@ -136,6 +136,7 @@ __system__ TABLE_FACTORY::FLUSH_BLOCK_POLICY_FACTORY #
|
|||||||
__system__ TABLE_FACTORY::CACHE_INDEX_AND_FILTER_BLOCKS #
|
__system__ TABLE_FACTORY::CACHE_INDEX_AND_FILTER_BLOCKS #
|
||||||
__system__ TABLE_FACTORY::CACHE_INDEX_AND_FILTER_BLOCKS_WITH_HIGH_PRIORITY #
|
__system__ TABLE_FACTORY::CACHE_INDEX_AND_FILTER_BLOCKS_WITH_HIGH_PRIORITY #
|
||||||
__system__ TABLE_FACTORY::PIN_L0_FILTER_AND_INDEX_BLOCKS_IN_CACHE #
|
__system__ TABLE_FACTORY::PIN_L0_FILTER_AND_INDEX_BLOCKS_IN_CACHE #
|
||||||
|
__system__ TABLE_FACTORY::PIN_TOP_LEVEL_INDEX_AND_FILTER #
|
||||||
__system__ TABLE_FACTORY::INDEX_TYPE #
|
__system__ TABLE_FACTORY::INDEX_TYPE #
|
||||||
__system__ TABLE_FACTORY::HASH_INDEX_ALLOW_COLLISION #
|
__system__ TABLE_FACTORY::HASH_INDEX_ALLOW_COLLISION #
|
||||||
__system__ TABLE_FACTORY::CHECKSUM #
|
__system__ TABLE_FACTORY::CHECKSUM #
|
||||||
@@ -162,6 +163,7 @@ __system__ TABLE_FACTORY::VERIFY_COMPRESSION #
|
|||||||
__system__ TABLE_FACTORY::READ_AMP_BYTES_PER_BIT #
|
__system__ TABLE_FACTORY::READ_AMP_BYTES_PER_BIT #
|
||||||
__system__ TABLE_FACTORY::FORMAT_VERSION #
|
__system__ TABLE_FACTORY::FORMAT_VERSION #
|
||||||
__system__ TABLE_FACTORY::ENABLE_INDEX_COMPRESSION #
|
__system__ TABLE_FACTORY::ENABLE_INDEX_COMPRESSION #
|
||||||
|
__system__ TABLE_FACTORY::BLOCK_ALIGN #
|
||||||
cf_t1 COMPARATOR #
|
cf_t1 COMPARATOR #
|
||||||
cf_t1 MERGE_OPERATOR #
|
cf_t1 MERGE_OPERATOR #
|
||||||
cf_t1 COMPACTION_FILTER #
|
cf_t1 COMPACTION_FILTER #
|
||||||
@@ -207,6 +209,7 @@ cf_t1 TABLE_FACTORY::FLUSH_BLOCK_POLICY_FACTORY #
|
|||||||
cf_t1 TABLE_FACTORY::CACHE_INDEX_AND_FILTER_BLOCKS #
|
cf_t1 TABLE_FACTORY::CACHE_INDEX_AND_FILTER_BLOCKS #
|
||||||
cf_t1 TABLE_FACTORY::CACHE_INDEX_AND_FILTER_BLOCKS_WITH_HIGH_PRIORITY #
|
cf_t1 TABLE_FACTORY::CACHE_INDEX_AND_FILTER_BLOCKS_WITH_HIGH_PRIORITY #
|
||||||
cf_t1 TABLE_FACTORY::PIN_L0_FILTER_AND_INDEX_BLOCKS_IN_CACHE #
|
cf_t1 TABLE_FACTORY::PIN_L0_FILTER_AND_INDEX_BLOCKS_IN_CACHE #
|
||||||
|
cf_t1 TABLE_FACTORY::PIN_TOP_LEVEL_INDEX_AND_FILTER #
|
||||||
cf_t1 TABLE_FACTORY::INDEX_TYPE #
|
cf_t1 TABLE_FACTORY::INDEX_TYPE #
|
||||||
cf_t1 TABLE_FACTORY::HASH_INDEX_ALLOW_COLLISION #
|
cf_t1 TABLE_FACTORY::HASH_INDEX_ALLOW_COLLISION #
|
||||||
cf_t1 TABLE_FACTORY::CHECKSUM #
|
cf_t1 TABLE_FACTORY::CHECKSUM #
|
||||||
@@ -233,6 +236,7 @@ cf_t1 TABLE_FACTORY::VERIFY_COMPRESSION #
|
|||||||
cf_t1 TABLE_FACTORY::READ_AMP_BYTES_PER_BIT #
|
cf_t1 TABLE_FACTORY::READ_AMP_BYTES_PER_BIT #
|
||||||
cf_t1 TABLE_FACTORY::FORMAT_VERSION #
|
cf_t1 TABLE_FACTORY::FORMAT_VERSION #
|
||||||
cf_t1 TABLE_FACTORY::ENABLE_INDEX_COMPRESSION #
|
cf_t1 TABLE_FACTORY::ENABLE_INDEX_COMPRESSION #
|
||||||
|
cf_t1 TABLE_FACTORY::BLOCK_ALIGN #
|
||||||
default COMPARATOR #
|
default COMPARATOR #
|
||||||
default MERGE_OPERATOR #
|
default MERGE_OPERATOR #
|
||||||
default COMPACTION_FILTER #
|
default COMPACTION_FILTER #
|
||||||
@@ -278,6 +282,7 @@ default TABLE_FACTORY::FLUSH_BLOCK_POLICY_FACTORY #
|
|||||||
default TABLE_FACTORY::CACHE_INDEX_AND_FILTER_BLOCKS #
|
default TABLE_FACTORY::CACHE_INDEX_AND_FILTER_BLOCKS #
|
||||||
default TABLE_FACTORY::CACHE_INDEX_AND_FILTER_BLOCKS_WITH_HIGH_PRIORITY #
|
default TABLE_FACTORY::CACHE_INDEX_AND_FILTER_BLOCKS_WITH_HIGH_PRIORITY #
|
||||||
default TABLE_FACTORY::PIN_L0_FILTER_AND_INDEX_BLOCKS_IN_CACHE #
|
default TABLE_FACTORY::PIN_L0_FILTER_AND_INDEX_BLOCKS_IN_CACHE #
|
||||||
|
default TABLE_FACTORY::PIN_TOP_LEVEL_INDEX_AND_FILTER #
|
||||||
default TABLE_FACTORY::INDEX_TYPE #
|
default TABLE_FACTORY::INDEX_TYPE #
|
||||||
default TABLE_FACTORY::HASH_INDEX_ALLOW_COLLISION #
|
default TABLE_FACTORY::HASH_INDEX_ALLOW_COLLISION #
|
||||||
default TABLE_FACTORY::CHECKSUM #
|
default TABLE_FACTORY::CHECKSUM #
|
||||||
@@ -304,6 +309,7 @@ default TABLE_FACTORY::VERIFY_COMPRESSION #
|
|||||||
default TABLE_FACTORY::READ_AMP_BYTES_PER_BIT #
|
default TABLE_FACTORY::READ_AMP_BYTES_PER_BIT #
|
||||||
default TABLE_FACTORY::FORMAT_VERSION #
|
default TABLE_FACTORY::FORMAT_VERSION #
|
||||||
default TABLE_FACTORY::ENABLE_INDEX_COMPRESSION #
|
default TABLE_FACTORY::ENABLE_INDEX_COMPRESSION #
|
||||||
|
default TABLE_FACTORY::BLOCK_ALIGN #
|
||||||
rev:cf_t2 COMPARATOR #
|
rev:cf_t2 COMPARATOR #
|
||||||
rev:cf_t2 MERGE_OPERATOR #
|
rev:cf_t2 MERGE_OPERATOR #
|
||||||
rev:cf_t2 COMPACTION_FILTER #
|
rev:cf_t2 COMPACTION_FILTER #
|
||||||
@@ -349,6 +355,7 @@ rev:cf_t2 TABLE_FACTORY::FLUSH_BLOCK_POLICY_FACTORY #
|
|||||||
rev:cf_t2 TABLE_FACTORY::CACHE_INDEX_AND_FILTER_BLOCKS #
|
rev:cf_t2 TABLE_FACTORY::CACHE_INDEX_AND_FILTER_BLOCKS #
|
||||||
rev:cf_t2 TABLE_FACTORY::CACHE_INDEX_AND_FILTER_BLOCKS_WITH_HIGH_PRIORITY #
|
rev:cf_t2 TABLE_FACTORY::CACHE_INDEX_AND_FILTER_BLOCKS_WITH_HIGH_PRIORITY #
|
||||||
rev:cf_t2 TABLE_FACTORY::PIN_L0_FILTER_AND_INDEX_BLOCKS_IN_CACHE #
|
rev:cf_t2 TABLE_FACTORY::PIN_L0_FILTER_AND_INDEX_BLOCKS_IN_CACHE #
|
||||||
|
rev:cf_t2 TABLE_FACTORY::PIN_TOP_LEVEL_INDEX_AND_FILTER #
|
||||||
rev:cf_t2 TABLE_FACTORY::INDEX_TYPE #
|
rev:cf_t2 TABLE_FACTORY::INDEX_TYPE #
|
||||||
rev:cf_t2 TABLE_FACTORY::HASH_INDEX_ALLOW_COLLISION #
|
rev:cf_t2 TABLE_FACTORY::HASH_INDEX_ALLOW_COLLISION #
|
||||||
rev:cf_t2 TABLE_FACTORY::CHECKSUM #
|
rev:cf_t2 TABLE_FACTORY::CHECKSUM #
|
||||||
@@ -375,6 +382,7 @@ rev:cf_t2 TABLE_FACTORY::VERIFY_COMPRESSION #
|
|||||||
rev:cf_t2 TABLE_FACTORY::READ_AMP_BYTES_PER_BIT #
|
rev:cf_t2 TABLE_FACTORY::READ_AMP_BYTES_PER_BIT #
|
||||||
rev:cf_t2 TABLE_FACTORY::FORMAT_VERSION #
|
rev:cf_t2 TABLE_FACTORY::FORMAT_VERSION #
|
||||||
rev:cf_t2 TABLE_FACTORY::ENABLE_INDEX_COMPRESSION #
|
rev:cf_t2 TABLE_FACTORY::ENABLE_INDEX_COMPRESSION #
|
||||||
|
rev:cf_t2 TABLE_FACTORY::BLOCK_ALIGN #
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
DROP TABLE t2;
|
DROP TABLE t2;
|
||||||
DROP TABLE t3;
|
DROP TABLE t3;
|
||||||
@@ -419,4 +427,49 @@ END OF ROCKSDB TRANSACTION MONITOR OUTPUT
|
|||||||
=========================================
|
=========================================
|
||||||
|
|
||||||
ROLLBACK;
|
ROLLBACK;
|
||||||
|
START TRANSACTION WITH SHARED ROCKSDB SNAPSHOT;
|
||||||
|
File Position Gtid_executed Snapshot_ID
|
||||||
|
0 1
|
||||||
|
SHOW ENGINE rocksdb STATUS;
|
||||||
|
Type Name Status
|
||||||
|
STATISTICS # #
|
||||||
|
DBSTATS # #
|
||||||
|
CF_COMPACTION # #
|
||||||
|
CF_COMPACTION # #
|
||||||
|
CF_COMPACTION # #
|
||||||
|
CF_COMPACTION # #
|
||||||
|
MEMORY_STATS # #
|
||||||
|
BG_THREADS # #
|
||||||
|
BG_THREADS # #
|
||||||
|
EXPLICIT_SNAPSHOTS # #
|
||||||
|
ROLLBACK;
|
||||||
|
CREATE EXPLICIT rocksdb SNAPSHOT;
|
||||||
|
File Position Gtid_executed Snapshot_ID
|
||||||
|
0 2
|
||||||
|
SHOW ENGINE rocksdb STATUS;
|
||||||
|
Type Name Status
|
||||||
|
STATISTICS # #
|
||||||
|
DBSTATS # #
|
||||||
|
CF_COMPACTION # #
|
||||||
|
CF_COMPACTION # #
|
||||||
|
CF_COMPACTION # #
|
||||||
|
CF_COMPACTION # #
|
||||||
|
MEMORY_STATS # #
|
||||||
|
BG_THREADS # #
|
||||||
|
BG_THREADS # #
|
||||||
|
EXPLICIT_SNAPSHOTS # #
|
||||||
|
RELEASE EXPLICIT rocksdb SNAPSHOT;
|
||||||
|
File Position Gtid_executed Snapshot_ID
|
||||||
|
0 2
|
||||||
|
SHOW ENGINE rocksdb STATUS;
|
||||||
|
Type Name Status
|
||||||
|
STATISTICS # #
|
||||||
|
DBSTATS # #
|
||||||
|
CF_COMPACTION # #
|
||||||
|
CF_COMPACTION # #
|
||||||
|
CF_COMPACTION # #
|
||||||
|
CF_COMPACTION # #
|
||||||
|
MEMORY_STATS # #
|
||||||
|
BG_THREADS # #
|
||||||
|
BG_THREADS # #
|
||||||
SET GLOBAL rocksdb_max_background_jobs= @save.rocksdb_max_background_jobs;
|
SET GLOBAL rocksdb_max_background_jobs= @save.rocksdb_max_background_jobs;
|
||||||
|
@@ -934,3 +934,44 @@ value
|
|||||||
3
|
3
|
||||||
rollback;
|
rollback;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
#
|
||||||
|
# #802: MyRocks: Statement rollback doesnt work correctly for nested statements
|
||||||
|
#
|
||||||
|
create table t1 (a varchar(100)) engine=rocksdb;
|
||||||
|
create table t2(a int) engine=rocksdb;
|
||||||
|
insert into t2 values (1), (2);
|
||||||
|
create table t3(a varchar(100)) engine=rocksdb;
|
||||||
|
create function func() returns varchar(100) deterministic
|
||||||
|
begin
|
||||||
|
insert into t3 values ('func-called');
|
||||||
|
set @a= (select a from t2);
|
||||||
|
return 'func-returned';
|
||||||
|
end;//
|
||||||
|
begin;
|
||||||
|
insert into t1 values (func());
|
||||||
|
ERROR 21000: Subquery returns more than 1 row
|
||||||
|
select * from t1;
|
||||||
|
a
|
||||||
|
# The following must not produce 'func-called':
|
||||||
|
select * from t3;
|
||||||
|
a
|
||||||
|
rollback;
|
||||||
|
drop function func;
|
||||||
|
drop table t1,t2,t3;
|
||||||
|
#
|
||||||
|
# MDEV-16710: Slave SQL: Could not execute Update_rows_v1 event with RocksDB and triggers
|
||||||
|
# Issue#857: MyRocks: Incorrect behavior when multiple statements fail inside a transaction
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=RocksDB;
|
||||||
|
INSERT INTO t1 VALUES (1);
|
||||||
|
CREATE TABLE t2 (b INT PRIMARY KEY) ENGINE=RocksDB;
|
||||||
|
CREATE TRIGGER tr AFTER INSERT ON t2 FOR EACH ROW INSERT INTO non_existing_table VALUES (NULL);
|
||||||
|
BEGIN;
|
||||||
|
DELETE FROM t1;
|
||||||
|
INSERT INTO t2 VALUES (1);
|
||||||
|
INSERT INTO t2 VALUES (2);
|
||||||
|
# Must return empty result:
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a
|
||||||
|
COMMIT;
|
||||||
|
drop table t1,t2;
|
||||||
|
@@ -5,7 +5,7 @@ Note #### Storing MySQL user name or password information in the master info rep
|
|||||||
[connection master]
|
[connection master]
|
||||||
DROP TABLE IF EXISTS t1;
|
DROP TABLE IF EXISTS t1;
|
||||||
include/stop_slave.inc
|
include/stop_slave.inc
|
||||||
create table t1 (a int) engine=rocksdb;
|
create table t1 (a int, b int, primary key (a), unique key (b)) engine=rocksdb;
|
||||||
show variables like 'rpl_skip_tx_api';
|
show variables like 'rpl_skip_tx_api';
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
rpl_skip_tx_api ON
|
rpl_skip_tx_api ON
|
||||||
|
@@ -111,3 +111,11 @@ a b pk
|
|||||||
55 NULL 11
|
55 NULL 11
|
||||||
10050 NULL 12
|
10050 NULL 12
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (a INT, b CHAR(8), UNIQUE INDEX(a)) ENGINE=RocksDB;
|
||||||
|
INSERT INTO t1 (a,b) VALUES (1,'foo'),(2,'bar');
|
||||||
|
UPDATE t1 SET a=a+100;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a b
|
||||||
|
101 foo
|
||||||
|
102 bar
|
||||||
|
DROP TABLE t1;
|
||||||
|
18
storage/rocksdb/mysql-test/rocksdb/r/use_direct_reads.result
Normal file
18
storage/rocksdb/mysql-test/rocksdb/r/use_direct_reads.result
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
Checking direct reads
|
||||||
|
CREATE TABLE t1 (pk INT PRIMARY KEY DEFAULT '0', a INT(11), b CHAR(8)) ENGINE=rocksdb;
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`pk` int(11) NOT NULL DEFAULT '0',
|
||||||
|
`a` int(11) DEFAULT NULL,
|
||||||
|
`b` char(8) DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`pk`)
|
||||||
|
) ENGINE=ROCKSDB DEFAULT CHARSET=latin1
|
||||||
|
INSERT INTO t1 VALUES (1, 1,'a');
|
||||||
|
INSERT INTO t1 (a,b) VALUES (2,'b');
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
SELECT a,b FROM t1;
|
||||||
|
a b
|
||||||
|
1 a
|
||||||
|
2 b
|
||||||
|
DROP TABLE t1;
|
@@ -2,8 +2,5 @@ DROP TABLE IF EXISTS t1, t2;
|
|||||||
CREATE TABLE t1 (pk int primary key) ENGINE=ROCKSDB;
|
CREATE TABLE t1 (pk int primary key) ENGINE=ROCKSDB;
|
||||||
CREATE TABLE t2 (pk int primary key) ENGINE=ROCKSDB PARTITION BY KEY(pk) PARTITIONS 4;
|
CREATE TABLE t2 (pk int primary key) ENGINE=ROCKSDB PARTITION BY KEY(pk) PARTITIONS 4;
|
||||||
Expect errors that we are missing two .frm files
|
Expect errors that we are missing two .frm files
|
||||||
RocksDB: Schema mismatch - Table test.t1 is registered in RocksDB but does not have a .frm file
|
|
||||||
RocksDB: Schema mismatch - Table test.t2 is registered in RocksDB but does not have a .frm file
|
|
||||||
Expect an error that we have an extra .frm file
|
Expect an error that we have an extra .frm file
|
||||||
RocksDB: Schema mismatch - A .frm file exists for table test.t1_dummy, but that table is not registered in RocksDB
|
|
||||||
DROP TABLE t1, t2;
|
DROP TABLE t1, t2;
|
||||||
|
@@ -383,6 +383,24 @@ if ($end_max_index_id <= $start_max_index_id) {
|
|||||||
SHOW CREATE TABLE t1;
|
SHOW CREATE TABLE t1;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
# Cardinality checks for indexes statistics
|
||||||
|
SET @prior_rocksdb_table_stats_sampling_pct = @@rocksdb_table_stats_sampling_pct;
|
||||||
|
set global rocksdb_table_stats_sampling_pct = 100;
|
||||||
|
|
||||||
|
CREATE TABLE t1 (a INT, b INT, PRIMARY KEY ka(a)) ENGINE=RocksDB;
|
||||||
|
|
||||||
|
INSERT INTO t1 (a, b) VALUES (1, 10);
|
||||||
|
INSERT INTO t1 (a, b) VALUES (2, 10);
|
||||||
|
INSERT INTO t1 (a, b) VALUES (3, 20);
|
||||||
|
INSERT INTO t1 (a, b) VALUES (4, 20);
|
||||||
|
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
analyze table t1;
|
||||||
|
|
||||||
|
SHOW INDEX in t1;
|
||||||
|
|
||||||
|
ALTER TABLE t1 ADD INDEX kb(b), ALGORITHM=INPLACE;
|
||||||
|
SHOW INDEX in t1;
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
SET global rocksdb_table_stats_sampling_pct = @prior_rocksdb_table_stats_sampling_pct;
|
||||||
|
@@ -1,5 +1,6 @@
|
|||||||
--source include/have_rocksdb.inc
|
--source include/have_rocksdb.inc
|
||||||
--source include/have_debug.inc
|
--source include/have_debug.inc
|
||||||
|
--source include/not_valgrind.inc
|
||||||
|
|
||||||
--disable_warnings
|
--disable_warnings
|
||||||
drop table if exists t1;
|
drop table if exists t1;
|
||||||
|
@@ -63,7 +63,7 @@ ALTER TABLE t1 ADD INDEX kb(b), ALGORITHM=INPLACE;
|
|||||||
--disable_warnings
|
--disable_warnings
|
||||||
# now do same index using copy algorithm
|
# now do same index using copy algorithm
|
||||||
# hitting max row locks (1M)
|
# hitting max row locks (1M)
|
||||||
--error ER_RDB_STATUS_GENERAL
|
--error ER_GET_ERRMSG
|
||||||
ALTER TABLE t1 ADD INDEX kb_copy(b), ALGORITHM=COPY;
|
ALTER TABLE t1 ADD INDEX kb_copy(b), ALGORITHM=COPY;
|
||||||
set session rocksdb_bulk_load=1;
|
set session rocksdb_bulk_load=1;
|
||||||
ALTER TABLE t1 ADD INDEX kb_copy(b), ALGORITHM=COPY;
|
ALTER TABLE t1 ADD INDEX kb_copy(b), ALGORITHM=COPY;
|
||||||
|
@@ -96,3 +96,31 @@ DELETE FROM t1 WHERE a = 35 AND b = 'foo';
|
|||||||
--sorted_result
|
--sorted_result
|
||||||
SELECT * FROM t1;
|
SELECT * FROM t1;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Issue #834/MDEV-15304 ALTER TABLE table_with_hidden_pk causes Can't
|
||||||
|
--echo # write; duplicate key in table error and/or crash
|
||||||
|
--echo #
|
||||||
|
CREATE TABLE t1 (a INT, KEY(a)) ENGINE=RocksDB;
|
||||||
|
INSERT INTO t1 VALUES (1),(1+1);
|
||||||
|
create table t2 (a int);
|
||||||
|
insert into t2 values (10),(20),(30);
|
||||||
|
|
||||||
|
BEGIN;
|
||||||
|
select * from t2;
|
||||||
|
|
||||||
|
connect (con1,localhost,root,,);
|
||||||
|
connection con1;
|
||||||
|
alter table t1 force;
|
||||||
|
|
||||||
|
connection default;
|
||||||
|
select * from t1;
|
||||||
|
|
||||||
|
connection con1;
|
||||||
|
insert into t1 values (100);
|
||||||
|
select * from t1;
|
||||||
|
|
||||||
|
disconnect con1;
|
||||||
|
connection default;
|
||||||
|
rollback;
|
||||||
|
drop table t1,t2;
|
||||||
|
@@ -1,6 +1,7 @@
|
|||||||
--source include/have_rocksdb.inc
|
--source include/have_rocksdb.inc
|
||||||
--source include/have_debug.inc
|
--source include/have_debug.inc
|
||||||
--source include/have_log_bin.inc
|
--source include/have_log_bin.inc
|
||||||
|
--source include/not_valgrind.inc
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # Testing upgrading from server without merges for auto_increment
|
--echo # Testing upgrading from server without merges for auto_increment
|
||||||
@@ -64,8 +65,8 @@ commit;
|
|||||||
--exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
--exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||||
--source include/wait_until_connected_again.inc
|
--source include/wait_until_connected_again.inc
|
||||||
--disable_reconnect
|
--disable_reconnect
|
||||||
select table_schema, table_name, auto_increment from information_schema.tables where table_name = 't';
|
select max(i) into @row_max from t;
|
||||||
select max(i) from t;
|
select table_schema, table_name, auto_increment > @row_max from information_schema.tables where table_name = 't';
|
||||||
|
|
||||||
--echo # After engine prepare
|
--echo # After engine prepare
|
||||||
begin;
|
begin;
|
||||||
@@ -80,8 +81,8 @@ commit;
|
|||||||
--exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
--exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||||
--source include/wait_until_connected_again.inc
|
--source include/wait_until_connected_again.inc
|
||||||
--disable_reconnect
|
--disable_reconnect
|
||||||
select table_schema, table_name, auto_increment from information_schema.tables where table_name = 't';
|
select max(i) into @row_max from t;
|
||||||
select max(i) from t;
|
select table_schema, table_name, auto_increment > @row_max from information_schema.tables where table_name = 't';
|
||||||
|
|
||||||
--echo # After binlog
|
--echo # After binlog
|
||||||
begin;
|
begin;
|
||||||
@@ -96,8 +97,8 @@ commit;
|
|||||||
--exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
--exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||||
--source include/wait_until_connected_again.inc
|
--source include/wait_until_connected_again.inc
|
||||||
--disable_reconnect
|
--disable_reconnect
|
||||||
select table_schema, table_name, auto_increment from information_schema.tables where table_name = 't';
|
select max(i) into @row_max from t;
|
||||||
select max(i) from t;
|
select table_schema, table_name, auto_increment > @row_max from information_schema.tables where table_name = 't';
|
||||||
|
|
||||||
--echo # After everything
|
--echo # After everything
|
||||||
begin;
|
begin;
|
||||||
@@ -112,7 +113,7 @@ commit;
|
|||||||
--exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
--exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||||
--source include/wait_until_connected_again.inc
|
--source include/wait_until_connected_again.inc
|
||||||
--disable_reconnect
|
--disable_reconnect
|
||||||
select table_schema, table_name, auto_increment from information_schema.tables where table_name = 't';
|
select max(i) into @row_max from t;
|
||||||
select max(i) from t;
|
select table_schema, table_name, auto_increment > @row_max from information_schema.tables where table_name = 't';
|
||||||
|
|
||||||
drop table t;
|
drop table t;
|
||||||
|
@@ -101,3 +101,26 @@ SHOW CREATE TABLE t1;
|
|||||||
INSERT INTO t1 VALUES (NULL, 'c');
|
INSERT INTO t1 VALUES (NULL, 'c');
|
||||||
SELECT * FROM t1;
|
SELECT * FROM t1;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
--echo #----------------------------------
|
||||||
|
--echo # Issue #792 Crash in autoincrement
|
||||||
|
--echo #----------------------------------
|
||||||
|
|
||||||
|
CREATE TABLE t1(C1 DOUBLE AUTO_INCREMENT KEY,C2 CHAR) ENGINE=ROCKSDB;
|
||||||
|
INSERT INTO t1 VALUES(2177,0);
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
CREATE TABLE t0(c0 BLOB) ENGINE=ROCKSDB;
|
||||||
|
INSERT INTO t0 VALUES(0);
|
||||||
|
ALTER TABLE t0 AUTO_INCREMENT=0;
|
||||||
|
DROP TABLE t0;
|
||||||
|
|
||||||
|
--echo #----------------------------------
|
||||||
|
--echo # Issue #869 Crash in autoincrement
|
||||||
|
--echo #----------------------------------
|
||||||
|
|
||||||
|
CREATE TABLE t1 (pk INT AUTO_INCREMENT, a INT, PRIMARY KEY(pk)) ENGINE=RocksDB;
|
||||||
|
INSERT INTO t1 (a) VALUES (1);
|
||||||
|
UPDATE t1 SET pk = 3;
|
||||||
|
ALTER TABLE t1 AUTO_INCREMENT 2;
|
||||||
|
DROP TABLE t1;
|
||||||
|
@@ -0,0 +1,3 @@
|
|||||||
|
--rocksdb_default_cf_options=write_buffer_size=256k;block_based_table_factory={filter_policy=bloomfilter:10:false;whole_key_filtering=0;}
|
||||||
|
--rocksdb_override_cf_options=rev:bf5_1={prefix_extractor=capped:4};
|
||||||
|
|
61
storage/rocksdb/mysql-test/rocksdb/t/bloomfilter5.test
Normal file
61
storage/rocksdb/mysql-test/rocksdb/t/bloomfilter5.test
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Issue #809: Wrong query result with bloom filters
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
create table t1 (
|
||||||
|
id1 bigint not null,
|
||||||
|
id2 bigint not null,
|
||||||
|
id3 varchar(100) not null,
|
||||||
|
id4 int not null,
|
||||||
|
id5 int not null,
|
||||||
|
value bigint,
|
||||||
|
value2 varchar(100),
|
||||||
|
primary key (id1, id2, id3, id4) COMMENT 'rev:bf5_1'
|
||||||
|
) engine=ROCKSDB;
|
||||||
|
|
||||||
|
|
||||||
|
create table t2(a int);
|
||||||
|
insert into t2 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
|
||||||
|
|
||||||
|
create table t3(seq int);
|
||||||
|
insert into t3
|
||||||
|
select
|
||||||
|
1+ A.a + B.a* 10 + C.a * 100 + D.a * 1000
|
||||||
|
from t2 A, t2 B, t2 C, t2 D;
|
||||||
|
|
||||||
|
insert t1
|
||||||
|
select
|
||||||
|
(seq+9) div 10, (seq+4) div 5, (seq+4) div 5, seq, seq, 1000, "aaabbbccc"
|
||||||
|
from t3;
|
||||||
|
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
|
||||||
|
--echo # Full table scan
|
||||||
|
explain
|
||||||
|
select * from t1 limit 10;
|
||||||
|
select * from t1 limit 10;
|
||||||
|
|
||||||
|
--echo # An index scan starting from the end of the table:
|
||||||
|
explain
|
||||||
|
select * from t1 order by id1 desc,id2 desc, id3 desc, id4 desc limit 1;
|
||||||
|
select * from t1 order by id1 desc,id2 desc, id3 desc, id4 desc limit 1;
|
||||||
|
|
||||||
|
# A testcase for an assertion that the fix is removing
|
||||||
|
# The only requirement for the used column family is that it is reverse-ordered
|
||||||
|
create table t4 (
|
||||||
|
pk int unsigned not null primary key,
|
||||||
|
kp1 int unsigned not null,
|
||||||
|
kp2 int unsigned not null,
|
||||||
|
col1 int unsigned,
|
||||||
|
key(kp1, kp2) comment 'rev:bf5_2'
|
||||||
|
) engine=rocksdb;
|
||||||
|
|
||||||
|
insert into t4 values (1, 0xFFFF, 0xFFF, 12345);
|
||||||
|
|
||||||
|
--echo # This must not fail an assert:
|
||||||
|
select * from t4 force index(kp1) where kp1=0xFFFFFFFF and kp2<=0xFFFFFFFF order by kp2 desc;
|
||||||
|
|
||||||
|
drop table t1,t2,t3,t4;
|
||||||
|
|
||||||
|
|
@@ -0,0 +1,2 @@
|
|||||||
|
--rocksdb_default_cf_options=write_buffer_size=16k;block_based_table_factory={filter_policy=bloomfilter:10:false;whole_key_filtering=0;};prefix_extractor=capped:12
|
||||||
|
--rocksdb_override_cf_options=cf2={optimize_filters_for_hits=true}
|
@@ -0,0 +1,35 @@
|
|||||||
|
--source include/have_rocksdb.inc
|
||||||
|
|
||||||
|
create table r1 (id bigint primary key, value bigint) engine=rocksdb;
|
||||||
|
create table r2 (id bigint, value bigint, primary key (id) comment 'cf2') engine=rocksdb;
|
||||||
|
set session rocksdb_bulk_load=1;
|
||||||
|
--disable_query_log
|
||||||
|
let $t = 1;
|
||||||
|
let $i = 1;
|
||||||
|
while ($t <= 2) {
|
||||||
|
while ($i <= 1000) {
|
||||||
|
let $insert = INSERT INTO r$t VALUES($i, $i);
|
||||||
|
#skipping a row
|
||||||
|
if ($i != 100) {
|
||||||
|
eval $insert;
|
||||||
|
}
|
||||||
|
inc $i;
|
||||||
|
}
|
||||||
|
inc $t;
|
||||||
|
}
|
||||||
|
--enable_query_log
|
||||||
|
set session rocksdb_bulk_load=0;
|
||||||
|
|
||||||
|
# bloom filter should be useful on insert (calling GetForUpdate)
|
||||||
|
select variable_value into @h from information_schema.global_status where variable_name='rocksdb_block_cache_filter_hit';
|
||||||
|
insert into r1 values (100, 100);
|
||||||
|
select variable_value-@h from information_schema.global_status where variable_name='rocksdb_block_cache_filter_hit';
|
||||||
|
|
||||||
|
# cf2 has no bloo filter in the bottommost level
|
||||||
|
select variable_value into @h from information_schema.global_status where variable_name='rocksdb_block_cache_filter_hit';
|
||||||
|
insert into r2 values (100, 100);
|
||||||
|
select variable_value-@h from information_schema.global_status where variable_name='rocksdb_block_cache_filter_hit';
|
||||||
|
|
||||||
|
DROP TABLE r1, r2;
|
||||||
|
|
||||||
|
|
119
storage/rocksdb/mysql-test/rocksdb/t/bulk_load_sk.test
Normal file
119
storage/rocksdb/mysql-test/rocksdb/t/bulk_load_sk.test
Normal file
@@ -0,0 +1,119 @@
|
|||||||
|
--source include/have_rocksdb.inc
|
||||||
|
|
||||||
|
SET rocksdb_bulk_load_size=15;
|
||||||
|
|
||||||
|
CREATE TABLE t4 (a INT, b INT, c INT,
|
||||||
|
PRIMARY KEY (a),
|
||||||
|
KEY (b),
|
||||||
|
KEY (c) COMMENT "rev:cf") ENGINE=ROCKSDB;
|
||||||
|
CREATE TABLE t3 (a INT, b INT, c INT,
|
||||||
|
PRIMARY KEY (a),
|
||||||
|
KEY (b),
|
||||||
|
KEY (c) COMMENT "rev:cf") ENGINE=ROCKSDB;
|
||||||
|
CREATE TABLE t2 (a INT, b INT, c INT,
|
||||||
|
PRIMARY KEY (a),
|
||||||
|
KEY (b),
|
||||||
|
KEY (c) COMMENT "rev:cf") ENGINE=ROCKSDB;
|
||||||
|
CREATE TABLE t1 (a INT, b INT, c INT,
|
||||||
|
PRIMARY KEY (a),
|
||||||
|
KEY (b),
|
||||||
|
KEY (c) COMMENT "rev:cf") ENGINE=ROCKSDB;
|
||||||
|
|
||||||
|
### Setup the control table ###
|
||||||
|
--disable_query_log
|
||||||
|
let $sign = 1;
|
||||||
|
let $max = 10;
|
||||||
|
let $i = 1;
|
||||||
|
while ($i <= $max) {
|
||||||
|
let $a = 1 + $sign * $i;
|
||||||
|
let $b = 1 - $sign * $i;
|
||||||
|
let $sign = -$sign;
|
||||||
|
let $insert = INSERT INTO t3 VALUES ($a, $b, $b);
|
||||||
|
eval $insert;
|
||||||
|
inc $i;
|
||||||
|
}
|
||||||
|
--enable_query_log
|
||||||
|
|
||||||
|
### Bulk load PK only ###
|
||||||
|
SET rocksdb_bulk_load=1;
|
||||||
|
INSERT INTO t1 SELECT * FROM t3 FORCE INDEX (PRIMARY) ORDER BY a;
|
||||||
|
SELECT count(*) FROM t1 FORCE INDEX (PRIMARY);
|
||||||
|
SELECT count(*) FROM t1 FORCE INDEX (b);
|
||||||
|
SELECT count(*) FROM t1 FORCE INDEX (c);
|
||||||
|
SET rocksdb_bulk_load=0;
|
||||||
|
SELECT * FROM t1 FORCE INDEX (PRIMARY);
|
||||||
|
SELECT b FROM t1 FORCE INDEX (b);
|
||||||
|
SELECT c FROM t1 FORCE INDEX (c);
|
||||||
|
--echo Checksums should match
|
||||||
|
CHECKSUM TABLE t3;
|
||||||
|
CHECKSUM TABLE t1;
|
||||||
|
|
||||||
|
### Bulk load PK and SK but require PK order ###
|
||||||
|
SET rocksdb_bulk_load_allow_sk=1;
|
||||||
|
SET rocksdb_bulk_load=1;
|
||||||
|
INSERT INTO t4 SELECT * FROM t3 FORCE INDEX (PRIMARY) ORDER BY a;
|
||||||
|
SELECT count(*) FROM t4 FORCE INDEX (PRIMARY);
|
||||||
|
SELECT count(*) FROM t4 FORCE INDEX (b);
|
||||||
|
SELECT count(*) FROM t4 FORCE INDEX (c);
|
||||||
|
SET rocksdb_bulk_load=0;
|
||||||
|
SELECT * FROM t4 FORCE INDEX (PRIMARY);
|
||||||
|
SELECT b FROM t4 FORCE INDEX (b);
|
||||||
|
SELECT c FROM t4 FORCE INDEX (c);
|
||||||
|
--echo Checksums should match
|
||||||
|
CHECKSUM TABLE t3;
|
||||||
|
CHECKSUM TABLE t4;
|
||||||
|
|
||||||
|
### Bulk load both PK and SK in random order for all ###
|
||||||
|
SET rocksdb_bulk_load_allow_unsorted=1;
|
||||||
|
SET rocksdb_bulk_load_allow_sk=1;
|
||||||
|
SET rocksdb_bulk_load=1;
|
||||||
|
|
||||||
|
INSERT INTO t2 SELECT * FROM t3 WHERE b >= 0 ORDER BY b;
|
||||||
|
INSERT INTO t2 SELECT * FROM t3 WHERE b < 0 ORDER BY b;
|
||||||
|
SELECT count(*) FROM t2 FORCE INDEX (PRIMARY);
|
||||||
|
SELECT count(*) FROM t2 FORCE INDEX (b);
|
||||||
|
SELECT count(*) FROM t2 FORCE INDEX (c);
|
||||||
|
|
||||||
|
--disable_query_log
|
||||||
|
let $sign = 1;
|
||||||
|
let $max = 20;
|
||||||
|
let $i = 11;
|
||||||
|
while ($i <= $max) {
|
||||||
|
let $a = 1 + $sign * $i;
|
||||||
|
let $b = 1 - $sign * $i;
|
||||||
|
let $sign = -$sign;
|
||||||
|
let $insert = INSERT INTO t2 VALUES ($a, $b, $b);
|
||||||
|
eval $insert;
|
||||||
|
inc $i;
|
||||||
|
}
|
||||||
|
--enable_query_log
|
||||||
|
SELECT count(*) FROM t2 FORCE INDEX (PRIMARY);
|
||||||
|
SELECT count(*) FROM t2 FORCE INDEX (b);
|
||||||
|
SELECT count(*) FROM t2 FORCE INDEX (c);
|
||||||
|
SET rocksdb_bulk_load=0;
|
||||||
|
|
||||||
|
--disable_query_log
|
||||||
|
let $sign = 1;
|
||||||
|
let $max = 20;
|
||||||
|
let $i = 11;
|
||||||
|
while ($i <= $max) {
|
||||||
|
let $a = 1 + $sign * $i;
|
||||||
|
let $b = 1 - $sign * $i;
|
||||||
|
let $sign = -$sign;
|
||||||
|
let $insert = INSERT INTO t3 VALUES ($a, $b, $b);
|
||||||
|
eval $insert;
|
||||||
|
inc $i;
|
||||||
|
}
|
||||||
|
--enable_query_log
|
||||||
|
|
||||||
|
SELECT * FROM t2 FORCE INDEX (PRIMARY);
|
||||||
|
SELECT b FROM t2 FORCE INDEX (b);
|
||||||
|
SELECT c FROM t2 FORCE INDEX (c);
|
||||||
|
--echo Checksums should match
|
||||||
|
CHECKSUM TABLE t3;
|
||||||
|
CHECKSUM TABLE t2;
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
DROP TABLE t2;
|
||||||
|
DROP TABLE t3;
|
||||||
|
DROP TABLE t4;
|
@@ -79,5 +79,24 @@ SELECT table_name, table_rows FROM information_schema.tables WHERE table_schema
|
|||||||
show index in t1;
|
show index in t1;
|
||||||
SELECT table_name, table_rows FROM information_schema.tables WHERE table_schema = DATABASE();
|
SELECT table_name, table_rows FROM information_schema.tables WHERE table_schema = DATABASE();
|
||||||
|
|
||||||
drop table t1;
|
CREATE TABLE t2 (a INT, b INT, c INT, d INT, e INT, f INT, g INT,
|
||||||
|
PRIMARY KEY (a), KEY (c, b, a, d, e, f, g))
|
||||||
|
ENGINE=ROCKSDB;
|
||||||
|
--disable_query_log
|
||||||
|
let $i=0;
|
||||||
|
while ($i<100)
|
||||||
|
{
|
||||||
|
inc $i;
|
||||||
|
eval insert t2 values($i, $i div 10, 1, 1, 1, 1, 1);
|
||||||
|
}
|
||||||
|
--enable_query_log
|
||||||
|
|
||||||
|
# Cardinality of key c should be 1 for c, 10 for b, 100 for a and the other fields.
|
||||||
|
SET GLOBAL rocksdb_force_flush_memtable_now = 1;
|
||||||
|
ANALYZE TABLE t2;
|
||||||
|
--echo cardinality of the columns after 'a' must be equal to the cardinality of column 'a'
|
||||||
|
SELECT CARDINALITY INTO @c FROM information_schema.statistics WHERE TABLE_NAME='t2' AND INDEX_NAME='c' AND COLUMN_NAME='a';
|
||||||
|
SELECT COLUMN_NAME, CARDINALITY = @c FROM information_schema.statistics WHERE TABLE_NAME='t2' AND INDEX_NAME='c' AND SEQ_IN_INDEX > 3;
|
||||||
|
|
||||||
|
drop table t1, t2;
|
||||||
|
|
||||||
|
@@ -4,7 +4,8 @@ let $restart_file= $MYSQLTEST_VARDIR/tmp/mysqld.1.expect;
|
|||||||
let $error_log= $MYSQLTEST_VARDIR/log/my_restart.err;
|
let $error_log= $MYSQLTEST_VARDIR/log/my_restart.err;
|
||||||
select variable_name, variable_value from information_schema.global_variables where variable_name="rocksdb_ignore_unknown_options";
|
select variable_name, variable_value from information_schema.global_variables where variable_name="rocksdb_ignore_unknown_options";
|
||||||
|
|
||||||
--exec find $MYSQLD_DATADIR/.rocksdb/OPTIONS* | sort -n | tail -1 | xargs -0 -I {} -t sh -c "echo hello=world>>{}"
|
--exec find $MYSQLD_DATADIR/.rocksdb/OPTIONS* | sort -t- -k 2 -n | tail -1 | xargs -0 -I {} -t sh -c "sed -i 's/rocksdb_version=.*/rocksdb_version=99.9.9/' {}"
|
||||||
|
--exec find $MYSQLD_DATADIR/.rocksdb/OPTIONS* | sort -t- -k 2 -n | tail -1 | xargs -0 -I {} -t sh -c "echo hello=world>>{}"
|
||||||
|
|
||||||
--exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
--exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||||
--shutdown_server 10
|
--shutdown_server 10
|
||||||
@@ -17,5 +18,4 @@ let SEARCH_PATTERN= RocksDB: Compatibility check against existing database optio
|
|||||||
--enable_reconnect
|
--enable_reconnect
|
||||||
--exec echo "restart" > $restart_file
|
--exec echo "restart" > $restart_file
|
||||||
--source include/wait_until_connected_again.inc
|
--source include/wait_until_connected_again.inc
|
||||||
--exec find $MYSQLD_DATADIR/.rocksdb/OPTIONS* | sort -n | tail -1 | xargs -0 -I {} -t sh -c "sed -i '/hello=world/d' {}"
|
|
||||||
select variable_name, variable_value from information_schema.global_variables where variable_name="rocksdb_ignore_unknown_options";
|
select variable_name, variable_value from information_schema.global_variables where variable_name="rocksdb_ignore_unknown_options";
|
||||||
|
@@ -1,14 +1,13 @@
|
|||||||
--source include/have_rocksdb.inc
|
--source include/have_rocksdb.inc
|
||||||
--source include/have_fullregex.inc
|
--source include/have_fullregex.inc
|
||||||
|
|
||||||
SET @start_global_value = @@global.ROCKSDB_STRICT_COLLATION_EXCEPTIONS;
|
call mtr.add_suppression("Invalid pattern");
|
||||||
|
|
||||||
--disable_warnings
|
|
||||||
DROP TABLE IF EXISTS t1;
|
|
||||||
--enable_warnings
|
|
||||||
|
|
||||||
# ci non-indexed column is allowed
|
# ci non-indexed column is allowed
|
||||||
CREATE TABLE t1 (id INT primary key, value varchar(50), value2 varbinary(50), value3 text) engine=rocksdb charset utf8;
|
CREATE TABLE t1 (id INT primary key, value varchar(50), value2 varbinary(50), value3 text) engine=rocksdb charset utf8;
|
||||||
|
# ci indexed column is not allowed
|
||||||
|
--error ER_UNSUPPORTED_COLLATION
|
||||||
|
ALTER TABLE t1 ADD INDEX (value);
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
# ci indexed column is not allowed
|
# ci indexed column is not allowed
|
||||||
@@ -28,6 +27,8 @@ DROP TABLE t1;
|
|||||||
|
|
||||||
# cs latin1_bin is allowed
|
# cs latin1_bin is allowed
|
||||||
CREATE TABLE t1 (id varchar(20), value varchar(50), value2 varchar(50), value3 text, primary key (id), index(value, value2)) engine=rocksdb charset latin1 collate latin1_bin;
|
CREATE TABLE t1 (id varchar(20), value varchar(50), value2 varchar(50), value3 text, primary key (id), index(value, value2)) engine=rocksdb charset latin1 collate latin1_bin;
|
||||||
|
# THIS SHOULD FAIL BUT IT DOES NOT
|
||||||
|
ALTER TABLE t1 collate=latin1_general_ci;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
# cs utf8_bin is allowed
|
# cs utf8_bin is allowed
|
||||||
@@ -153,9 +154,8 @@ DROP TABLE t2;
|
|||||||
|
|
||||||
|
|
||||||
# test invalid regex (missing end bracket)
|
# test invalid regex (missing end bracket)
|
||||||
--exec echo "" >$MYSQLTEST_VARDIR/log/mysqld.1.err
|
|
||||||
SET GLOBAL rocksdb_strict_collation_exceptions="[a-b";
|
SET GLOBAL rocksdb_strict_collation_exceptions="[a-b";
|
||||||
--exec grep "Invalid pattern" $MYSQLTEST_VARDIR/log/mysqld.1.err | cut -d] -f2
|
--exec grep "Invalid pattern" $MYSQLTEST_VARDIR/log/mysqld.1.err | cut -d] -f2 | tail -n 1
|
||||||
--error ER_UNSUPPORTED_COLLATION
|
--error ER_UNSUPPORTED_COLLATION
|
||||||
CREATE TABLE a (id INT PRIMARY KEY, value varchar(50), index(value)) engine=rocksdb charset utf8;
|
CREATE TABLE a (id INT PRIMARY KEY, value varchar(50), index(value)) engine=rocksdb charset utf8;
|
||||||
SET GLOBAL rocksdb_strict_collation_exceptions="[a-b]";
|
SET GLOBAL rocksdb_strict_collation_exceptions="[a-b]";
|
||||||
@@ -166,9 +166,8 @@ CREATE TABLE c (id INT PRIMARY KEY, value varchar(50), index(value)) engine=rock
|
|||||||
DROP TABLE a, b;
|
DROP TABLE a, b;
|
||||||
|
|
||||||
# test invalid regex (trailing escape)
|
# test invalid regex (trailing escape)
|
||||||
--exec echo "" >$MYSQLTEST_VARDIR/log/mysqld.1.err
|
|
||||||
SET GLOBAL rocksdb_strict_collation_exceptions="abc\\";
|
SET GLOBAL rocksdb_strict_collation_exceptions="abc\\";
|
||||||
--exec grep "Invalid pattern" $MYSQLTEST_VARDIR/log/mysqld.1.err | cut -d] -f2
|
--exec grep "Invalid pattern" $MYSQLTEST_VARDIR/log/mysqld.1.err | cut -d] -f2 | tail -n 1
|
||||||
--error ER_UNSUPPORTED_COLLATION
|
--error ER_UNSUPPORTED_COLLATION
|
||||||
CREATE TABLE abc (id INT PRIMARY KEY, value varchar(50), index(value)) engine=rocksdb charset utf8;
|
CREATE TABLE abc (id INT PRIMARY KEY, value varchar(50), index(value)) engine=rocksdb charset utf8;
|
||||||
SET GLOBAL rocksdb_strict_collation_exceptions="abc";
|
SET GLOBAL rocksdb_strict_collation_exceptions="abc";
|
||||||
@@ -180,5 +179,28 @@ DROP TABLE abc;
|
|||||||
# test bad regex (null caused a crash) - Issue 493
|
# test bad regex (null caused a crash) - Issue 493
|
||||||
SET GLOBAL rocksdb_strict_collation_exceptions=null;
|
SET GLOBAL rocksdb_strict_collation_exceptions=null;
|
||||||
|
|
||||||
|
# test for warnings instead of errors
|
||||||
|
--let $_mysqld_option=--rocksdb_error_on_suboptimal_collation=0
|
||||||
|
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
|
||||||
|
--source include/restart_mysqld_with_option.inc
|
||||||
|
|
||||||
|
SET GLOBAL rocksdb_strict_collation_check=1;
|
||||||
|
|
||||||
|
# ci indexed column is not optimal, should emit a warning
|
||||||
|
CREATE TABLE t1 (id INT primary key, value varchar(50), value2 varbinary(50), value3 text, index(value)) engine=rocksdb charset utf8;
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
# ci non-indexed column is allowed
|
||||||
|
CREATE TABLE t1 (id INT primary key, value varchar(50), value2 varbinary(50), value3 text) engine=rocksdb charset utf8;
|
||||||
|
# ci indexed column is not allowed, should emit a warning
|
||||||
|
ALTER TABLE t1 ADD INDEX (value);
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
# cs latin1_bin is allowed
|
||||||
|
CREATE TABLE t1 (id varchar(20), value varchar(50), value2 varchar(50), value3 text, primary key (id), index(value, value2)) engine=rocksdb charset latin1 collate latin1_bin;
|
||||||
|
# THIS SHOULD WARN BUT IT DOES NOT
|
||||||
|
ALTER TABLE t1 collate=latin1_general_ci;
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
# cleanup
|
# cleanup
|
||||||
SET GLOBAL rocksdb_strict_collation_exceptions=@start_global_value;
|
--source include/restart_mysqld.inc
|
||||||
|
4
storage/rocksdb/mysql-test/rocksdb/t/com_rpc_tx.cnf
Normal file
4
storage/rocksdb/mysql-test/rocksdb/t/com_rpc_tx.cnf
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
!include suite/rpl/my.cnf
|
||||||
|
|
||||||
|
[mysqld.1]
|
||||||
|
binlog_format=row
|
87
storage/rocksdb/mysql-test/rocksdb/t/com_rpc_tx.test
Normal file
87
storage/rocksdb/mysql-test/rocksdb/t/com_rpc_tx.test
Normal file
@@ -0,0 +1,87 @@
|
|||||||
|
--source "include/have_rocksdb.inc"
|
||||||
|
--source "include/have_log_bin.inc"
|
||||||
|
|
||||||
|
#
|
||||||
|
# This test was created because 2pc transactions were failing in MyRocks
|
||||||
|
# when using detached sessions. The test generates two separate transactions
|
||||||
|
# in two detached sessions and then attempts to commit them as simultaneously
|
||||||
|
# as possible. This consistently showed the problem but succeeds after the
|
||||||
|
# fix was put in place.
|
||||||
|
|
||||||
|
CREATE DATABASE db_rpc;
|
||||||
|
USE db_rpc;
|
||||||
|
CREATE TABLE t1(pk INT PRIMARY KEY) ENGINE=rocksdb;
|
||||||
|
|
||||||
|
SET GLOBAL rocksdb_enable_2pc=1;
|
||||||
|
|
||||||
|
connect(con2,localhost,root,,);
|
||||||
|
connection default;
|
||||||
|
|
||||||
|
query_attrs_add rpc_role root;
|
||||||
|
query_attrs_add rpc_db db_rpc;
|
||||||
|
SET autocommit = 0;
|
||||||
|
let $rpc_id1 = get_rpc_id();
|
||||||
|
if ($rpc_id1 == "") {
|
||||||
|
echo "Fail: rpc_id not returned as expected";
|
||||||
|
}
|
||||||
|
|
||||||
|
SET autocommit = 0;
|
||||||
|
let $rpc_id2 = get_rpc_id();
|
||||||
|
if ($rpc_id2 == "") {
|
||||||
|
echo "Fail: rpc_id not returned as expected";
|
||||||
|
}
|
||||||
|
|
||||||
|
query_attrs_delete rpc_role;
|
||||||
|
query_attrs_delete rpc_db;
|
||||||
|
|
||||||
|
query_attrs_add rpc_id $rpc_id1;
|
||||||
|
BEGIN;
|
||||||
|
query_attrs_delete rpc_id;
|
||||||
|
|
||||||
|
query_attrs_add rpc_id $rpc_id2;
|
||||||
|
BEGIN;
|
||||||
|
query_attrs_delete rpc_id;
|
||||||
|
|
||||||
|
query_attrs_add rpc_id $rpc_id1;
|
||||||
|
SELECT * from t1;
|
||||||
|
query_attrs_delete rpc_id;
|
||||||
|
|
||||||
|
query_attrs_add rpc_id $rpc_id2;
|
||||||
|
SELECT * from t1;
|
||||||
|
query_attrs_delete rpc_id;
|
||||||
|
|
||||||
|
query_attrs_add rpc_id $rpc_id1;
|
||||||
|
INSERT INTO t1 VALUES(1);
|
||||||
|
query_attrs_delete rpc_id;
|
||||||
|
|
||||||
|
query_attrs_add rpc_id $rpc_id2;
|
||||||
|
INSERT INTO t1 VALUES(2);
|
||||||
|
query_attrs_delete rpc_id;
|
||||||
|
|
||||||
|
query_attrs_add rpc_id $rpc_id1;
|
||||||
|
send COMMIT;
|
||||||
|
|
||||||
|
connection con2;
|
||||||
|
query_attrs_add rpc_id $rpc_id2;
|
||||||
|
send COMMIT;
|
||||||
|
|
||||||
|
connection default;
|
||||||
|
reap;
|
||||||
|
query_attrs_delete rpc_id;
|
||||||
|
|
||||||
|
connection con2;
|
||||||
|
reap;
|
||||||
|
query_attrs_delete rpc_id;
|
||||||
|
|
||||||
|
connection default;
|
||||||
|
disconnect con2;
|
||||||
|
|
||||||
|
SELECT * from db_rpc.t1;
|
||||||
|
|
||||||
|
disable_query_log;
|
||||||
|
eval KILL $rpc_id1;
|
||||||
|
eval KILL $rpc_id2;
|
||||||
|
enable_query_log;
|
||||||
|
|
||||||
|
DROP DATABASE db_rpc;
|
||||||
|
|
@@ -0,0 +1 @@
|
|||||||
|
--block_create_no_primary_key=TRUE
|
@@ -0,0 +1,44 @@
|
|||||||
|
USE mysql;
|
||||||
|
CREATE TABLE mysql_table (a INT) ENGINE=ROCKSDB;
|
||||||
|
-- error ER_BLOCK_NO_PRIMARY_KEY
|
||||||
|
CREATE TABLE test.mysql_table (a INT) ENGINE=ROCKSDB;
|
||||||
|
USE test;
|
||||||
|
-- error ER_BLOCK_NO_PRIMARY_KEY
|
||||||
|
CREATE TABLE mysql_table (a INT) ENGINE=ROCKSDB;
|
||||||
|
-- error ER_BLOCK_NO_PRIMARY_KEY
|
||||||
|
CREATE TABLE IF NOT EXISTS mysql_table_2 (a INT) ENGINE=ROCKSDB;
|
||||||
|
-- error ER_BLOCK_NO_PRIMARY_KEY
|
||||||
|
CREATE TABLE mysql_table_no_cols ENGINE=ROCKSDB;
|
||||||
|
CREATE TABLE mysql.mysql_table_2 (a INT) ENGINE=ROCKSDB;
|
||||||
|
|
||||||
|
CREATE TABLE mysql_primkey (a INT PRIMARY KEY, b INT, c INT, d INT, INDEX (c)) ENGINE=ROCKSDB;
|
||||||
|
ALTER TABLE mysql_primkey DROP b, DROP a, ADD (f INT PRIMARY KEY);
|
||||||
|
-- error ER_BLOCK_NO_PRIMARY_KEY
|
||||||
|
ALTER TABLE mysql_primkey DROP PRIMARY KEY;
|
||||||
|
|
||||||
|
CREATE TABLE mysql_primkey2 (a INT PRIMARY KEY, b INT, c INT) ENGINE=ROCKSDB;
|
||||||
|
ALTER TABLE mysql_primkey2 DROP b;
|
||||||
|
ALTER TABLE mysql_primkey2 ADD (b INT);
|
||||||
|
-- error ER_BLOCK_NO_PRIMARY_KEY
|
||||||
|
ALTER TABLE mysql_primkey2 DROP c, DROP A;
|
||||||
|
|
||||||
|
CREATE TABLE mysql_primkey3 (a INT PRIMARY KEY, b INT, c INT, INDEX indexonb (b), INDEX indexonc (c)) ENGINE=ROCKSDB;
|
||||||
|
ALTER TABLE mysql_primkey3 DROP INDEX indexonb;
|
||||||
|
ALTER TABLE mysql_primkey3 DROP c;
|
||||||
|
ALTER TABLE mysql_primkey3 DROP PRIMARY KEY, ADD PRIMARY KEY(b);
|
||||||
|
|
||||||
|
CREATE TABLE mysql_primkey4(a INT, b INT, PRIMARY KEY(a), INDEX si (a, b)) ENGINE=ROCKSDB;
|
||||||
|
DROP INDEX si ON mysql_primkey4;
|
||||||
|
-- error ER_BLOCK_NO_PRIMARY_KEY
|
||||||
|
DROP INDEX `PRIMARY` ON mysql_primkey4;
|
||||||
|
|
||||||
|
ALTER TABLE mysql.mysql_table ADD PRIMARY KEY (a);
|
||||||
|
ALTER TABLE mysql.mysql_table DROP PRIMARY KEY;
|
||||||
|
|
||||||
|
DROP TABLE mysql_primkey;
|
||||||
|
DROP TABLE mysql_primkey2;
|
||||||
|
DROP TABLE mysql_primkey3;
|
||||||
|
DROP TABLE mysql_primkey4;
|
||||||
|
USE mysql;
|
||||||
|
DROP TABLE mysql_table;
|
||||||
|
DROP TABLE mysql_table_2;
|
@@ -21,29 +21,29 @@ let $con3= `SELECT CONNECTION_ID()`;
|
|||||||
connection default;
|
connection default;
|
||||||
eval create table t (i int primary key) engine=$engine;
|
eval create table t (i int primary key) engine=$engine;
|
||||||
insert into t values (1), (2), (3);
|
insert into t values (1), (2), (3);
|
||||||
--replace_regex /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}/TIMESTAMP/ /WAITING KEY: [0-9a-f]{16}/KEY/ /TRANSACTION ID: [0-9]*/TXN_ID/
|
--replace_regex /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}/TIMESTAMP/ /WAITING KEY: [0-9a-f]{16}/KEY/ /TRANSACTION ID: [0-9]*/TXN_ID/ /TIMESTAMP: [0-9]*/TSTAMP/
|
||||||
show engine rocksdb transaction status;
|
show engine rocksdb transaction status;
|
||||||
|
|
||||||
echo Deadlock #1;
|
echo Deadlock #1;
|
||||||
--source include/simple_deadlock.inc
|
--source include/simple_deadlock.inc
|
||||||
connection default;
|
connection default;
|
||||||
--replace_regex /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}/TIMESTAMP/ /WAITING KEY: [0-9a-f]{16}/KEY/ /TRANSACTION ID: [0-9]*/TXN_ID/
|
--replace_regex /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}/TIMESTAMP/ /WAITING KEY: [0-9a-f]{16}/KEY/ /TRANSACTION ID: [0-9]*/TXN_ID/ /TIMESTAMP: [0-9]*/TSTAMP/
|
||||||
show engine rocksdb transaction status;
|
show engine rocksdb transaction status;
|
||||||
|
|
||||||
echo Deadlock #2;
|
echo Deadlock #2;
|
||||||
--source include/simple_deadlock.inc
|
--source include/simple_deadlock.inc
|
||||||
connection default;
|
connection default;
|
||||||
--replace_regex /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}/TIMESTAMP/ /WAITING KEY: [0-9a-f]{16}/KEY/ /TRANSACTION ID: [0-9]*/TXN_ID/
|
--replace_regex /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}/TIMESTAMP/ /WAITING KEY: [0-9a-f]{16}/KEY/ /TRANSACTION ID: [0-9]*/TXN_ID/ /TIMESTAMP: [0-9]*/TSTAMP/
|
||||||
show engine rocksdb transaction status;
|
show engine rocksdb transaction status;
|
||||||
set global rocksdb_max_latest_deadlocks = 10;
|
set global rocksdb_max_latest_deadlocks = 10;
|
||||||
|
|
||||||
echo Deadlock #3;
|
echo Deadlock #3;
|
||||||
--source include/simple_deadlock.inc
|
--source include/simple_deadlock.inc
|
||||||
connection default;
|
connection default;
|
||||||
--replace_regex /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}/TIMESTAMP/ /WAITING KEY: [0-9a-f]{16}/KEY/ /TRANSACTION ID: [0-9]*/TXN_ID/
|
--replace_regex /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}/TIMESTAMP/ /WAITING KEY: [0-9a-f]{16}/KEY/ /TRANSACTION ID: [0-9]*/TXN_ID/ /TIMESTAMP: [0-9]*/TSTAMP/
|
||||||
show engine rocksdb transaction status;
|
show engine rocksdb transaction status;
|
||||||
set global rocksdb_max_latest_deadlocks = 1;
|
set global rocksdb_max_latest_deadlocks = 1;
|
||||||
--replace_regex /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}/TIMESTAMP/ /WAITING KEY: [0-9a-f]{16}/KEY/ /TRANSACTION ID: [0-9]*/TXN_ID/
|
--replace_regex /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}/TIMESTAMP/ /WAITING KEY: [0-9a-f]{16}/KEY/ /TRANSACTION ID: [0-9]*/TXN_ID/ /TIMESTAMP: [0-9]*/TSTAMP/
|
||||||
show engine rocksdb transaction status;
|
show engine rocksdb transaction status;
|
||||||
|
|
||||||
connection con3;
|
connection con3;
|
||||||
@@ -93,7 +93,7 @@ rollback;
|
|||||||
|
|
||||||
connection default;
|
connection default;
|
||||||
set global rocksdb_max_latest_deadlocks = 5;
|
set global rocksdb_max_latest_deadlocks = 5;
|
||||||
--replace_regex /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}/TIMESTAMP/ /WAITING KEY: [0-9a-f]{16}/KEY/ /TRANSACTION ID: [0-9]*/TXN_ID/
|
--replace_regex /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}/TIMESTAMP/ /WAITING KEY: [0-9a-f]{16}/KEY/ /TRANSACTION ID: [0-9]*/TXN_ID/ /TIMESTAMP: [0-9]*/TSTAMP/
|
||||||
show engine rocksdb transaction status;
|
show engine rocksdb transaction status;
|
||||||
|
|
||||||
echo Deadlock #5;
|
echo Deadlock #5;
|
||||||
@@ -135,9 +135,39 @@ connection con3;
|
|||||||
rollback;
|
rollback;
|
||||||
|
|
||||||
connection default;
|
connection default;
|
||||||
--replace_regex /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}/TIMESTAMP/ /WAITING KEY: [0-9a-f]{16}/KEY/ /TRANSACTION ID: [0-9]*/TXN_ID/
|
--replace_regex /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}/TIMESTAMP/ /WAITING KEY: [0-9a-f]{16}/KEY/ /TRANSACTION ID: [0-9]*/TXN_ID/ /TIMESTAMP: [0-9]*/TSTAMP/
|
||||||
show engine rocksdb transaction status;
|
show engine rocksdb transaction status;
|
||||||
|
|
||||||
|
echo Deadlock #6;
|
||||||
|
connection con1;
|
||||||
|
create table t1 (id int primary key, value int) engine=rocksdb;
|
||||||
|
insert into t1 values (1,1),(2,2),(3,3),(4,4),(5,5);
|
||||||
|
begin;
|
||||||
|
update t1 set value=value+100 where id=1;
|
||||||
|
update t1 set value=value+100 where id=2;
|
||||||
|
|
||||||
|
connection con2;
|
||||||
|
begin;
|
||||||
|
update t1 set value=value+200 where id=3;
|
||||||
|
|
||||||
|
connection con1;
|
||||||
|
send update t1 set value=value+100 where id=3;
|
||||||
|
|
||||||
|
connection con2;
|
||||||
|
let $wait_condition = select count(*) = 1 from information_schema.rocksdb_trx
|
||||||
|
where thread_id = $con1 and waiting_key != "";
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
--error ER_LOCK_DEADLOCK
|
||||||
|
update t1 set value=value+200 where id=1;
|
||||||
|
|
||||||
|
# con2 tx is automatically rolled back
|
||||||
|
connection con1;
|
||||||
|
reap;
|
||||||
|
select * from t1;
|
||||||
|
drop table t1;
|
||||||
|
|
||||||
|
connection default;
|
||||||
|
|
||||||
disconnect con1;
|
disconnect con1;
|
||||||
disconnect con2;
|
disconnect con2;
|
||||||
disconnect con3;
|
disconnect con3;
|
||||||
@@ -145,11 +175,11 @@ disconnect con3;
|
|||||||
set global rocksdb_lock_wait_timeout = @prior_lock_wait_timeout;
|
set global rocksdb_lock_wait_timeout = @prior_lock_wait_timeout;
|
||||||
set global rocksdb_deadlock_detect = @prior_deadlock_detect;
|
set global rocksdb_deadlock_detect = @prior_deadlock_detect;
|
||||||
drop table t;
|
drop table t;
|
||||||
--replace_regex /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}/TIMESTAMP/ /WAITING KEY: [0-9a-f]{16}/KEY/ /TRANSACTION ID: [0-9]*/TXN_ID/ /INDEX_ID: [0-9a-f]*/IDX_ID/
|
--replace_regex /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}/TIMESTAMP/ /WAITING KEY: [0-9a-f]{16}/KEY/ /TRANSACTION ID: [0-9]*/TXN_ID/ /INDEX_ID: [0-9a-f]*/IDX_ID/ /TIMESTAMP: [0-9]*/TSTAMP/
|
||||||
show engine rocksdb transaction status;
|
show engine rocksdb transaction status;
|
||||||
set global rocksdb_max_latest_deadlocks = 0;
|
set global rocksdb_max_latest_deadlocks = 0;
|
||||||
--echo # Clears deadlock buffer of any existent deadlocks.
|
--echo # Clears deadlock buffer of any existent deadlocks.
|
||||||
set global rocksdb_max_latest_deadlocks = @prior_max_latest_deadlocks;
|
set global rocksdb_max_latest_deadlocks = @prior_max_latest_deadlocks;
|
||||||
--replace_regex /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}/TIMESTAMP/ /WAITING KEY: [0-9a-f]{16}/KEY/ /TRANSACTION ID: [0-9]*/TXN_ID/ /INDEX_ID: [0-9a-f]*/IDX_ID/
|
--replace_regex /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}/TIMESTAMP/ /WAITING KEY: [0-9a-f]{16}/KEY/ /TRANSACTION ID: [0-9]*/TXN_ID/ /INDEX_ID: [0-9a-f]*/IDX_ID/ /TIMESTAMP: [0-9]*/TSTAMP/
|
||||||
show engine rocksdb transaction status;
|
show engine rocksdb transaction status;
|
||||||
--source include/wait_until_count_sessions.inc
|
--source include/wait_until_count_sessions.inc
|
||||||
|
@@ -76,6 +76,33 @@ let $table = t1;
|
|||||||
let $table = t4;
|
let $table = t4;
|
||||||
--source drop_table_repopulate_table.inc
|
--source drop_table_repopulate_table.inc
|
||||||
|
|
||||||
|
# Run manual compaction, then restarting mysqld
|
||||||
|
# and confirming it is not blocked.
|
||||||
|
SET GLOBAL rocksdb_max_manual_compactions = 2;
|
||||||
|
SET GLOBAL rocksdb_debug_manual_compaction_delay = 3600;
|
||||||
|
connect (con1, localhost, root,,);
|
||||||
|
connect (con2, localhost, root,,);
|
||||||
|
connect (con3, localhost, root,,);
|
||||||
|
connection con1;
|
||||||
|
send SET GLOBAL rocksdb_compact_cf='cf1';
|
||||||
|
connection con2;
|
||||||
|
send SET GLOBAL rocksdb_compact_cf='rev:cf2';
|
||||||
|
connection default;
|
||||||
|
let $wait_condition = select count(*) = 2 from information_schema.processlist where info like 'SET GLOBAL rocksdb_compact_cf%';
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
# longer enough than manual compaction thread to start compaction
|
||||||
|
--sleep 2
|
||||||
|
select * from information_schema.global_status where variable_name='rocksdb_manual_compactions_running';
|
||||||
|
|
||||||
|
connection con3;
|
||||||
|
--error ER_INTERNAL_ERROR
|
||||||
|
SET GLOBAL rocksdb_compact_cf='cf1';
|
||||||
|
--error ER_INTERNAL_ERROR
|
||||||
|
SET GLOBAL rocksdb_compact_cf='rev:cf2';
|
||||||
|
|
||||||
|
connection default;
|
||||||
|
--source include/restart_mysqld.inc
|
||||||
|
|
||||||
drop table t4;
|
drop table t4;
|
||||||
|
|
||||||
# Restart the server before t4's indices are deleted
|
# Restart the server before t4's indices are deleted
|
||||||
|
@@ -0,0 +1 @@
|
|||||||
|
--log-bin --binlog_format=row --gtid_mode=ON --enforce_gtid_consistency --log-slave-updates
|
263
storage/rocksdb/mysql-test/rocksdb/t/explicit_snapshot.test
Normal file
263
storage/rocksdb/mysql-test/rocksdb/t/explicit_snapshot.test
Normal file
@@ -0,0 +1,263 @@
|
|||||||
|
source include/have_log_bin.inc;
|
||||||
|
source include/have_rocksdb.inc;
|
||||||
|
|
||||||
|
disable_warnings;
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
enable_warnings;
|
||||||
|
|
||||||
|
connect (con1,localhost,root,,);
|
||||||
|
connect (con2,localhost,root,,);
|
||||||
|
|
||||||
|
connection con1;
|
||||||
|
CREATE TABLE T1 (a INT PRIMARY KEY AUTO_INCREMENT) ENGINE=ROCKSDB;
|
||||||
|
INSERT INTO T1 VALUES();
|
||||||
|
|
||||||
|
#
|
||||||
|
|
||||||
|
echo "con1: Creating explict snapshot";
|
||||||
|
let $snapshot=
|
||||||
|
query_get_value(CREATE EXPLICIT ROCKSDB SNAPSHOT, Snapshot_ID, 1);
|
||||||
|
SELECT * FROM T1;
|
||||||
|
|
||||||
|
connection con2;
|
||||||
|
echo "con2: Inserting a row";
|
||||||
|
INSERT INTO T1 VALUES();
|
||||||
|
SELECT * FROM T1;
|
||||||
|
echo "con2: Attaching snapshot id $snapshot";
|
||||||
|
disable_result_log;
|
||||||
|
eval ATTACH EXPLICIT ROCKSDB SNAPSHOT $snapshot;
|
||||||
|
enable_result_log;
|
||||||
|
echo "con2: New row should not be visible";
|
||||||
|
SELECT * FROM T1;
|
||||||
|
echo "con2: Releasing snapshot";
|
||||||
|
disable_result_log;
|
||||||
|
RELEASE EXPLICIT ROCKSDB SNAPSHOT;
|
||||||
|
enable_result_log;
|
||||||
|
echo "con2: New row should be visible";
|
||||||
|
SELECT * FROM T1;
|
||||||
|
|
||||||
|
connection con1;
|
||||||
|
echo "con1: New row should not be visible";
|
||||||
|
SELECT * FROM T1;
|
||||||
|
echo "con1: Releasing snapshot";
|
||||||
|
disable_result_log;
|
||||||
|
RELEASE EXPLICIT ROCKSDB SNAPSHOT;
|
||||||
|
enable_result_log;
|
||||||
|
echo "con1: New row should be visible";
|
||||||
|
SELECT * FROM T1;
|
||||||
|
|
||||||
|
#
|
||||||
|
|
||||||
|
echo "con1: Starting shared snapshot";
|
||||||
|
let $snapshot=
|
||||||
|
query_get_value(START TRANSACTION WITH SHARED ROCKSDB SNAPSHOT, Snapshot_ID, 1);
|
||||||
|
SELECT * FROM T1;
|
||||||
|
|
||||||
|
connection con2;
|
||||||
|
echo "con2: Inserting a row";
|
||||||
|
INSERT INTO T1 VALUES();
|
||||||
|
SELECT * FROM T1;
|
||||||
|
echo "con2: Starting existing snapshot";
|
||||||
|
disable_result_log;
|
||||||
|
eval START TRANSACTION WITH EXISTING ROCKSDB SNAPSHOT $snapshot;
|
||||||
|
enable_result_log;
|
||||||
|
echo "con2: New row should not be visible";
|
||||||
|
SELECT * FROM T1;
|
||||||
|
COMMIT;
|
||||||
|
echo "con2: New row should be visible";
|
||||||
|
SELECT * FROM T1;
|
||||||
|
|
||||||
|
connection con1;
|
||||||
|
COMMIT;
|
||||||
|
echo "con1: New row should be visible";
|
||||||
|
SELECT * FROM T1;
|
||||||
|
|
||||||
|
## Negative test cases
|
||||||
|
|
||||||
|
connection con1;
|
||||||
|
echo "con1: Creating explict snapshot";
|
||||||
|
let $snapshot=
|
||||||
|
query_get_value(CREATE EXPLICIT ROCKSDB SNAPSHOT, Snapshot_ID, 1);
|
||||||
|
echo "con2: Trying to insert row";
|
||||||
|
error ER_UPDATES_WITH_EXPLICIT_SNAPSHOT;
|
||||||
|
INSERT INTO T1 VALUES();
|
||||||
|
|
||||||
|
connection con2;
|
||||||
|
echo "con2: Attaching existing snapshot";
|
||||||
|
disable_result_log;
|
||||||
|
eval ATTACH EXPLICIT ROCKSDB SNAPSHOT $snapshot;
|
||||||
|
enable_result_log;
|
||||||
|
echo "con2: Trying to insert row";
|
||||||
|
error ER_UPDATES_WITH_EXPLICIT_SNAPSHOT;
|
||||||
|
INSERT INTO T1 VALUES();
|
||||||
|
|
||||||
|
connection con1;
|
||||||
|
disable_result_log;
|
||||||
|
RELEASE EXPLICIT ROCKSDB SNAPSHOT;
|
||||||
|
enable_result_log;
|
||||||
|
connection con2;
|
||||||
|
disable_result_log;
|
||||||
|
RELEASE EXPLICIT ROCKSDB SNAPSHOT;
|
||||||
|
enable_result_log;
|
||||||
|
|
||||||
|
connection con1;
|
||||||
|
echo "con1: Starting shared snapshot";
|
||||||
|
let $snapshot=
|
||||||
|
query_get_value(START TRANSACTION WITH SHARED ROCKSDB SNAPSHOT, Snapshot_ID, 1);
|
||||||
|
echo "con1: Trying to insert row";
|
||||||
|
error ER_UPDATES_WITH_CONSISTENT_SNAPSHOT;
|
||||||
|
INSERT INTO T1 VALUES();
|
||||||
|
|
||||||
|
connection con2;
|
||||||
|
echo "con2: Starting existing snapshot";
|
||||||
|
disable_result_log;
|
||||||
|
eval START TRANSACTION WITH EXISTING ROCKSDB SNAPSHOT $snapshot;
|
||||||
|
enable_result_log;
|
||||||
|
echo "con2: Trying to insert row";
|
||||||
|
error ER_UPDATES_WITH_CONSISTENT_SNAPSHOT;
|
||||||
|
INSERT INTO T1 VALUES();
|
||||||
|
|
||||||
|
connection con1;
|
||||||
|
COMMIT;
|
||||||
|
connection con2;
|
||||||
|
COMMIT;
|
||||||
|
|
||||||
|
## Test how overlapping explicit snapshot statements work
|
||||||
|
|
||||||
|
connection con1;
|
||||||
|
echo "con1: Creating explicit snapshot";
|
||||||
|
disable_result_log;
|
||||||
|
CREATE EXPLICIT ROCKSDB SNAPSHOT;
|
||||||
|
enable_result_log;
|
||||||
|
SELECT * FROM T1;
|
||||||
|
|
||||||
|
connection con2;
|
||||||
|
echo "con2: Inserting a row";
|
||||||
|
INSERT INTO T1 VALUES();
|
||||||
|
SELECT * FROM T1;
|
||||||
|
|
||||||
|
connection con1;
|
||||||
|
echo "con1: New row should not be seen";
|
||||||
|
SELECT * FROM T1;
|
||||||
|
echo "con1: Creating another explicit snapshot";
|
||||||
|
disable_result_log;
|
||||||
|
CREATE EXPLICIT ROCKSDB SNAPSHOT;
|
||||||
|
enable_result_log;
|
||||||
|
echo "con1: Now the new row should be seen";
|
||||||
|
SELECT * FROM T1;
|
||||||
|
|
||||||
|
#
|
||||||
|
|
||||||
|
echo "con1: Starting transaction with consistent snapshot";
|
||||||
|
disable_result_log;
|
||||||
|
START TRANSACTION WITH CONSISTENT ROCKSDB SNAPSHOT;
|
||||||
|
enable_result_log;
|
||||||
|
SELECT * FROM T1;
|
||||||
|
|
||||||
|
connection con2;
|
||||||
|
echo "con2: Inserting a row";
|
||||||
|
INSERT INTO T1 VALUES();
|
||||||
|
SELECT * FROM T1;
|
||||||
|
|
||||||
|
connection con1;
|
||||||
|
echo "con1: The new row should not be seen";
|
||||||
|
SELECT * FROM T1;
|
||||||
|
|
||||||
|
echo "con1: Creating another explicit snapshot";
|
||||||
|
disable_result_log;
|
||||||
|
CREATE EXPLICIT ROCKSDB SNAPSHOT;
|
||||||
|
enable_result_log;
|
||||||
|
echo "con1: The new row should still not be seen";
|
||||||
|
SELECT * FROM T1;
|
||||||
|
|
||||||
|
echo "con1: Committing trx";
|
||||||
|
COMMIT;
|
||||||
|
echo "con1: The new row should now be seen because of the new explicit snapshot created above";
|
||||||
|
SELECT * FROM T1;
|
||||||
|
|
||||||
|
connection con1;
|
||||||
|
echo "con1: Releasing explicit snapshot";
|
||||||
|
disable_result_log;
|
||||||
|
RELEASE EXPLICIT ROCKSDB SNAPSHOT;
|
||||||
|
enable_result_log;
|
||||||
|
|
||||||
|
#
|
||||||
|
|
||||||
|
echo "con1: Starting transaction with shared snapshot";
|
||||||
|
disable_result_log;
|
||||||
|
START TRANSACTION WITH SHARED ROCKSDB SNAPSHOT;
|
||||||
|
enable_result_log;
|
||||||
|
SELECT * FROM T1;
|
||||||
|
|
||||||
|
connection con2;
|
||||||
|
echo "con2: Inserting a row";
|
||||||
|
INSERT INTO T1 VALUES();
|
||||||
|
SELECT * FROM T1;
|
||||||
|
|
||||||
|
connection con1;
|
||||||
|
echo "con1: The new row should not be seen";
|
||||||
|
SELECT * FROM T1;
|
||||||
|
|
||||||
|
echo "con1: Starting another transaction with shared snapshot";
|
||||||
|
disable_result_log;
|
||||||
|
START TRANSACTION WITH SHARED ROCKSDB SNAPSHOT;
|
||||||
|
enable_result_log;
|
||||||
|
echo "con1: The new row should now be seen";
|
||||||
|
SELECT * FROM T1;
|
||||||
|
COMMIT;
|
||||||
|
|
||||||
|
#
|
||||||
|
|
||||||
|
echo "con1: Creating explicit snapshot";
|
||||||
|
disable_result_log;
|
||||||
|
CREATE EXPLICIT ROCKSDB SNAPSHOT;
|
||||||
|
enable_result_log;
|
||||||
|
SELECT * FROM T1;
|
||||||
|
|
||||||
|
echo "con1: Releasing explicit snapshot";
|
||||||
|
disable_result_log;
|
||||||
|
RELEASE EXPLICIT ROCKSDB SNAPSHOT;
|
||||||
|
enable_result_log;
|
||||||
|
|
||||||
|
echo "con1: Releasing explicit snapshot again";
|
||||||
|
error ER_UNKNOWN_ERROR;
|
||||||
|
RELEASE EXPLICIT ROCKSDB SNAPSHOT;
|
||||||
|
|
||||||
|
#
|
||||||
|
|
||||||
|
echo "con1: Starting transaction with shared snapshot";
|
||||||
|
disable_result_log;
|
||||||
|
START TRANSACTION WITH SHARED ROCKSDB SNAPSHOT;
|
||||||
|
enable_result_log;
|
||||||
|
SELECT * FROM T1;
|
||||||
|
|
||||||
|
connection con2;
|
||||||
|
echo "con2: Inserting a row";
|
||||||
|
INSERT INTO T1 VALUES();
|
||||||
|
SELECT * FROM T1;
|
||||||
|
|
||||||
|
connection con1;
|
||||||
|
echo "con1: Creating explicit snapshot";
|
||||||
|
disable_result_log;
|
||||||
|
CREATE EXPLICIT ROCKSDB SNAPSHOT;
|
||||||
|
enable_result_log;
|
||||||
|
SELECT * FROM T1;
|
||||||
|
|
||||||
|
echo "con1: Releasing explicit snapshot";
|
||||||
|
disable_result_log;
|
||||||
|
RELEASE EXPLICIT ROCKSDB SNAPSHOT;
|
||||||
|
enable_result_log;
|
||||||
|
|
||||||
|
echo "con1: The new row should not be seen";
|
||||||
|
SELECT* FROM T1;
|
||||||
|
COMMIT;
|
||||||
|
|
||||||
|
#
|
||||||
|
|
||||||
|
## Cleanup
|
||||||
|
DROP TABLE T1;
|
||||||
|
|
||||||
|
connection default;
|
||||||
|
disconnect con1;
|
||||||
|
disconnect con2;
|
||||||
|
|
@@ -32,23 +32,23 @@ select * from information_schema.rocksdb_deadlock;
|
|||||||
echo Deadlock #1;
|
echo Deadlock #1;
|
||||||
--source include/simple_deadlock.inc
|
--source include/simple_deadlock.inc
|
||||||
connection default;
|
connection default;
|
||||||
--replace_column 1 DEADLOCK_ID 2 TRANSACTION_ID 4 WAITING_KEY
|
--replace_column 1 DEADLOCK_ID 2 TIMESTAMP 3 TRANSACTION_ID 5 WAITING_KEY
|
||||||
select * from information_schema.rocksdb_deadlock;
|
select * from information_schema.rocksdb_deadlock;
|
||||||
|
|
||||||
echo Deadlock #2;
|
echo Deadlock #2;
|
||||||
--source include/simple_deadlock.inc
|
--source include/simple_deadlock.inc
|
||||||
connection default;
|
connection default;
|
||||||
--replace_column 1 DEADLOCK_ID 2 TRANSACTION_ID 4 WAITING_KEY
|
--replace_column 1 DEADLOCK_ID 2 TIMESTAMP 3 TRANSACTION_ID 5 WAITING_KEY
|
||||||
select * from information_schema.rocksdb_deadlock;
|
select * from information_schema.rocksdb_deadlock;
|
||||||
set global rocksdb_max_latest_deadlocks = 10;
|
set global rocksdb_max_latest_deadlocks = 10;
|
||||||
|
|
||||||
echo Deadlock #3;
|
echo Deadlock #3;
|
||||||
--source include/simple_deadlock.inc
|
--source include/simple_deadlock.inc
|
||||||
connection default;
|
connection default;
|
||||||
--replace_column 1 DEADLOCK_ID 2 TRANSACTION_ID 4 WAITING_KEY
|
--replace_column 1 DEADLOCK_ID 2 TIMESTAMP 3 TRANSACTION_ID 5 WAITING_KEY
|
||||||
select * from information_schema.rocksdb_deadlock;
|
select * from information_schema.rocksdb_deadlock;
|
||||||
set global rocksdb_max_latest_deadlocks = 1;
|
set global rocksdb_max_latest_deadlocks = 1;
|
||||||
--replace_column 1 DEADLOCK_ID 2 TRANSACTION_ID 4 WAITING_KEY
|
--replace_column 1 DEADLOCK_ID 2 TIMESTAMP 3 TRANSACTION_ID 5 WAITING_KEY
|
||||||
select * from information_schema.rocksdb_deadlock;
|
select * from information_schema.rocksdb_deadlock;
|
||||||
|
|
||||||
connection con3;
|
connection con3;
|
||||||
@@ -96,7 +96,7 @@ rollback;
|
|||||||
|
|
||||||
connection default;
|
connection default;
|
||||||
set global rocksdb_max_latest_deadlocks = 5;
|
set global rocksdb_max_latest_deadlocks = 5;
|
||||||
--replace_column 1 DEADLOCK_ID 2 TRANSACTION_ID 4 WAITING_KEY
|
--replace_column 1 DEADLOCK_ID 2 TIMESTAMP 3 TRANSACTION_ID 5 WAITING_KEY
|
||||||
select * from information_schema.rocksdb_deadlock;
|
select * from information_schema.rocksdb_deadlock;
|
||||||
|
|
||||||
echo Deadlock #5;
|
echo Deadlock #5;
|
||||||
@@ -138,7 +138,7 @@ connection con3;
|
|||||||
rollback;
|
rollback;
|
||||||
|
|
||||||
connection default;
|
connection default;
|
||||||
--replace_column 1 DEADLOCK_ID 2 TRANSACTION_ID 4 WAITING_KEY
|
--replace_column 1 DEADLOCK_ID 2 TIMESTAMP 3 TRANSACTION_ID 5 WAITING_KEY
|
||||||
select * from information_schema.rocksdb_deadlock;
|
select * from information_schema.rocksdb_deadlock;
|
||||||
|
|
||||||
disconnect con1;
|
disconnect con1;
|
||||||
@@ -148,7 +148,7 @@ disconnect con3;
|
|||||||
set global rocksdb_lock_wait_timeout = @prior_lock_wait_timeout;
|
set global rocksdb_lock_wait_timeout = @prior_lock_wait_timeout;
|
||||||
set global rocksdb_deadlock_detect = @prior_deadlock_detect;
|
set global rocksdb_deadlock_detect = @prior_deadlock_detect;
|
||||||
drop table t;
|
drop table t;
|
||||||
--replace_column 1 DEADLOCK_ID 2 TRANSACTION_ID 4 WAITING_KEY 6 INDEX_NAME 7 TABLE_NAME
|
--replace_column 1 DEADLOCK_ID 2 TIMESTAMP 3 TRANSACTION_ID 5 WAITING_KEY 7 INDEX_NAME 8 TABLE_NAME
|
||||||
select * from information_schema.rocksdb_deadlock;
|
select * from information_schema.rocksdb_deadlock;
|
||||||
set global rocksdb_max_latest_deadlocks = 0;
|
set global rocksdb_max_latest_deadlocks = 0;
|
||||||
--echo # Clears deadlock buffer of any existent deadlocks.
|
--echo # Clears deadlock buffer of any existent deadlocks.
|
||||||
|
@@ -46,6 +46,9 @@ WHERE INDEX_NUMBER =
|
|||||||
(SELECT INDEX_NUMBER FROM INFORMATION_SCHEMA.ROCKSDB_DDL
|
(SELECT INDEX_NUMBER FROM INFORMATION_SCHEMA.ROCKSDB_DDL
|
||||||
WHERE TABLE_NAME = 't2' AND INDEX_NAME = "PRIMARY");
|
WHERE TABLE_NAME = 't2' AND INDEX_NAME = "PRIMARY");
|
||||||
|
|
||||||
|
# The number of sst files should be 1 or more
|
||||||
|
select count(*) > 0 from information_schema.rocksdb_sst_props;
|
||||||
|
|
||||||
# cleanup
|
# cleanup
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
DROP TABLE t2;
|
DROP TABLE t2;
|
||||||
|
@@ -1 +1 @@
|
|||||||
--rocksdb_strict_collation_check=off --binlog_format=row --log-bin
|
--rocksdb_strict_collation_check=off --binlog_format=row --log-bin --rocksdb_records_in_range=2
|
||||||
|
@@ -17,6 +17,7 @@ select VALUE into @keysIn from INFORMATION_SCHEMA.ROCKSDB_COMPACTION_STATS where
|
|||||||
CREATE TABLE t1 (i1 INT, i2 INT, PRIMARY KEY (i1)) ENGINE = ROCKSDB;
|
CREATE TABLE t1 (i1 INT, i2 INT, PRIMARY KEY (i1)) ENGINE = ROCKSDB;
|
||||||
INSERT INTO t1 VALUES (1, 1), (2, 2), (3, 3);
|
INSERT INTO t1 VALUES (1, 1), (2, 2), (3, 3);
|
||||||
|
|
||||||
|
set global rocksdb_force_flush_memtable_now = true;
|
||||||
--let $MASTER_UUID = query_get_value(SELECT @@SERVER_UUID, @@SERVER_UUID, 1)
|
--let $MASTER_UUID = query_get_value(SELECT @@SERVER_UUID, @@SERVER_UUID, 1)
|
||||||
--let $max_index_id = query_get_value(SELECT * from INFORMATION_SCHEMA.ROCKSDB_GLOBAL_INFO where type = 'MAX_INDEX_ID', VALUE, 1)
|
--let $max_index_id = query_get_value(SELECT * from INFORMATION_SCHEMA.ROCKSDB_GLOBAL_INFO where type = 'MAX_INDEX_ID', VALUE, 1)
|
||||||
--replace_result $MASTER_UUID uuid $max_index_id max_index_id
|
--replace_result $MASTER_UUID uuid $max_index_id max_index_id
|
||||||
|
@@ -1,8 +0,0 @@
|
|||||||
--rocksdb_write_disable_wal=1
|
|
||||||
--rocksdb_flush_log_at_trx_commit=0
|
|
||||||
--rocksdb_default_cf_options=write_buffer_size=16k;target_file_size_base=16k;level0_file_num_compaction_trigger=4;level0_slowdown_writes_trigger=256;level0_stop_writes_trigger=256;max_write_buffer_number=16;compression_per_level=kNoCompression;memtable=vector:1024
|
|
||||||
--rocksdb_override_cf_options=__system__={memtable=skip_list:16}
|
|
||||||
--rocksdb_compaction_sequential_deletes=0
|
|
||||||
--rocksdb_compaction_sequential_deletes_window=0
|
|
||||||
--rocksdb_allow_concurrent_memtable_write=0
|
|
||||||
|
|
@@ -1,9 +1,19 @@
|
|||||||
--source include/have_rocksdb.inc
|
--source include/have_rocksdb.inc
|
||||||
|
--source suite/rocksdb/include/have_write_committed.inc
|
||||||
|
|
||||||
--disable_warnings
|
--disable_warnings
|
||||||
DROP TABLE IF EXISTS t1;
|
DROP TABLE IF EXISTS t1;
|
||||||
--enable_warnings
|
--enable_warnings
|
||||||
|
|
||||||
|
# reload with load optimized config
|
||||||
|
let $restart_file= $MYSQLTEST_VARDIR/tmp/mysqld.1.expect;
|
||||||
|
--exec echo "wait" > $restart_file
|
||||||
|
--shutdown_server 10
|
||||||
|
--source include/wait_until_disconnected.inc
|
||||||
|
-- exec echo "restart:--rocksdb_write_disable_wal=1 --rocksdb_flush_log_at_trx_commit=0 --rocksdb_default_cf_options=write_buffer_size=16k;target_file_size_base=16k;level0_file_num_compaction_trigger=4;level0_slowdown_writes_trigger=256;level0_stop_writes_trigger=256;max_write_buffer_number=16;compression_per_level=kNoCompression;memtable=vector:1024 --rocksdb_override_cf_options=__system__={memtable=skip_list:16} --rocksdb_compaction_sequential_deletes=0 --rocksdb_compaction_sequential_deletes_window=0 --rocksdb_allow_concurrent_memtable_write=0" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||||
|
-- enable_reconnect
|
||||||
|
-- source include/wait_until_connected_again.inc
|
||||||
|
|
||||||
create table t1(
|
create table t1(
|
||||||
id bigint not null primary key,
|
id bigint not null primary key,
|
||||||
i1 bigint, #unique
|
i1 bigint, #unique
|
||||||
|
@@ -32,8 +32,8 @@ INSERT INTO t1 VALUES (5);
|
|||||||
SHOW TABLE STATUS LIKE 't1';
|
SHOW TABLE STATUS LIKE 't1';
|
||||||
|
|
||||||
INSERT INTO t1 VALUES (1000);
|
INSERT INTO t1 VALUES (1000);
|
||||||
--replace_column 3 # 6 # 7 # 8 # 9 # 10 #
|
|
||||||
SELECT * FROM t1;
|
SELECT * FROM t1;
|
||||||
|
--replace_column 3 # 6 # 7 # 8 # 9 # 10 #
|
||||||
SHOW TABLE STATUS LIKE 't1';
|
SHOW TABLE STATUS LIKE 't1';
|
||||||
|
|
||||||
--error ER_DUP_ENTRY
|
--error ER_DUP_ENTRY
|
||||||
|
@@ -196,6 +196,28 @@ SELECT a,b FROM t1;
|
|||||||
UNLOCK TABLES;
|
UNLOCK TABLES;
|
||||||
DROP TABLE t1, t2;
|
DROP TABLE t1, t2;
|
||||||
|
|
||||||
|
CREATE TABLE t1 (i INT) ENGINE=MyISAM;
|
||||||
|
HANDLER t1 OPEN h;
|
||||||
|
CREATE TABLE t2 (i INT) ENGINE=RocksDB;
|
||||||
|
LOCK TABLES t2 WRITE;
|
||||||
|
|
||||||
|
--connect (con1,localhost,root,,test)
|
||||||
|
--connection con1
|
||||||
|
--send
|
||||||
|
FLUSH TABLES WITH READ LOCK;
|
||||||
|
|
||||||
|
--connection default
|
||||||
|
INSERT INTO t2 VALUES (1);
|
||||||
|
UNLOCK TABLES;
|
||||||
|
HANDLER h CLOSE;
|
||||||
|
|
||||||
|
--connection con1
|
||||||
|
--reap
|
||||||
|
--disconnect con1
|
||||||
|
|
||||||
|
--connection default
|
||||||
|
DROP TABLE t1, t2;
|
||||||
|
|
||||||
# Check that all connections opened by test cases in this file are really
|
# Check that all connections opened by test cases in this file are really
|
||||||
# gone so execution of other tests won't be affected by their presence.
|
# gone so execution of other tests won't be affected by their presence.
|
||||||
--source include/wait_until_count_sessions.inc
|
--source include/wait_until_count_sessions.inc
|
||||||
|
@@ -0,0 +1,11 @@
|
|||||||
|
--source include/have_debug_sync.inc
|
||||||
|
--source include/have_rocksdb.inc
|
||||||
|
|
||||||
|
CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=RocksDB;
|
||||||
|
INSERT INTO t1 VALUES (1), (2), (3);
|
||||||
|
|
||||||
|
--let $percona_nonflushing_analyze_table= t1
|
||||||
|
--source include/percona_nonflushing_analyze_debug.inc
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
@@ -26,7 +26,6 @@ select variable_value into @u from information_schema.global_status where variab
|
|||||||
SELECT COUNT(*) FROM t1 WHERE id1=1 AND id2=1 AND id3=1;
|
SELECT COUNT(*) FROM t1 WHERE id1=1 AND id2=1 AND id3=1;
|
||||||
select variable_value-@u from information_schema.global_status where variable_name='rocksdb_bloom_filter_prefix_checked';
|
select variable_value-@u from information_schema.global_status where variable_name='rocksdb_bloom_filter_prefix_checked';
|
||||||
|
|
||||||
--exec echo "" > $MYSQLTEST_VARDIR/log/mysqld.1.err
|
|
||||||
--let $_mysqld_option=--rocksdb_override_cf_options=cf1={prefix_extractor=capped:26};
|
--let $_mysqld_option=--rocksdb_override_cf_options=cf1={prefix_extractor=capped:26};
|
||||||
|
|
||||||
--echo
|
--echo
|
||||||
@@ -35,16 +34,12 @@ select variable_value-@u from information_schema.global_status where variable_na
|
|||||||
--sorted_result
|
--sorted_result
|
||||||
SELECT * FROM information_schema.rocksdb_cf_options WHERE option_type like '%prefix_extractor%';
|
SELECT * FROM information_schema.rocksdb_cf_options WHERE option_type like '%prefix_extractor%';
|
||||||
|
|
||||||
# This should no longer crash. See https://github.com/facebook/mysql-5.6/issues/641
|
SET @@global.rocksdb_update_cf_options = 'cf1={prefix_extractor=capped:26};';
|
||||||
--echo
|
--echo
|
||||||
--echo Restarting with new Prefix Extractor...
|
--echo Changed Prefix Extractor (after update_cf_options set, without restart):
|
||||||
--echo
|
|
||||||
--source include/restart_mysqld_with_option.inc
|
|
||||||
|
|
||||||
--echo
|
|
||||||
--echo Changed Prefix Extractor (after restart):
|
|
||||||
--echo
|
--echo
|
||||||
--sorted_result
|
--sorted_result
|
||||||
|
# Restart no longer needed
|
||||||
SELECT * FROM information_schema.rocksdb_cf_options WHERE option_type like '%prefix_extractor%';
|
SELECT * FROM information_schema.rocksdb_cf_options WHERE option_type like '%prefix_extractor%';
|
||||||
|
|
||||||
# Satisfies can_use_bloom_filter (4+8+8+8), but can't use because the old SST
|
# Satisfies can_use_bloom_filter (4+8+8+8), but can't use because the old SST
|
||||||
@@ -86,6 +81,7 @@ select variable_value into @u from information_schema.global_status where variab
|
|||||||
SELECT COUNT(*) FROM t1 WHERE id1=1 AND id2=1 AND id3=1;
|
SELECT COUNT(*) FROM t1 WHERE id1=1 AND id2=1 AND id3=1;
|
||||||
select variable_value-@u from information_schema.global_status where variable_name='rocksdb_bloom_filter_prefix_checked';
|
select variable_value-@u from information_schema.global_status where variable_name='rocksdb_bloom_filter_prefix_checked';
|
||||||
|
|
||||||
|
SET @@global.rocksdb_update_cf_options = '';
|
||||||
set global rocksdb_compact_cf='cf1';
|
set global rocksdb_compact_cf='cf1';
|
||||||
|
|
||||||
# Select the updated, make sure bloom filter is checked now
|
# Select the updated, make sure bloom filter is checked now
|
||||||
|
@@ -1,4 +1,5 @@
|
|||||||
--source include/have_rocksdb.inc
|
--source include/have_rocksdb.inc
|
||||||
|
--source suite/rocksdb/include/have_write_committed.inc
|
||||||
|
|
||||||
#
|
#
|
||||||
# RocksDB Storage Engine tests
|
# RocksDB Storage Engine tests
|
||||||
@@ -1141,7 +1142,7 @@ set @a=-1;
|
|||||||
insert into t1 select (@a:=@a+1), 1234 from information_schema.session_variables limit 100;
|
insert into t1 select (@a:=@a+1), 1234 from information_schema.session_variables limit 100;
|
||||||
set @tmp1= @@rocksdb_max_row_locks;
|
set @tmp1= @@rocksdb_max_row_locks;
|
||||||
set rocksdb_max_row_locks= 20;
|
set rocksdb_max_row_locks= 20;
|
||||||
--error ER_RDB_STATUS_GENERAL
|
--error ER_GET_ERRMSG
|
||||||
update t1 set a=a+10;
|
update t1 set a=a+10;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
@@ -33,7 +33,6 @@ select cf_name, option_type, value
|
|||||||
order by cf_name, option_type;
|
order by cf_name, option_type;
|
||||||
# restart with cf configs for cf1 and cf2
|
# restart with cf configs for cf1 and cf2
|
||||||
|
|
||||||
--exec echo "" > $MYSQLTEST_VARDIR/log/mysqld.1.err
|
|
||||||
--let $_mysqld_option=--rocksdb_override_cf_options=cf1={write_buffer_size=8m;target_file_size_base=2m};cf2={write_buffer_size=16m;max_bytes_for_level_multiplier=8};z={target_file_size_base=4m};
|
--let $_mysqld_option=--rocksdb_override_cf_options=cf1={write_buffer_size=8m;target_file_size_base=2m};cf2={write_buffer_size=16m;max_bytes_for_level_multiplier=8};z={target_file_size_base=4m};
|
||||||
--source include/restart_mysqld_with_option.inc
|
--source include/restart_mysqld_with_option.inc
|
||||||
|
|
||||||
|
@@ -5,24 +5,25 @@
|
|||||||
#
|
#
|
||||||
--source include/have_debug.inc
|
--source include/have_debug.inc
|
||||||
|
|
||||||
|
--let LOG=$MYSQLTEST_VARDIR/tmp/rocksdb_checksum.err
|
||||||
|
--let $_mysqld_option=--log-error=$LOG
|
||||||
|
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
|
||||||
|
--source include/restart_mysqld_with_option.inc
|
||||||
|
|
||||||
set @save_rocksdb_store_row_debug_checksums=@@global.rocksdb_store_row_debug_checksums;
|
set @save_rocksdb_store_row_debug_checksums=@@global.rocksdb_store_row_debug_checksums;
|
||||||
set @save_rocksdb_verify_row_debug_checksums=@@global.rocksdb_verify_row_debug_checksums;
|
set @save_rocksdb_verify_row_debug_checksums=@@global.rocksdb_verify_row_debug_checksums;
|
||||||
set @save_rocksdb_checksums_pct=@@global.rocksdb_checksums_pct;
|
set @save_rocksdb_checksums_pct=@@global.rocksdb_checksums_pct;
|
||||||
|
|
||||||
# wiping mysql log for repeatable tests
|
|
||||||
--exec echo "" > $MYSQLTEST_VARDIR/log/mysqld.1.err
|
|
||||||
|
|
||||||
--disable_warnings
|
--disable_warnings
|
||||||
drop table if exists t1,t2,t3;
|
drop table if exists t1,t2,t3;
|
||||||
--enable_warnings
|
--enable_warnings
|
||||||
-- exec echo "" > $MYSQLTEST_VARDIR/log/mysqld.1.err
|
|
||||||
|
|
||||||
show variables like 'rocksdb_%checksum%';
|
show variables like 'rocksdb_%checksum%';
|
||||||
|
|
||||||
create table t1 (pk int primary key, a int, b int, key(a), key(b)) engine=rocksdb;
|
create table t1 (pk int primary key, a int, b int, key(a), key(b)) engine=rocksdb;
|
||||||
insert into t1 values (1,1,1),(2,2,2),(3,3,3);
|
insert into t1 values (1,1,1),(2,2,2),(3,3,3);
|
||||||
check table t1;
|
check table t1;
|
||||||
--exec grep "^[0-9-]* [0-9:]* [0-9]* \[Note\] CHECKTABLE t1" $MYSQLTEST_VARDIR/log/mysqld.1.err | cut -d] -f2
|
--exec grep "^[0-9-]* [0-9:]* [0-9]* \[Note\] CHECKTABLE t1" $LOG | cut -d] -f2
|
||||||
|
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
@@ -30,7 +31,7 @@ set session rocksdb_store_row_debug_checksums=on;
|
|||||||
create table t2 (pk int primary key, a int, b int, key(a), key(b)) engine=rocksdb;
|
create table t2 (pk int primary key, a int, b int, key(a), key(b)) engine=rocksdb;
|
||||||
insert into t2 values (1,1,1),(2,2,2),(3,3,3);
|
insert into t2 values (1,1,1),(2,2,2),(3,3,3);
|
||||||
check table t2;
|
check table t2;
|
||||||
--exec grep "^[0-9-]* [0-9:]* [0-9]* \[Note\] CHECKTABLE t2" $MYSQLTEST_VARDIR/log/mysqld.1.err | cut -d] -f2
|
--exec grep "^[0-9-]* [0-9:]* [0-9]* \[Note\] CHECKTABLE t2" $LOG | cut -d] -f2
|
||||||
|
|
||||||
--echo # Now, make a table that has both rows with checksums and without
|
--echo # Now, make a table that has both rows with checksums and without
|
||||||
create table t3 (pk int primary key, a int, b int, key(a), key(b)) engine=rocksdb;
|
create table t3 (pk int primary key, a int, b int, key(a), key(b)) engine=rocksdb;
|
||||||
@@ -39,7 +40,7 @@ set session rocksdb_store_row_debug_checksums=off;
|
|||||||
update t3 set b=3 where a=2;
|
update t3 set b=3 where a=2;
|
||||||
set session rocksdb_store_row_debug_checksums=on;
|
set session rocksdb_store_row_debug_checksums=on;
|
||||||
check table t3;
|
check table t3;
|
||||||
--exec grep "^[0-9-]* [0-9:]* [0-9]* \[Note\] CHECKTABLE t3" $MYSQLTEST_VARDIR/log/mysqld.1.err | cut -d] -f2
|
--exec grep "^[0-9-]* [0-9:]* [0-9]* \[Note\] CHECKTABLE t3" $LOG | cut -d] -f2
|
||||||
|
|
||||||
set session rocksdb_store_row_debug_checksums=on;
|
set session rocksdb_store_row_debug_checksums=on;
|
||||||
set session rocksdb_checksums_pct=5;
|
set session rocksdb_checksums_pct=5;
|
||||||
@@ -47,7 +48,7 @@ create table t4 (pk int primary key, a int, b int, key(a), key(b)) engine=rocksd
|
|||||||
--disable_query_log
|
--disable_query_log
|
||||||
let $i=0;
|
let $i=0;
|
||||||
let $x= 100000;
|
let $x= 100000;
|
||||||
while ($i<10000)
|
while ($i<4000)
|
||||||
{
|
{
|
||||||
inc $i;
|
inc $i;
|
||||||
eval insert t4(pk,a,b) values($i, $i, $i div 10);
|
eval insert t4(pk,a,b) values($i, $i, $i div 10);
|
||||||
@@ -56,8 +57,8 @@ while ($i<10000)
|
|||||||
}
|
}
|
||||||
--enable_query_log
|
--enable_query_log
|
||||||
check table t4;
|
check table t4;
|
||||||
--exec grep "^[0-9-]* [0-9:]* [0-9]* \[Note\] CHECKTABLE t4" $MYSQLTEST_VARDIR/log/mysqld.1.err | cut -d] -f2 > $MYSQL_TMP_DIR/rocksdb_checksums.log
|
--exec grep "^[0-9-]* [0-9:]* [0-9]* \[Note\] CHECKTABLE t4" $LOG | cut -d] -f2 > $MYSQL_TMP_DIR/rocksdb_checksums.log
|
||||||
--exec perl suite/rocksdb/t/rocksdb_checksums.pl $MYSQL_TMP_DIR/rocksdb_checksums.log 10000 5
|
--exec perl suite/rocksdb/t/rocksdb_checksums.pl $MYSQL_TMP_DIR/rocksdb_checksums.log 4000 5
|
||||||
--remove_file $MYSQL_TMP_DIR/rocksdb_checksums.log
|
--remove_file $MYSQL_TMP_DIR/rocksdb_checksums.log
|
||||||
set session rocksdb_checksums_pct=100;
|
set session rocksdb_checksums_pct=100;
|
||||||
|
|
||||||
@@ -124,4 +125,7 @@ set @@global.rocksdb_store_row_debug_checksums=@save_rocksdb_store_row_debug_che
|
|||||||
set @@global.rocksdb_verify_row_debug_checksums=@save_rocksdb_verify_row_debug_checksums;
|
set @@global.rocksdb_verify_row_debug_checksums=@save_rocksdb_verify_row_debug_checksums;
|
||||||
set @@global.rocksdb_checksums_pct=@save_rocksdb_checksums_pct;
|
set @@global.rocksdb_checksums_pct=@save_rocksdb_checksums_pct;
|
||||||
|
|
||||||
|
--source include/restart_mysqld.inc
|
||||||
|
--remove_file $LOG
|
||||||
|
|
||||||
drop table t2,t3,t4;
|
drop table t2,t3,t4;
|
||||||
|
@@ -68,7 +68,7 @@ let $wait_condition =
|
|||||||
select * from t;
|
select * from t;
|
||||||
--error ER_LOCK_DEADLOCK
|
--error ER_LOCK_DEADLOCK
|
||||||
insert into t values (4), (1);
|
insert into t values (4), (1);
|
||||||
--echo # Statement should be rolled back
|
--echo # Transaction should be rolled back
|
||||||
select * from t;
|
select * from t;
|
||||||
rollback;
|
rollback;
|
||||||
|
|
||||||
@@ -80,6 +80,39 @@ connection con1;
|
|||||||
--reap
|
--reap
|
||||||
rollback;
|
rollback;
|
||||||
|
|
||||||
|
|
||||||
|
connection default;
|
||||||
|
create table t1 (id int primary key, value int, value2 int, index(value)) engine=rocksdb;
|
||||||
|
insert into t1 values (1,1,1),(2,2,2),(3,3,3),(4,4,4),(5,5,5),(6,6,6),(7,7,7),(8,8,8),(9,9,9),(10,10,10);
|
||||||
|
|
||||||
|
connection con1;
|
||||||
|
begin;
|
||||||
|
update t1 force index (value) set value2=value2+1 where value=3;
|
||||||
|
|
||||||
|
connection con2;
|
||||||
|
begin;
|
||||||
|
update t1 force index (value) set value2=value2+1 where value=2;
|
||||||
|
update t1 force index (value) set value2=value2+1 where value=4;
|
||||||
|
|
||||||
|
connection con1;
|
||||||
|
send update t1 force index (value) set value2=value2+1 where value=4;
|
||||||
|
|
||||||
|
connection con2;
|
||||||
|
let $wait_condition =
|
||||||
|
`SELECT CONCAT('select count(*) = 1 from information_schema.rocksdb_trx where THREAD_ID = ', '$con1', ' and WAITING_KEY != ""')`;
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
--error ER_LOCK_DEADLOCK
|
||||||
|
update t1 force index (value) set value2=value2+1 where value=3;
|
||||||
|
|
||||||
|
connection con1;
|
||||||
|
--reap
|
||||||
|
rollback;
|
||||||
|
|
||||||
|
connection con2;
|
||||||
|
rollback;
|
||||||
|
drop table t1;
|
||||||
|
|
||||||
|
|
||||||
connection default;
|
connection default;
|
||||||
disconnect con1;
|
disconnect con1;
|
||||||
disconnect con2;
|
disconnect con2;
|
||||||
|
@@ -0,0 +1,26 @@
|
|||||||
|
--source include/have_rocksdb.inc
|
||||||
|
|
||||||
|
# Tests if locks are held for the secondary keys of old rows in updates
|
||||||
|
|
||||||
|
connect (con, localhost, root,,);
|
||||||
|
|
||||||
|
connection default;
|
||||||
|
create table t1 (a int primary key, b int unique key) engine = rocksdb;
|
||||||
|
insert into t1 values(1, 1);
|
||||||
|
|
||||||
|
connection con;
|
||||||
|
begin;
|
||||||
|
update t1 set b = 2 where b = 1; # this should lock the row where b = 1
|
||||||
|
|
||||||
|
connection default;
|
||||||
|
error ER_LOCK_WAIT_TIMEOUT;
|
||||||
|
insert into t1 values(2, 1); # should error out with lock_wait_timeout
|
||||||
|
|
||||||
|
connection con;
|
||||||
|
rollback;
|
||||||
|
select * from t1;
|
||||||
|
|
||||||
|
# Cleanup
|
||||||
|
connection default;
|
||||||
|
drop table t1;
|
||||||
|
disconnect con;
|
@@ -20,7 +20,7 @@ if (!$succeeds)
|
|||||||
{
|
{
|
||||||
--disable_result_log
|
--disable_result_log
|
||||||
--disable_query_log
|
--disable_query_log
|
||||||
--error ER_RDB_STATUS_GENERAL
|
--error ER_GET_ERRMSG
|
||||||
eval SET GLOBAL ROCKSDB_CREATE_CHECKPOINT = '$checkpoint';
|
eval SET GLOBAL ROCKSDB_CREATE_CHECKPOINT = '$checkpoint';
|
||||||
--enable_query_log
|
--enable_query_log
|
||||||
--enable_result_log
|
--enable_result_log
|
||||||
|
@@ -83,5 +83,18 @@ SHOW ENGINE rocksdb TRANSACTION STATUS;
|
|||||||
|
|
||||||
ROLLBACK;
|
ROLLBACK;
|
||||||
|
|
||||||
|
# Check if explicit snapshots are correctly populated
|
||||||
|
START TRANSACTION WITH SHARED ROCKSDB SNAPSHOT;
|
||||||
|
--replace_column 2 # 3 #
|
||||||
|
SHOW ENGINE rocksdb STATUS;
|
||||||
|
ROLLBACK;
|
||||||
|
CREATE EXPLICIT rocksdb SNAPSHOT;
|
||||||
|
--replace_column 2 # 3 #
|
||||||
|
SHOW ENGINE rocksdb STATUS;
|
||||||
|
RELEASE EXPLICIT rocksdb SNAPSHOT;
|
||||||
|
--replace_column 2 # 3 #
|
||||||
|
SHOW ENGINE rocksdb STATUS;
|
||||||
|
|
||||||
|
|
||||||
# Restore old values
|
# Restore old values
|
||||||
SET GLOBAL rocksdb_max_background_jobs= @save.rocksdb_max_background_jobs;
|
SET GLOBAL rocksdb_max_background_jobs= @save.rocksdb_max_background_jobs;
|
||||||
|
@@ -103,3 +103,56 @@ update t1 set id=115 where id=3;
|
|||||||
rollback;
|
rollback;
|
||||||
|
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # #802: MyRocks: Statement rollback doesnt work correctly for nested statements
|
||||||
|
--echo #
|
||||||
|
create table t1 (a varchar(100)) engine=rocksdb;
|
||||||
|
create table t2(a int) engine=rocksdb;
|
||||||
|
insert into t2 values (1), (2);
|
||||||
|
|
||||||
|
create table t3(a varchar(100)) engine=rocksdb;
|
||||||
|
|
||||||
|
delimiter //;
|
||||||
|
create function func() returns varchar(100) deterministic
|
||||||
|
begin
|
||||||
|
insert into t3 values ('func-called');
|
||||||
|
set @a= (select a from t2);
|
||||||
|
return 'func-returned';
|
||||||
|
end;//
|
||||||
|
delimiter ;//
|
||||||
|
|
||||||
|
begin;
|
||||||
|
--error ER_SUBQUERY_NO_1_ROW
|
||||||
|
insert into t1 values (func());
|
||||||
|
select * from t1;
|
||||||
|
--echo # The following must not produce 'func-called':
|
||||||
|
select * from t3;
|
||||||
|
|
||||||
|
rollback;
|
||||||
|
drop function func;
|
||||||
|
drop table t1,t2,t3;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-16710: Slave SQL: Could not execute Update_rows_v1 event with RocksDB and triggers
|
||||||
|
--echo # Issue#857: MyRocks: Incorrect behavior when multiple statements fail inside a transaction
|
||||||
|
--echo #
|
||||||
|
CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=RocksDB;
|
||||||
|
INSERT INTO t1 VALUES (1);
|
||||||
|
|
||||||
|
CREATE TABLE t2 (b INT PRIMARY KEY) ENGINE=RocksDB;
|
||||||
|
|
||||||
|
CREATE TRIGGER tr AFTER INSERT ON t2 FOR EACH ROW INSERT INTO non_existing_table VALUES (NULL);
|
||||||
|
|
||||||
|
BEGIN;
|
||||||
|
DELETE FROM t1;
|
||||||
|
--error 0,ER_NO_SUCH_TABLE
|
||||||
|
INSERT INTO t2 VALUES (1);
|
||||||
|
--error 0,ER_NO_SUCH_TABLE
|
||||||
|
INSERT INTO t2 VALUES (2);
|
||||||
|
--echo # Must return empty result:
|
||||||
|
SELECT * FROM t1;
|
||||||
|
COMMIT;
|
||||||
|
|
||||||
|
drop table t1,t2;
|
||||||
|
|
||||||
|
@@ -8,11 +8,11 @@ connection slave;
|
|||||||
--enable_warnings
|
--enable_warnings
|
||||||
|
|
||||||
connection master;
|
connection master;
|
||||||
create table t1 (a int) engine=rocksdb;
|
create table t1 (a int, b int, primary key (a), unique key (b)) engine=rocksdb;
|
||||||
--disable_query_log
|
--disable_query_log
|
||||||
--let $aa= 0
|
--let $aa= 0
|
||||||
while ($aa < 1000) {
|
while ($aa < 1000) {
|
||||||
eval insert into t1 values ($aa);
|
eval insert into t1 values ($aa, $aa);
|
||||||
--inc $aa
|
--inc $aa
|
||||||
}
|
}
|
||||||
--enable_query_log
|
--enable_query_log
|
||||||
|
@@ -70,3 +70,13 @@ SELECT * FROM t1 ORDER BY pk;
|
|||||||
|
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Issue #830 UPDATE with unique constraint does not work
|
||||||
|
#
|
||||||
|
|
||||||
|
CREATE TABLE t1 (a INT, b CHAR(8), UNIQUE INDEX(a)) ENGINE=RocksDB;
|
||||||
|
INSERT INTO t1 (a,b) VALUES (1,'foo'),(2,'bar');
|
||||||
|
UPDATE t1 SET a=a+100;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
DROP TABLE t1;
|
||||||
|
37
storage/rocksdb/mysql-test/rocksdb/t/use_direct_reads.test
Normal file
37
storage/rocksdb/mysql-test/rocksdb/t/use_direct_reads.test
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
--source include/have_rocksdb.inc
|
||||||
|
|
||||||
|
--perl
|
||||||
|
use Cwd 'abs_path';
|
||||||
|
|
||||||
|
open(FILE, ">", "$ENV{MYSQL_TMP_DIR}/data_in_shm.inc") or die;
|
||||||
|
my $real_path= abs_path($ENV{'MYSQLTEST_VARDIR'});
|
||||||
|
my $in_shm= index($real_path, "/dev/shm") != -1;
|
||||||
|
print FILE "let \$DATA_IN_SHM= $in_shm;\n";
|
||||||
|
close FILE;
|
||||||
|
EOF
|
||||||
|
|
||||||
|
--source $MYSQL_TMP_DIR/data_in_shm.inc
|
||||||
|
--remove_file $MYSQL_TMP_DIR/data_in_shm.inc
|
||||||
|
|
||||||
|
if ($DATA_IN_SHM)
|
||||||
|
{
|
||||||
|
--skip DATADIR is in /dev/shm, possibly due to --mem
|
||||||
|
}
|
||||||
|
|
||||||
|
--echo Checking direct reads
|
||||||
|
--let $_mysqld_option=--rocksdb_use_direct_reads=1
|
||||||
|
--source include/restart_mysqld_with_option.inc
|
||||||
|
|
||||||
|
CREATE TABLE t1 (pk INT PRIMARY KEY DEFAULT '0', a INT(11), b CHAR(8)) ENGINE=rocksdb;
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
INSERT INTO t1 VALUES (1, 1,'a');
|
||||||
|
INSERT INTO t1 (a,b) VALUES (2,'b');
|
||||||
|
set global rocksdb_force_flush_memtable_now=1;
|
||||||
|
--sorted_result
|
||||||
|
SELECT a,b FROM t1;
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
# cleanup
|
||||||
|
--let _$mysqld_option=
|
||||||
|
--source include/restart_mysqld.inc
|
||||||
|
|
@@ -20,6 +20,8 @@ CREATE TABLE t2 (pk int primary key) ENGINE=ROCKSDB PARTITION BY KEY(pk) PARTITI
|
|||||||
# server until it is told to
|
# server until it is told to
|
||||||
--let $_server_id= `SELECT @@server_id`
|
--let $_server_id= `SELECT @@server_id`
|
||||||
--let $_expect_file_name= $MYSQLTEST_VARDIR/tmp/mysqld.$_server_id.expect
|
--let $_expect_file_name= $MYSQLTEST_VARDIR/tmp/mysqld.$_server_id.expect
|
||||||
|
--let LOG=$MYSQLTEST_VARDIR/tmp/validate_datadic.err
|
||||||
|
|
||||||
--exec echo "wait" >$_expect_file_name
|
--exec echo "wait" >$_expect_file_name
|
||||||
|
|
||||||
# Send shutdown to the connected server and give it 10 seconds to die before
|
# Send shutdown to the connected server and give it 10 seconds to die before
|
||||||
@@ -43,15 +45,12 @@ shutdown_server 10;
|
|||||||
--exec echo "wait" >$_expect_file_name
|
--exec echo "wait" >$_expect_file_name
|
||||||
shutdown_server 10;
|
shutdown_server 10;
|
||||||
|
|
||||||
# Clear the log
|
|
||||||
--exec echo "" >$MYSQLTEST_VARDIR/log/mysqld.1.err
|
|
||||||
|
|
||||||
# Rename the file
|
# Rename the file
|
||||||
--exec mv $MYSQLTEST_VARDIR/mysqld.1/data/test/t1.frm $MYSQLTEST_VARDIR/mysqld.1/data/test/t1.frm.tmp
|
--exec mv $MYSQLTEST_VARDIR/mysqld.1/data/test/t1.frm $MYSQLTEST_VARDIR/mysqld.1/data/test/t1.frm.tmp
|
||||||
--exec mv $MYSQLTEST_VARDIR/mysqld.1/data/test/t2.frm $MYSQLTEST_VARDIR/mysqld.1/data/test/t2.frm.tmp
|
--exec mv $MYSQLTEST_VARDIR/mysqld.1/data/test/t2.frm $MYSQLTEST_VARDIR/mysqld.1/data/test/t2.frm.tmp
|
||||||
|
|
||||||
# Attempt to restart the server
|
# Attempt to restart the server
|
||||||
--exec echo "restart:--rocksdb_validate_tables=2" >$_expect_file_name
|
--exec echo "restart:--rocksdb_validate_tables=2 --log-error=$LOG" >$_expect_file_name
|
||||||
--sleep 5
|
--sleep 5
|
||||||
|
|
||||||
--enable_reconnect
|
--enable_reconnect
|
||||||
@@ -60,14 +59,16 @@ shutdown_server 10;
|
|||||||
|
|
||||||
# We should now have an error message
|
# We should now have an error message
|
||||||
--exec echo "Expect errors that we are missing two .frm files"
|
--exec echo "Expect errors that we are missing two .frm files"
|
||||||
--exec grep "Schema mismatch" $MYSQLTEST_VARDIR/log/mysqld.1.err | cut -d] -f2
|
--let SEARCH_FILE=$LOG
|
||||||
|
--let SEARCH_PATTERN=RocksDB: Schema mismatch - Table test.t1 is registered in RocksDB but does not have a .frm file
|
||||||
|
--source include/search_pattern_in_file.inc
|
||||||
|
--let SEARCH_PATTERN=RocksDB: Schema mismatch - Table test.t2 is registered in RocksDB but does not have a .frm file
|
||||||
|
--source include/search_pattern_in_file.inc
|
||||||
|
|
||||||
# Now shut down again and rename one the .frm file back and make a copy of it
|
# Now shut down again and rename one the .frm file back and make a copy of it
|
||||||
--exec echo "wait" >$_expect_file_name
|
--exec echo "wait" >$_expect_file_name
|
||||||
shutdown_server 10;
|
shutdown_server 10;
|
||||||
|
--remove_file $LOG
|
||||||
# Clear the log
|
|
||||||
--exec echo "" >$MYSQLTEST_VARDIR/log/mysqld.1.err
|
|
||||||
|
|
||||||
# Rename the file
|
# Rename the file
|
||||||
--exec mv $MYSQLTEST_VARDIR/mysqld.1/data/test/t1.frm.tmp $MYSQLTEST_VARDIR/mysqld.1/data/test/t1.frm
|
--exec mv $MYSQLTEST_VARDIR/mysqld.1/data/test/t1.frm.tmp $MYSQLTEST_VARDIR/mysqld.1/data/test/t1.frm
|
||||||
@@ -75,7 +76,7 @@ shutdown_server 10;
|
|||||||
--exec cp $MYSQLTEST_VARDIR/mysqld.1/data/test/t1.frm $MYSQLTEST_VARDIR/mysqld.1/data/test/t1_dummy.frm
|
--exec cp $MYSQLTEST_VARDIR/mysqld.1/data/test/t1.frm $MYSQLTEST_VARDIR/mysqld.1/data/test/t1_dummy.frm
|
||||||
|
|
||||||
# Attempt to restart the server
|
# Attempt to restart the server
|
||||||
--exec echo "restart:--rocksdb_validate_tables=2" >$_expect_file_name
|
--exec echo "restart:--rocksdb_validate_tables=2 --log-error=$LOG" >$_expect_file_name
|
||||||
--sleep 5
|
--sleep 5
|
||||||
|
|
||||||
--enable_reconnect
|
--enable_reconnect
|
||||||
@@ -84,18 +85,22 @@ shutdown_server 10;
|
|||||||
|
|
||||||
# We should now have an error message for the second case
|
# We should now have an error message for the second case
|
||||||
--exec echo "Expect an error that we have an extra .frm file"
|
--exec echo "Expect an error that we have an extra .frm file"
|
||||||
--exec grep "Schema mismatch" $MYSQLTEST_VARDIR/log/mysqld.1.err | cut -d] -f2
|
--let SEARCH_FILE=$LOG
|
||||||
|
--let SEARCH_PATTERN=Schema mismatch - A .frm file exists for table test.t1_dummy, but that table is not registered in RocksDB
|
||||||
|
--source include/search_pattern_in_file.inc
|
||||||
|
|
||||||
# Shut down an clean up
|
# Shut down an clean up
|
||||||
--exec echo "wait" >$_expect_file_name
|
--exec echo "wait" >$_expect_file_name
|
||||||
shutdown_server 10;
|
shutdown_server 10;
|
||||||
--exec echo "" >$MYSQLTEST_VARDIR/log/mysqld.1.err
|
|
||||||
--exec rm $MYSQLTEST_VARDIR/mysqld.1/data/test/t1_dummy.frm
|
--exec rm $MYSQLTEST_VARDIR/mysqld.1/data/test/t1_dummy.frm
|
||||||
--exec echo "restart" >$_expect_file_name
|
--exec echo "restart" >$_expect_file_name
|
||||||
--enable_reconnect
|
--enable_reconnect
|
||||||
--source include/wait_until_connected_again.inc
|
--source include/wait_until_connected_again.inc
|
||||||
--disable_reconnect
|
--disable_reconnect
|
||||||
|
|
||||||
|
# Remove log file
|
||||||
|
--remove_file $LOG
|
||||||
|
|
||||||
--disable_warnings
|
--disable_warnings
|
||||||
DROP TABLE t1, t2;
|
DROP TABLE t1, t2;
|
||||||
--enable_warnings
|
--enable_warnings
|
||||||
|
@@ -1,2 +1,8 @@
|
|||||||
[row]
|
[row-write-committed]
|
||||||
binlog-format=row
|
binlog-format=row
|
||||||
|
rocksdb_write_policy=write_committed
|
||||||
|
|
||||||
|
[row-write-prepared]
|
||||||
|
binlog-format=row
|
||||||
|
rocksdb_write_policy=write_prepared
|
||||||
|
rocksdb_commit_time_batch_for_recovery=on
|
||||||
|
@@ -0,0 +1,62 @@
|
|||||||
|
include/master-slave.inc
|
||||||
|
Warnings:
|
||||||
|
Note #### Sending passwords in plain text without SSL/TLS is extremely insecure.
|
||||||
|
Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information.
|
||||||
|
[connection master]
|
||||||
|
set @@sql_log_bin = 0;
|
||||||
|
CREATE TABLE `t1` (
|
||||||
|
`a` int(10) unsigned NOT NULL DEFAULT '0',
|
||||||
|
`b` bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||||
|
`c` bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||||
|
`d` bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||||
|
`e` varbinary(64) DEFAULT NULL,
|
||||||
|
`f` int(10) NOT NULL DEFAULT '0',
|
||||||
|
`g` int(10) NOT NULL DEFAULT '0',
|
||||||
|
`h` int(10) unsigned NOT NULL DEFAULT '0',
|
||||||
|
PRIMARY KEY (`a`,`b`),
|
||||||
|
KEY `key1` (`a`, `e`(1)),
|
||||||
|
KEY `key2` (`a`,`h`)
|
||||||
|
) ENGINE=RocksDB;
|
||||||
|
set @@sql_log_bin = 1;
|
||||||
|
set @@sql_log_bin = 0;
|
||||||
|
CREATE TABLE `t1` (
|
||||||
|
`a` int(10) unsigned NOT NULL DEFAULT '0',
|
||||||
|
`b` bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||||
|
`c` bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||||
|
`d` bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||||
|
`e` varbinary(64) DEFAULT NULL,
|
||||||
|
`f` int(10) NOT NULL DEFAULT '0',
|
||||||
|
`g` int(10) NOT NULL DEFAULT '0',
|
||||||
|
`x` TINYINT(3) UNSIGNED DEFAULT NULL,
|
||||||
|
`y` INT(10) DEFAULT NULL,
|
||||||
|
`h` int(10) unsigned NOT NULL DEFAULT '0',
|
||||||
|
PRIMARY KEY (`a`,`b`),
|
||||||
|
KEY `key1` (`a`, `e`(1)),
|
||||||
|
KEY `key2` (`a`,`h`)
|
||||||
|
) ENGINE=RocksDB;
|
||||||
|
set @@sql_log_bin = 1;
|
||||||
|
INSERT INTO t1 VALUES (1, 1, 1, 1, 'a', 1, 1, 1);
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a b c d e f g h
|
||||||
|
1 1 1 1 a 1 1 1
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a b c d e f g x y h
|
||||||
|
1 1 1 1 a 1 1 NULL NULL 1
|
||||||
|
UPDATE t1 SET h = 10 WHERE h = 1;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a b c d e f g h
|
||||||
|
1 1 1 1 a 1 1 10
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a b c d e f g x y h
|
||||||
|
1 1 1 1 a 1 1 NULL NULL 10
|
||||||
|
SELECT COUNT(*) FROM t1 FORCE INDEX (key1) WHERE h = 10 AND a = 1;
|
||||||
|
COUNT(*)
|
||||||
|
1
|
||||||
|
SELECT COUNT(*) FROM t1 FORCE INDEX (key2) WHERE h = 10 AND a = 1;
|
||||||
|
COUNT(*)
|
||||||
|
1
|
||||||
|
SELECT COUNT(*) FROM t1 FORCE INDEX (PRIMARY) WHERE h = 10 AND a = 1;
|
||||||
|
COUNT(*)
|
||||||
|
1
|
||||||
|
DROP TABLE t1;
|
||||||
|
include/rpl_end.inc
|
@@ -0,0 +1,44 @@
|
|||||||
|
include/master-slave.inc
|
||||||
|
Warnings:
|
||||||
|
Note #### Sending passwords in plain text without SSL/TLS is extremely insecure.
|
||||||
|
Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information.
|
||||||
|
[connection master]
|
||||||
|
include/stop_slave.inc
|
||||||
|
set @save.slave_parallel_workers= @@global.slave_parallel_workers;
|
||||||
|
set @save.slave_use_idempotent_for_recovery= @@global.slave_use_idempotent_for_recovery;
|
||||||
|
set @save.mts_dependency_replication= @@global.mts_dependency_replication;
|
||||||
|
set @save.mts_dependency_order_commits= @@global.mts_dependency_order_commits;
|
||||||
|
set @save.debug= @@global.debug;
|
||||||
|
set @@global.slave_parallel_workers= 2;
|
||||||
|
set @@global.slave_use_idempotent_for_recovery= YES;
|
||||||
|
set @@global.mts_dependency_replication= STMT;
|
||||||
|
set @@global.mts_dependency_order_commits= false;
|
||||||
|
set @@global.debug= '+d,dbug.dep_wait_before_update_execution';
|
||||||
|
include/start_slave.inc
|
||||||
|
create table t1 (a int primary key, b int unique key) engine = rocksdb;
|
||||||
|
insert into t1 values(1, 1);
|
||||||
|
include/sync_slave_sql_with_master.inc
|
||||||
|
include/stop_slave.inc
|
||||||
|
update t1 set b = 2 where a = 1;
|
||||||
|
insert into t1 values(2, 1);
|
||||||
|
include/start_slave.inc
|
||||||
|
set debug_sync="now wait_for signal.reached";
|
||||||
|
select * from t1;
|
||||||
|
a b
|
||||||
|
1 1
|
||||||
|
set debug_sync="now signal signal.done";
|
||||||
|
include/sync_slave_sql_with_master.inc
|
||||||
|
select * from t1;
|
||||||
|
a b
|
||||||
|
2 1
|
||||||
|
1 2
|
||||||
|
drop table t1;
|
||||||
|
include/sync_slave_sql_with_master.inc
|
||||||
|
include/stop_slave.inc
|
||||||
|
set @@global.slave_parallel_workers= @save.slave_parallel_workers;
|
||||||
|
set @@global.mts_dependency_replication= @save.mts_dependency_replication;
|
||||||
|
set @@global.slave_use_idempotent_for_recovery= @save.slave_use_idempotent_for_recovery;
|
||||||
|
set @@global.mts_dependency_order_commits= @save.mts_dependency_order_commits;
|
||||||
|
set @@global.debug= @save.debug;
|
||||||
|
include/start_slave.inc
|
||||||
|
include/rpl_end.inc
|
@@ -23,9 +23,9 @@ CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=rocksdb;
|
|||||||
INSERT INTO t1 VALUES(1);
|
INSERT INTO t1 VALUES(1);
|
||||||
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
|
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
|
||||||
START TRANSACTION WITH CONSISTENT SNAPSHOT;
|
START TRANSACTION WITH CONSISTENT SNAPSHOT;
|
||||||
ERROR HY000: Only REPEATABLE READ isolation level is supported for START TRANSACTION WITH CONSISTENT SNAPSHOT in RocksDB Storage Engine.
|
ERROR HY000: Only REPEATABLE READ isolation level is supported for START TRANSACTION WITH CONSISTENT|SHARED|EXISTING SNAPSHOT in RocksDB Storage Engine.
|
||||||
START TRANSACTION WITH CONSISTENT ROCKSDB SNAPSHOT;
|
START TRANSACTION WITH CONSISTENT ROCKSDB SNAPSHOT;
|
||||||
ERROR HY000: Only REPEATABLE READ isolation level is supported for START TRANSACTION WITH CONSISTENT SNAPSHOT in RocksDB Storage Engine.
|
ERROR HY000: Only REPEATABLE READ isolation level is supported for START TRANSACTION WITH CONSISTENT|SHARED|EXISTING SNAPSHOT in RocksDB Storage Engine.
|
||||||
ROLLBACK;
|
ROLLBACK;
|
||||||
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
|
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
|
||||||
START TRANSACTION WITH CONSISTENT ROCKSDB SNAPSHOT;
|
START TRANSACTION WITH CONSISTENT ROCKSDB SNAPSHOT;
|
||||||
|
@@ -42,7 +42,7 @@ select * from mysql.slave_gtid_info;
|
|||||||
|
|
||||||
F=`ls -t $slave_data_dir/.rocksdb/*.log | head -n 1`
|
F=`ls -t $slave_data_dir/.rocksdb/*.log | head -n 1`
|
||||||
SIZE=`stat -c %s $F`
|
SIZE=`stat -c %s $F`
|
||||||
NEW_SIZE=`expr $SIZE - 10`
|
NEW_SIZE=`expr $SIZE - 30`
|
||||||
truncate -s $NEW_SIZE $F
|
truncate -s $NEW_SIZE $F
|
||||||
rc=$?
|
rc=$?
|
||||||
if [[ $rc != 0 ]]; then
|
if [[ $rc != 0 ]]; then
|
||||||
|
@@ -0,0 +1,13 @@
|
|||||||
|
!include include/default_mysqld.cnf
|
||||||
|
|
||||||
|
[mysqld.1]
|
||||||
|
binlog_row_image = COMPLETE
|
||||||
|
log_column_names= ON
|
||||||
|
|
||||||
|
[mysqld.2]
|
||||||
|
binlog_row_image = COMPLETE
|
||||||
|
log_column_names= ON
|
||||||
|
|
||||||
|
[ENV]
|
||||||
|
SERVER_MYPORT_1= @mysqld.1.port
|
||||||
|
SERVER_MYPORT_2= @mysqld.2.port
|
@@ -0,0 +1,69 @@
|
|||||||
|
source include/master-slave.inc;
|
||||||
|
source include/have_binlog_format_row.inc;
|
||||||
|
|
||||||
|
# Create a table with SKs on master
|
||||||
|
connection master;
|
||||||
|
set @@sql_log_bin = 0;
|
||||||
|
CREATE TABLE `t1` (
|
||||||
|
`a` int(10) unsigned NOT NULL DEFAULT '0',
|
||||||
|
`b` bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||||
|
`c` bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||||
|
`d` bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||||
|
`e` varbinary(64) DEFAULT NULL,
|
||||||
|
`f` int(10) NOT NULL DEFAULT '0',
|
||||||
|
`g` int(10) NOT NULL DEFAULT '0',
|
||||||
|
`h` int(10) unsigned NOT NULL DEFAULT '0',
|
||||||
|
PRIMARY KEY (`a`,`b`),
|
||||||
|
KEY `key1` (`a`, `e`(1)),
|
||||||
|
KEY `key2` (`a`,`h`)
|
||||||
|
) ENGINE=RocksDB;
|
||||||
|
set @@sql_log_bin = 1;
|
||||||
|
|
||||||
|
# Create same table on slaves but with two extra columns in the middle (x, y)
|
||||||
|
connection slave;
|
||||||
|
set @@sql_log_bin = 0;
|
||||||
|
CREATE TABLE `t1` (
|
||||||
|
`a` int(10) unsigned NOT NULL DEFAULT '0',
|
||||||
|
`b` bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||||
|
`c` bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||||
|
`d` bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||||
|
`e` varbinary(64) DEFAULT NULL,
|
||||||
|
`f` int(10) NOT NULL DEFAULT '0',
|
||||||
|
`g` int(10) NOT NULL DEFAULT '0',
|
||||||
|
`x` TINYINT(3) UNSIGNED DEFAULT NULL,
|
||||||
|
`y` INT(10) DEFAULT NULL,
|
||||||
|
`h` int(10) unsigned NOT NULL DEFAULT '0',
|
||||||
|
PRIMARY KEY (`a`,`b`),
|
||||||
|
KEY `key1` (`a`, `e`(1)),
|
||||||
|
KEY `key2` (`a`,`h`)
|
||||||
|
) ENGINE=RocksDB;
|
||||||
|
set @@sql_log_bin = 1;
|
||||||
|
|
||||||
|
# Insert something in the table
|
||||||
|
connection master;
|
||||||
|
INSERT INTO t1 VALUES (1, 1, 1, 1, 'a', 1, 1, 1);
|
||||||
|
SELECT * FROM t1;
|
||||||
|
sync_slave_with_master;
|
||||||
|
|
||||||
|
connection slave;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
|
||||||
|
# Update a column that belongs to an SK
|
||||||
|
connection master;
|
||||||
|
UPDATE t1 SET h = 10 WHERE h = 1;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
sync_slave_with_master;
|
||||||
|
|
||||||
|
# Check if all keys are updated on the slave
|
||||||
|
connection slave;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
SELECT COUNT(*) FROM t1 FORCE INDEX (key1) WHERE h = 10 AND a = 1;
|
||||||
|
SELECT COUNT(*) FROM t1 FORCE INDEX (key2) WHERE h = 10 AND a = 1;
|
||||||
|
SELECT COUNT(*) FROM t1 FORCE INDEX (PRIMARY) WHERE h = 10 AND a = 1;
|
||||||
|
|
||||||
|
# Cleanup
|
||||||
|
connection master;
|
||||||
|
DROP TABLE t1;
|
||||||
|
sync_slave_with_master;
|
||||||
|
|
||||||
|
source include/rpl_end.inc;
|
@@ -0,0 +1,64 @@
|
|||||||
|
# RocksDB clone of rpl_mts.rpl_mts_dependency_unique_key_conflicts
|
||||||
|
source include/have_rocksdb.inc;
|
||||||
|
source include/have_debug_sync.inc;
|
||||||
|
source include/master-slave.inc;
|
||||||
|
|
||||||
|
connection slave;
|
||||||
|
source include/stop_slave.inc;
|
||||||
|
set @save.slave_parallel_workers= @@global.slave_parallel_workers;
|
||||||
|
set @save.slave_use_idempotent_for_recovery= @@global.slave_use_idempotent_for_recovery;
|
||||||
|
set @save.mts_dependency_replication= @@global.mts_dependency_replication;
|
||||||
|
set @save.mts_dependency_order_commits= @@global.mts_dependency_order_commits;
|
||||||
|
set @save.debug= @@global.debug;
|
||||||
|
set @@global.slave_parallel_workers= 2;
|
||||||
|
set @@global.slave_use_idempotent_for_recovery= YES;
|
||||||
|
set @@global.mts_dependency_replication= STMT;
|
||||||
|
set @@global.mts_dependency_order_commits= false;
|
||||||
|
set @@global.debug= '+d,dbug.dep_wait_before_update_execution';
|
||||||
|
source include/start_slave.inc;
|
||||||
|
|
||||||
|
connection master;
|
||||||
|
create table t1 (a int primary key, b int unique key) engine = rocksdb;
|
||||||
|
insert into t1 values(1, 1);
|
||||||
|
source include/sync_slave_sql_with_master.inc;
|
||||||
|
source include/stop_slave.inc;
|
||||||
|
|
||||||
|
connection master;
|
||||||
|
update t1 set b = 2 where a = 1; # this will stall on slave due to dbug_sync
|
||||||
|
insert into t1 values(2, 1); # this should wait for the update to finish
|
||||||
|
|
||||||
|
connection slave;
|
||||||
|
source include/start_slave.inc;
|
||||||
|
# wait till one of the workers reach the point just before execution of update
|
||||||
|
set debug_sync="now wait_for signal.reached";
|
||||||
|
|
||||||
|
# wait till the other worker is waiting after executing the table map for the
|
||||||
|
# insert
|
||||||
|
let $wait_condition=
|
||||||
|
select count(*)= 1 from information_schema.processlist
|
||||||
|
where state = 'Waiting for dependencies to be satisfied';
|
||||||
|
source include/wait_condition.inc;
|
||||||
|
|
||||||
|
select * from t1;
|
||||||
|
set debug_sync="now signal signal.done";
|
||||||
|
|
||||||
|
connection master;
|
||||||
|
source include/sync_slave_sql_with_master.inc;
|
||||||
|
|
||||||
|
connection slave;
|
||||||
|
select * from t1;
|
||||||
|
|
||||||
|
# Cleanup
|
||||||
|
connection master;
|
||||||
|
drop table t1;
|
||||||
|
source include/sync_slave_sql_with_master.inc;
|
||||||
|
connection slave;
|
||||||
|
source include/stop_slave.inc;
|
||||||
|
set @@global.slave_parallel_workers= @save.slave_parallel_workers;
|
||||||
|
set @@global.mts_dependency_replication= @save.mts_dependency_replication;
|
||||||
|
set @@global.slave_use_idempotent_for_recovery= @save.slave_use_idempotent_for_recovery;
|
||||||
|
set @@global.mts_dependency_order_commits= @save.mts_dependency_order_commits;
|
||||||
|
set @@global.debug= @save.debug;
|
||||||
|
source include/start_slave.inc;
|
||||||
|
|
||||||
|
source include/rpl_end.inc;
|
@@ -1,6 +1,7 @@
|
|||||||
--source include/have_binlog_format_row.inc
|
--source include/have_binlog_format_row.inc
|
||||||
--source include/have_rocksdb.inc
|
--source include/have_rocksdb.inc
|
||||||
--source include/have_debug.inc
|
--source include/have_debug.inc
|
||||||
|
--source include/not_valgrind.inc
|
||||||
|
|
||||||
--disable_warnings
|
--disable_warnings
|
||||||
DROP TABLE IF EXISTS t1;
|
DROP TABLE IF EXISTS t1;
|
||||||
|
5
storage/rocksdb/mysql-test/rocksdb_stress/combinations
Normal file
5
storage/rocksdb/mysql-test/rocksdb_stress/combinations
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
[write_committed]
|
||||||
|
rocksdb_write_policy=write_committed
|
||||||
|
|
||||||
|
[write_prepared]
|
||||||
|
rocksdb_write_policy=write_prepared
|
@@ -1,7 +1,85 @@
|
|||||||
|
CREATE TABLE valid_values (value varchar(255)) ENGINE=myisam;
|
||||||
|
INSERT INTO valid_values VALUES(65536);
|
||||||
|
INSERT INTO valid_values VALUES(1024);
|
||||||
|
INSERT INTO valid_values VALUES(1*1024*1024);
|
||||||
|
CREATE TABLE invalid_values (value varchar(255)) ENGINE=myisam;
|
||||||
|
INSERT INTO invalid_values VALUES('\'aaa\'');
|
||||||
|
INSERT INTO invalid_values VALUES('\'bbb\'');
|
||||||
|
INSERT INTO invalid_values VALUES('\'-1\'');
|
||||||
|
INSERT INTO invalid_values VALUES('\'101\'');
|
||||||
|
INSERT INTO invalid_values VALUES('\'484436\'');
|
||||||
SET @start_global_value = @@global.ROCKSDB_BLOCK_CACHE_SIZE;
|
SET @start_global_value = @@global.ROCKSDB_BLOCK_CACHE_SIZE;
|
||||||
SELECT @start_global_value;
|
SELECT @start_global_value;
|
||||||
@start_global_value
|
@start_global_value
|
||||||
536870912
|
536870912
|
||||||
"Trying to set variable @@global.ROCKSDB_BLOCK_CACHE_SIZE to 444. It should fail because it is readonly."
|
'# Setting to valid values in global scope#'
|
||||||
SET @@global.ROCKSDB_BLOCK_CACHE_SIZE = 444;
|
"Trying to set variable @@global.ROCKSDB_BLOCK_CACHE_SIZE to 65536"
|
||||||
ERROR HY000: Variable 'rocksdb_block_cache_size' is a read only variable
|
SET @@global.ROCKSDB_BLOCK_CACHE_SIZE = 65536;
|
||||||
|
SELECT @@global.ROCKSDB_BLOCK_CACHE_SIZE;
|
||||||
|
@@global.ROCKSDB_BLOCK_CACHE_SIZE
|
||||||
|
65536
|
||||||
|
"Setting the global scope variable back to default"
|
||||||
|
SET @@global.ROCKSDB_BLOCK_CACHE_SIZE = DEFAULT;
|
||||||
|
SELECT @@global.ROCKSDB_BLOCK_CACHE_SIZE;
|
||||||
|
@@global.ROCKSDB_BLOCK_CACHE_SIZE
|
||||||
|
536870912
|
||||||
|
"Trying to set variable @@global.ROCKSDB_BLOCK_CACHE_SIZE to 1024"
|
||||||
|
SET @@global.ROCKSDB_BLOCK_CACHE_SIZE = 1024;
|
||||||
|
SELECT @@global.ROCKSDB_BLOCK_CACHE_SIZE;
|
||||||
|
@@global.ROCKSDB_BLOCK_CACHE_SIZE
|
||||||
|
1024
|
||||||
|
"Setting the global scope variable back to default"
|
||||||
|
SET @@global.ROCKSDB_BLOCK_CACHE_SIZE = DEFAULT;
|
||||||
|
SELECT @@global.ROCKSDB_BLOCK_CACHE_SIZE;
|
||||||
|
@@global.ROCKSDB_BLOCK_CACHE_SIZE
|
||||||
|
536870912
|
||||||
|
"Trying to set variable @@global.ROCKSDB_BLOCK_CACHE_SIZE to 1048576"
|
||||||
|
SET @@global.ROCKSDB_BLOCK_CACHE_SIZE = 1048576;
|
||||||
|
SELECT @@global.ROCKSDB_BLOCK_CACHE_SIZE;
|
||||||
|
@@global.ROCKSDB_BLOCK_CACHE_SIZE
|
||||||
|
1048576
|
||||||
|
"Setting the global scope variable back to default"
|
||||||
|
SET @@global.ROCKSDB_BLOCK_CACHE_SIZE = DEFAULT;
|
||||||
|
SELECT @@global.ROCKSDB_BLOCK_CACHE_SIZE;
|
||||||
|
@@global.ROCKSDB_BLOCK_CACHE_SIZE
|
||||||
|
536870912
|
||||||
|
"Trying to set variable @@session.ROCKSDB_BLOCK_CACHE_SIZE to 444. It should fail because it is not session."
|
||||||
|
SET @@session.ROCKSDB_BLOCK_CACHE_SIZE = 444;
|
||||||
|
ERROR HY000: Variable 'rocksdb_block_cache_size' is a GLOBAL variable and should be set with SET GLOBAL
|
||||||
|
'# Testing with invalid values in global scope #'
|
||||||
|
"Trying to set variable @@global.ROCKSDB_BLOCK_CACHE_SIZE to 'aaa'"
|
||||||
|
SET @@global.ROCKSDB_BLOCK_CACHE_SIZE = 'aaa';
|
||||||
|
Got one of the listed errors
|
||||||
|
SELECT @@global.ROCKSDB_BLOCK_CACHE_SIZE;
|
||||||
|
@@global.ROCKSDB_BLOCK_CACHE_SIZE
|
||||||
|
536870912
|
||||||
|
"Trying to set variable @@global.ROCKSDB_BLOCK_CACHE_SIZE to 'bbb'"
|
||||||
|
SET @@global.ROCKSDB_BLOCK_CACHE_SIZE = 'bbb';
|
||||||
|
Got one of the listed errors
|
||||||
|
SELECT @@global.ROCKSDB_BLOCK_CACHE_SIZE;
|
||||||
|
@@global.ROCKSDB_BLOCK_CACHE_SIZE
|
||||||
|
536870912
|
||||||
|
"Trying to set variable @@global.ROCKSDB_BLOCK_CACHE_SIZE to '-1'"
|
||||||
|
SET @@global.ROCKSDB_BLOCK_CACHE_SIZE = '-1';
|
||||||
|
Got one of the listed errors
|
||||||
|
SELECT @@global.ROCKSDB_BLOCK_CACHE_SIZE;
|
||||||
|
@@global.ROCKSDB_BLOCK_CACHE_SIZE
|
||||||
|
536870912
|
||||||
|
"Trying to set variable @@global.ROCKSDB_BLOCK_CACHE_SIZE to '101'"
|
||||||
|
SET @@global.ROCKSDB_BLOCK_CACHE_SIZE = '101';
|
||||||
|
Got one of the listed errors
|
||||||
|
SELECT @@global.ROCKSDB_BLOCK_CACHE_SIZE;
|
||||||
|
@@global.ROCKSDB_BLOCK_CACHE_SIZE
|
||||||
|
536870912
|
||||||
|
"Trying to set variable @@global.ROCKSDB_BLOCK_CACHE_SIZE to '484436'"
|
||||||
|
SET @@global.ROCKSDB_BLOCK_CACHE_SIZE = '484436';
|
||||||
|
Got one of the listed errors
|
||||||
|
SELECT @@global.ROCKSDB_BLOCK_CACHE_SIZE;
|
||||||
|
@@global.ROCKSDB_BLOCK_CACHE_SIZE
|
||||||
|
536870912
|
||||||
|
SET @@global.ROCKSDB_BLOCK_CACHE_SIZE = @start_global_value;
|
||||||
|
SELECT @@global.ROCKSDB_BLOCK_CACHE_SIZE;
|
||||||
|
@@global.ROCKSDB_BLOCK_CACHE_SIZE
|
||||||
|
536870912
|
||||||
|
DROP TABLE valid_values;
|
||||||
|
DROP TABLE invalid_values;
|
||||||
|
@@ -0,0 +1,100 @@
|
|||||||
|
CREATE TABLE valid_values (value varchar(255)) ENGINE=myisam;
|
||||||
|
INSERT INTO valid_values VALUES(1);
|
||||||
|
INSERT INTO valid_values VALUES(0);
|
||||||
|
INSERT INTO valid_values VALUES('on');
|
||||||
|
CREATE TABLE invalid_values (value varchar(255)) ENGINE=myisam;
|
||||||
|
INSERT INTO invalid_values VALUES('\'aaa\'');
|
||||||
|
INSERT INTO invalid_values VALUES('\'bbb\'');
|
||||||
|
SET @start_global_value = @@global.ROCKSDB_BULK_LOAD_ALLOW_SK;
|
||||||
|
SELECT @start_global_value;
|
||||||
|
@start_global_value
|
||||||
|
0
|
||||||
|
SET @start_session_value = @@session.ROCKSDB_BULK_LOAD_ALLOW_SK;
|
||||||
|
SELECT @start_session_value;
|
||||||
|
@start_session_value
|
||||||
|
0
|
||||||
|
'# Setting to valid values in global scope#'
|
||||||
|
"Trying to set variable @@global.ROCKSDB_BULK_LOAD_ALLOW_SK to 1"
|
||||||
|
SET @@global.ROCKSDB_BULK_LOAD_ALLOW_SK = 1;
|
||||||
|
SELECT @@global.ROCKSDB_BULK_LOAD_ALLOW_SK;
|
||||||
|
@@global.ROCKSDB_BULK_LOAD_ALLOW_SK
|
||||||
|
1
|
||||||
|
"Setting the global scope variable back to default"
|
||||||
|
SET @@global.ROCKSDB_BULK_LOAD_ALLOW_SK = DEFAULT;
|
||||||
|
SELECT @@global.ROCKSDB_BULK_LOAD_ALLOW_SK;
|
||||||
|
@@global.ROCKSDB_BULK_LOAD_ALLOW_SK
|
||||||
|
0
|
||||||
|
"Trying to set variable @@global.ROCKSDB_BULK_LOAD_ALLOW_SK to 0"
|
||||||
|
SET @@global.ROCKSDB_BULK_LOAD_ALLOW_SK = 0;
|
||||||
|
SELECT @@global.ROCKSDB_BULK_LOAD_ALLOW_SK;
|
||||||
|
@@global.ROCKSDB_BULK_LOAD_ALLOW_SK
|
||||||
|
0
|
||||||
|
"Setting the global scope variable back to default"
|
||||||
|
SET @@global.ROCKSDB_BULK_LOAD_ALLOW_SK = DEFAULT;
|
||||||
|
SELECT @@global.ROCKSDB_BULK_LOAD_ALLOW_SK;
|
||||||
|
@@global.ROCKSDB_BULK_LOAD_ALLOW_SK
|
||||||
|
0
|
||||||
|
"Trying to set variable @@global.ROCKSDB_BULK_LOAD_ALLOW_SK to on"
|
||||||
|
SET @@global.ROCKSDB_BULK_LOAD_ALLOW_SK = on;
|
||||||
|
SELECT @@global.ROCKSDB_BULK_LOAD_ALLOW_SK;
|
||||||
|
@@global.ROCKSDB_BULK_LOAD_ALLOW_SK
|
||||||
|
1
|
||||||
|
"Setting the global scope variable back to default"
|
||||||
|
SET @@global.ROCKSDB_BULK_LOAD_ALLOW_SK = DEFAULT;
|
||||||
|
SELECT @@global.ROCKSDB_BULK_LOAD_ALLOW_SK;
|
||||||
|
@@global.ROCKSDB_BULK_LOAD_ALLOW_SK
|
||||||
|
0
|
||||||
|
'# Setting to valid values in session scope#'
|
||||||
|
"Trying to set variable @@session.ROCKSDB_BULK_LOAD_ALLOW_SK to 1"
|
||||||
|
SET @@session.ROCKSDB_BULK_LOAD_ALLOW_SK = 1;
|
||||||
|
SELECT @@session.ROCKSDB_BULK_LOAD_ALLOW_SK;
|
||||||
|
@@session.ROCKSDB_BULK_LOAD_ALLOW_SK
|
||||||
|
1
|
||||||
|
"Setting the session scope variable back to default"
|
||||||
|
SET @@session.ROCKSDB_BULK_LOAD_ALLOW_SK = DEFAULT;
|
||||||
|
SELECT @@session.ROCKSDB_BULK_LOAD_ALLOW_SK;
|
||||||
|
@@session.ROCKSDB_BULK_LOAD_ALLOW_SK
|
||||||
|
0
|
||||||
|
"Trying to set variable @@session.ROCKSDB_BULK_LOAD_ALLOW_SK to 0"
|
||||||
|
SET @@session.ROCKSDB_BULK_LOAD_ALLOW_SK = 0;
|
||||||
|
SELECT @@session.ROCKSDB_BULK_LOAD_ALLOW_SK;
|
||||||
|
@@session.ROCKSDB_BULK_LOAD_ALLOW_SK
|
||||||
|
0
|
||||||
|
"Setting the session scope variable back to default"
|
||||||
|
SET @@session.ROCKSDB_BULK_LOAD_ALLOW_SK = DEFAULT;
|
||||||
|
SELECT @@session.ROCKSDB_BULK_LOAD_ALLOW_SK;
|
||||||
|
@@session.ROCKSDB_BULK_LOAD_ALLOW_SK
|
||||||
|
0
|
||||||
|
"Trying to set variable @@session.ROCKSDB_BULK_LOAD_ALLOW_SK to on"
|
||||||
|
SET @@session.ROCKSDB_BULK_LOAD_ALLOW_SK = on;
|
||||||
|
SELECT @@session.ROCKSDB_BULK_LOAD_ALLOW_SK;
|
||||||
|
@@session.ROCKSDB_BULK_LOAD_ALLOW_SK
|
||||||
|
1
|
||||||
|
"Setting the session scope variable back to default"
|
||||||
|
SET @@session.ROCKSDB_BULK_LOAD_ALLOW_SK = DEFAULT;
|
||||||
|
SELECT @@session.ROCKSDB_BULK_LOAD_ALLOW_SK;
|
||||||
|
@@session.ROCKSDB_BULK_LOAD_ALLOW_SK
|
||||||
|
0
|
||||||
|
'# Testing with invalid values in global scope #'
|
||||||
|
"Trying to set variable @@global.ROCKSDB_BULK_LOAD_ALLOW_SK to 'aaa'"
|
||||||
|
SET @@global.ROCKSDB_BULK_LOAD_ALLOW_SK = 'aaa';
|
||||||
|
Got one of the listed errors
|
||||||
|
SELECT @@global.ROCKSDB_BULK_LOAD_ALLOW_SK;
|
||||||
|
@@global.ROCKSDB_BULK_LOAD_ALLOW_SK
|
||||||
|
0
|
||||||
|
"Trying to set variable @@global.ROCKSDB_BULK_LOAD_ALLOW_SK to 'bbb'"
|
||||||
|
SET @@global.ROCKSDB_BULK_LOAD_ALLOW_SK = 'bbb';
|
||||||
|
Got one of the listed errors
|
||||||
|
SELECT @@global.ROCKSDB_BULK_LOAD_ALLOW_SK;
|
||||||
|
@@global.ROCKSDB_BULK_LOAD_ALLOW_SK
|
||||||
|
0
|
||||||
|
SET @@global.ROCKSDB_BULK_LOAD_ALLOW_SK = @start_global_value;
|
||||||
|
SELECT @@global.ROCKSDB_BULK_LOAD_ALLOW_SK;
|
||||||
|
@@global.ROCKSDB_BULK_LOAD_ALLOW_SK
|
||||||
|
0
|
||||||
|
SET @@session.ROCKSDB_BULK_LOAD_ALLOW_SK = @start_session_value;
|
||||||
|
SELECT @@session.ROCKSDB_BULK_LOAD_ALLOW_SK;
|
||||||
|
@@session.ROCKSDB_BULK_LOAD_ALLOW_SK
|
||||||
|
0
|
||||||
|
DROP TABLE valid_values;
|
||||||
|
DROP TABLE invalid_values;
|
@@ -0,0 +1,121 @@
|
|||||||
|
CREATE TABLE valid_values (value varchar(255));
|
||||||
|
INSERT INTO valid_values VALUES(1);
|
||||||
|
INSERT INTO valid_values VALUES(0);
|
||||||
|
INSERT INTO valid_values VALUES('on');
|
||||||
|
INSERT INTO valid_values VALUES('off');
|
||||||
|
CREATE TABLE invalid_values (value varchar(255));
|
||||||
|
INSERT INTO invalid_values VALUES('\'aaa\'');
|
||||||
|
INSERT INTO invalid_values VALUES('\'bbb\'');
|
||||||
|
SET @start_global_value = @@global.ROCKSDB_COMMIT_TIME_BATCH_FOR_RECOVERY;
|
||||||
|
SELECT @start_global_value;
|
||||||
|
@start_global_value
|
||||||
|
0
|
||||||
|
SET @start_session_value = @@session.ROCKSDB_COMMIT_TIME_BATCH_FOR_RECOVERY;
|
||||||
|
SELECT @start_session_value;
|
||||||
|
@start_session_value
|
||||||
|
0
|
||||||
|
'# Setting to valid values in global scope#'
|
||||||
|
"Trying to set variable @@global.ROCKSDB_COMMIT_TIME_BATCH_FOR_RECOVERY to 1"
|
||||||
|
SET @@global.ROCKSDB_COMMIT_TIME_BATCH_FOR_RECOVERY = 1;
|
||||||
|
SELECT @@global.ROCKSDB_COMMIT_TIME_BATCH_FOR_RECOVERY;
|
||||||
|
@@global.ROCKSDB_COMMIT_TIME_BATCH_FOR_RECOVERY
|
||||||
|
1
|
||||||
|
"Setting the global scope variable back to default"
|
||||||
|
SET @@global.ROCKSDB_COMMIT_TIME_BATCH_FOR_RECOVERY = DEFAULT;
|
||||||
|
SELECT @@global.ROCKSDB_COMMIT_TIME_BATCH_FOR_RECOVERY;
|
||||||
|
@@global.ROCKSDB_COMMIT_TIME_BATCH_FOR_RECOVERY
|
||||||
|
0
|
||||||
|
"Trying to set variable @@global.ROCKSDB_COMMIT_TIME_BATCH_FOR_RECOVERY to 0"
|
||||||
|
SET @@global.ROCKSDB_COMMIT_TIME_BATCH_FOR_RECOVERY = 0;
|
||||||
|
SELECT @@global.ROCKSDB_COMMIT_TIME_BATCH_FOR_RECOVERY;
|
||||||
|
@@global.ROCKSDB_COMMIT_TIME_BATCH_FOR_RECOVERY
|
||||||
|
0
|
||||||
|
"Setting the global scope variable back to default"
|
||||||
|
SET @@global.ROCKSDB_COMMIT_TIME_BATCH_FOR_RECOVERY = DEFAULT;
|
||||||
|
SELECT @@global.ROCKSDB_COMMIT_TIME_BATCH_FOR_RECOVERY;
|
||||||
|
@@global.ROCKSDB_COMMIT_TIME_BATCH_FOR_RECOVERY
|
||||||
|
0
|
||||||
|
"Trying to set variable @@global.ROCKSDB_COMMIT_TIME_BATCH_FOR_RECOVERY to on"
|
||||||
|
SET @@global.ROCKSDB_COMMIT_TIME_BATCH_FOR_RECOVERY = on;
|
||||||
|
SELECT @@global.ROCKSDB_COMMIT_TIME_BATCH_FOR_RECOVERY;
|
||||||
|
@@global.ROCKSDB_COMMIT_TIME_BATCH_FOR_RECOVERY
|
||||||
|
1
|
||||||
|
"Setting the global scope variable back to default"
|
||||||
|
SET @@global.ROCKSDB_COMMIT_TIME_BATCH_FOR_RECOVERY = DEFAULT;
|
||||||
|
SELECT @@global.ROCKSDB_COMMIT_TIME_BATCH_FOR_RECOVERY;
|
||||||
|
@@global.ROCKSDB_COMMIT_TIME_BATCH_FOR_RECOVERY
|
||||||
|
0
|
||||||
|
"Trying to set variable @@global.ROCKSDB_COMMIT_TIME_BATCH_FOR_RECOVERY to off"
|
||||||
|
SET @@global.ROCKSDB_COMMIT_TIME_BATCH_FOR_RECOVERY = off;
|
||||||
|
SELECT @@global.ROCKSDB_COMMIT_TIME_BATCH_FOR_RECOVERY;
|
||||||
|
@@global.ROCKSDB_COMMIT_TIME_BATCH_FOR_RECOVERY
|
||||||
|
0
|
||||||
|
"Setting the global scope variable back to default"
|
||||||
|
SET @@global.ROCKSDB_COMMIT_TIME_BATCH_FOR_RECOVERY = DEFAULT;
|
||||||
|
SELECT @@global.ROCKSDB_COMMIT_TIME_BATCH_FOR_RECOVERY;
|
||||||
|
@@global.ROCKSDB_COMMIT_TIME_BATCH_FOR_RECOVERY
|
||||||
|
0
|
||||||
|
'# Setting to valid values in session scope#'
|
||||||
|
"Trying to set variable @@session.ROCKSDB_COMMIT_TIME_BATCH_FOR_RECOVERY to 1"
|
||||||
|
SET @@session.ROCKSDB_COMMIT_TIME_BATCH_FOR_RECOVERY = 1;
|
||||||
|
SELECT @@session.ROCKSDB_COMMIT_TIME_BATCH_FOR_RECOVERY;
|
||||||
|
@@session.ROCKSDB_COMMIT_TIME_BATCH_FOR_RECOVERY
|
||||||
|
1
|
||||||
|
"Setting the session scope variable back to default"
|
||||||
|
SET @@session.ROCKSDB_COMMIT_TIME_BATCH_FOR_RECOVERY = DEFAULT;
|
||||||
|
SELECT @@session.ROCKSDB_COMMIT_TIME_BATCH_FOR_RECOVERY;
|
||||||
|
@@session.ROCKSDB_COMMIT_TIME_BATCH_FOR_RECOVERY
|
||||||
|
0
|
||||||
|
"Trying to set variable @@session.ROCKSDB_COMMIT_TIME_BATCH_FOR_RECOVERY to 0"
|
||||||
|
SET @@session.ROCKSDB_COMMIT_TIME_BATCH_FOR_RECOVERY = 0;
|
||||||
|
SELECT @@session.ROCKSDB_COMMIT_TIME_BATCH_FOR_RECOVERY;
|
||||||
|
@@session.ROCKSDB_COMMIT_TIME_BATCH_FOR_RECOVERY
|
||||||
|
0
|
||||||
|
"Setting the session scope variable back to default"
|
||||||
|
SET @@session.ROCKSDB_COMMIT_TIME_BATCH_FOR_RECOVERY = DEFAULT;
|
||||||
|
SELECT @@session.ROCKSDB_COMMIT_TIME_BATCH_FOR_RECOVERY;
|
||||||
|
@@session.ROCKSDB_COMMIT_TIME_BATCH_FOR_RECOVERY
|
||||||
|
0
|
||||||
|
"Trying to set variable @@session.ROCKSDB_COMMIT_TIME_BATCH_FOR_RECOVERY to on"
|
||||||
|
SET @@session.ROCKSDB_COMMIT_TIME_BATCH_FOR_RECOVERY = on;
|
||||||
|
SELECT @@session.ROCKSDB_COMMIT_TIME_BATCH_FOR_RECOVERY;
|
||||||
|
@@session.ROCKSDB_COMMIT_TIME_BATCH_FOR_RECOVERY
|
||||||
|
1
|
||||||
|
"Setting the session scope variable back to default"
|
||||||
|
SET @@session.ROCKSDB_COMMIT_TIME_BATCH_FOR_RECOVERY = DEFAULT;
|
||||||
|
SELECT @@session.ROCKSDB_COMMIT_TIME_BATCH_FOR_RECOVERY;
|
||||||
|
@@session.ROCKSDB_COMMIT_TIME_BATCH_FOR_RECOVERY
|
||||||
|
0
|
||||||
|
"Trying to set variable @@session.ROCKSDB_COMMIT_TIME_BATCH_FOR_RECOVERY to off"
|
||||||
|
SET @@session.ROCKSDB_COMMIT_TIME_BATCH_FOR_RECOVERY = off;
|
||||||
|
SELECT @@session.ROCKSDB_COMMIT_TIME_BATCH_FOR_RECOVERY;
|
||||||
|
@@session.ROCKSDB_COMMIT_TIME_BATCH_FOR_RECOVERY
|
||||||
|
0
|
||||||
|
"Setting the session scope variable back to default"
|
||||||
|
SET @@session.ROCKSDB_COMMIT_TIME_BATCH_FOR_RECOVERY = DEFAULT;
|
||||||
|
SELECT @@session.ROCKSDB_COMMIT_TIME_BATCH_FOR_RECOVERY;
|
||||||
|
@@session.ROCKSDB_COMMIT_TIME_BATCH_FOR_RECOVERY
|
||||||
|
0
|
||||||
|
'# Testing with invalid values in global scope #'
|
||||||
|
"Trying to set variable @@global.ROCKSDB_COMMIT_TIME_BATCH_FOR_RECOVERY to 'aaa'"
|
||||||
|
SET @@global.ROCKSDB_COMMIT_TIME_BATCH_FOR_RECOVERY = 'aaa';
|
||||||
|
Got one of the listed errors
|
||||||
|
SELECT @@global.ROCKSDB_COMMIT_TIME_BATCH_FOR_RECOVERY;
|
||||||
|
@@global.ROCKSDB_COMMIT_TIME_BATCH_FOR_RECOVERY
|
||||||
|
0
|
||||||
|
"Trying to set variable @@global.ROCKSDB_COMMIT_TIME_BATCH_FOR_RECOVERY to 'bbb'"
|
||||||
|
SET @@global.ROCKSDB_COMMIT_TIME_BATCH_FOR_RECOVERY = 'bbb';
|
||||||
|
Got one of the listed errors
|
||||||
|
SELECT @@global.ROCKSDB_COMMIT_TIME_BATCH_FOR_RECOVERY;
|
||||||
|
@@global.ROCKSDB_COMMIT_TIME_BATCH_FOR_RECOVERY
|
||||||
|
0
|
||||||
|
SET @@global.ROCKSDB_COMMIT_TIME_BATCH_FOR_RECOVERY = @start_global_value;
|
||||||
|
SELECT @@global.ROCKSDB_COMMIT_TIME_BATCH_FOR_RECOVERY;
|
||||||
|
@@global.ROCKSDB_COMMIT_TIME_BATCH_FOR_RECOVERY
|
||||||
|
0
|
||||||
|
SET @@session.ROCKSDB_COMMIT_TIME_BATCH_FOR_RECOVERY = @start_session_value;
|
||||||
|
SELECT @@session.ROCKSDB_COMMIT_TIME_BATCH_FOR_RECOVERY;
|
||||||
|
@@session.ROCKSDB_COMMIT_TIME_BATCH_FOR_RECOVERY
|
||||||
|
0
|
||||||
|
DROP TABLE valid_values;
|
||||||
|
DROP TABLE invalid_values;
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user