Browse Source
Merge branch 'merge-myrocks' of github.com:MariaDB/mergetrees into bb-10.2-mariarocks
Merge branch 'merge-myrocks' of github.com:MariaDB/mergetrees into bb-10.2-mariarocks
Manually resolved a few conflictspull/355/head
87 changed files with 4768 additions and 972 deletions
-
93storage/rocksdb/.clang-format
-
11storage/rocksdb/CMakeLists.txt
-
6storage/rocksdb/build_rocksdb.cmake
-
855storage/rocksdb/ha_rocksdb.cc
-
82storage/rocksdb/ha_rocksdb.h
-
1storage/rocksdb/ha_rocksdb_proto.h
-
19storage/rocksdb/logger.h
-
8storage/rocksdb/mysql-test/rocksdb/r/2pc_group_commit.result
-
21storage/rocksdb/mysql-test/rocksdb/r/add_index_inplace_cardinality.result
-
85storage/rocksdb/mysql-test/rocksdb/r/blind_delete_without_tx_api.result
-
32storage/rocksdb/mysql-test/rocksdb/r/bulk_load.result
-
1storage/rocksdb/mysql-test/rocksdb/r/collation.result
-
2storage/rocksdb/mysql-test/rocksdb/r/fail_system_cf.result
-
2storage/rocksdb/mysql-test/rocksdb/r/handler_basic.result
-
4storage/rocksdb/mysql-test/rocksdb/r/issue290.result
-
32storage/rocksdb/mysql-test/rocksdb/r/issue495.result
-
45storage/rocksdb/mysql-test/rocksdb/r/mysqldump.result
-
665storage/rocksdb/mysql-test/rocksdb/r/partition.result
-
31storage/rocksdb/mysql-test/rocksdb/r/rocksdb.result
-
409storage/rocksdb/mysql-test/rocksdb/r/rocksdb_cf_per_partition.result
-
74storage/rocksdb/mysql-test/rocksdb/r/show_engine.result
-
41storage/rocksdb/mysql-test/rocksdb/r/tbl_opt_data_index_dir.result
-
210storage/rocksdb/mysql-test/rocksdb/r/transaction.result
-
12storage/rocksdb/mysql-test/rocksdb/r/unique_check.result
-
8storage/rocksdb/mysql-test/rocksdb/r/write_sync.result
-
8storage/rocksdb/mysql-test/rocksdb/t/2pc_group_commit.test
-
1storage/rocksdb/mysql-test/rocksdb/t/add_index_inplace_cardinality-master.opt
-
44storage/rocksdb/mysql-test/rocksdb/t/add_index_inplace_cardinality.test
-
11storage/rocksdb/mysql-test/rocksdb/t/blind_delete_without_tx_api.cnf
-
129storage/rocksdb/mysql-test/rocksdb/t/blind_delete_without_tx_api.test
-
4storage/rocksdb/mysql-test/rocksdb/t/bulk_load.test
-
3storage/rocksdb/mysql-test/rocksdb/t/collation.test
-
3storage/rocksdb/mysql-test/rocksdb/t/handler_basic.test
-
2storage/rocksdb/mysql-test/rocksdb/t/issue290.test
-
29storage/rocksdb/mysql-test/rocksdb/t/issue495.test
-
3storage/rocksdb/mysql-test/rocksdb/t/mysqldump.test
-
723storage/rocksdb/mysql-test/rocksdb/t/partition.test
-
4storage/rocksdb/mysql-test/rocksdb/t/persistent_cache.test
-
14storage/rocksdb/mysql-test/rocksdb/t/rocksdb.test
-
494storage/rocksdb/mysql-test/rocksdb/t/rocksdb_cf_per_partition.test
-
4storage/rocksdb/mysql-test/rocksdb/t/show_engine.test
-
56storage/rocksdb/mysql-test/rocksdb/t/tbl_opt_data_index_dir.test
-
13storage/rocksdb/mysql-test/rocksdb/t/transaction_select.inc
-
26storage/rocksdb/mysql-test/rocksdb/t/unique_check.test
-
8storage/rocksdb/mysql-test/rocksdb/t/write_sync.test
-
2storage/rocksdb/mysql-test/rocksdb_rpl/t/rpl_crash_safe_wal_corrupt.cnf
-
2storage/rocksdb/mysql-test/rocksdb_rpl/t/rpl_gtid_crash_safe-master.opt
-
2storage/rocksdb/mysql-test/rocksdb_rpl/t/rpl_gtid_crash_safe-slave.opt
-
2storage/rocksdb/mysql-test/rocksdb_rpl/t/rpl_gtid_crash_safe_wal_corrupt.cnf
-
2storage/rocksdb/mysql-test/rocksdb_rpl/t/rpl_rocksdb_2pc_crash_recover-master.opt
-
100storage/rocksdb/mysql-test/rocksdb_sys_vars/r/rocksdb_blind_delete_primary_key_basic.result
-
1storage/rocksdb/mysql-test/rocksdb_sys_vars/r/rocksdb_compact_cf_basic.result
-
85storage/rocksdb/mysql-test/rocksdb_sys_vars/r/rocksdb_delayed_write_rate_basic.result
-
7storage/rocksdb/mysql-test/rocksdb_sys_vars/r/rocksdb_disabledatasync_basic.result
-
93storage/rocksdb/mysql-test/rocksdb_sys_vars/r/rocksdb_flush_log_at_trx_commit_basic.result
-
6storage/rocksdb/mysql-test/rocksdb_sys_vars/r/rocksdb_flush_memtable_on_analyze_basic.result
-
15storage/rocksdb/mysql-test/rocksdb_sys_vars/r/rocksdb_force_compute_memtable_stats_basic.result
-
100storage/rocksdb/mysql-test/rocksdb_sys_vars/r/rocksdb_master_skip_tx_api_basic.result
-
8storage/rocksdb/mysql-test/rocksdb_sys_vars/r/rocksdb_persistent_cache_size_mb_basic.result
-
10storage/rocksdb/mysql-test/rocksdb_sys_vars/r/rocksdb_wal_recovery_mode_basic.result
-
114storage/rocksdb/mysql-test/rocksdb_sys_vars/r/rocksdb_write_sync_basic.result
-
18storage/rocksdb/mysql-test/rocksdb_sys_vars/t/rocksdb_blind_delete_primary_key_basic.test
-
3storage/rocksdb/mysql-test/rocksdb_sys_vars/t/rocksdb_compact_cf_basic.test
-
22storage/rocksdb/mysql-test/rocksdb_sys_vars/t/rocksdb_delayed_write_rate_basic.test
-
6storage/rocksdb/mysql-test/rocksdb_sys_vars/t/rocksdb_disabledatasync_basic.test
-
18storage/rocksdb/mysql-test/rocksdb_sys_vars/t/rocksdb_flush_log_at_trx_commit_basic.test
-
2storage/rocksdb/mysql-test/rocksdb_sys_vars/t/rocksdb_flush_memtable_on_analyze_basic.test
-
23storage/rocksdb/mysql-test/rocksdb_sys_vars/t/rocksdb_force_compute_memtable_stats_basic.test
-
4storage/rocksdb/mysql-test/rocksdb_sys_vars/t/rocksdb_master_skip_tx_api_basic.test
-
2storage/rocksdb/mysql-test/rocksdb_sys_vars/t/rocksdb_persistent_cache_size_mb_basic.test
-
22storage/rocksdb/properties_collector.cc
-
67storage/rocksdb/rdb_cf_manager.cc
-
252storage/rocksdb/rdb_datadic.cc
-
40storage/rocksdb/rdb_datadic.h
-
10storage/rocksdb/rdb_i_s.cc
-
6storage/rocksdb/rdb_mutex_wrapper.cc
-
113storage/rocksdb/rdb_psi.cc
-
55storage/rocksdb/rdb_psi.h
-
21storage/rocksdb/rdb_sst_info.cc
-
5storage/rocksdb/rdb_sst_info.h
-
31storage/rocksdb/rdb_threads.cc
-
33storage/rocksdb/rdb_threads.h
-
18storage/rocksdb/rdb_utils.cc
-
38storage/rocksdb/rdb_utils.h
-
2storage/rocksdb/rocksdb
-
6storage/rocksdb/tools/mysql_ldb.cc
-
46storage/rocksdb/unittest/test_properties_collector.cc
@ -0,0 +1,93 @@ |
|||
--- |
|||
Language: Cpp |
|||
# BasedOnStyle: LLVM |
|||
AccessModifierOffset: -2 |
|||
AlignAfterOpenBracket: Align |
|||
AlignConsecutiveAssignments: false |
|||
AlignConsecutiveDeclarations: false |
|||
AlignEscapedNewlinesLeft: false |
|||
AlignOperands: true |
|||
AlignTrailingComments: true |
|||
AllowAllParametersOfDeclarationOnNextLine: true |
|||
AllowShortBlocksOnASingleLine: false |
|||
AllowShortCaseLabelsOnASingleLine: false |
|||
AllowShortFunctionsOnASingleLine: All |
|||
AllowShortIfStatementsOnASingleLine: false |
|||
AllowShortLoopsOnASingleLine: false |
|||
AlwaysBreakAfterDefinitionReturnType: None |
|||
AlwaysBreakAfterReturnType: None |
|||
AlwaysBreakBeforeMultilineStrings: false |
|||
AlwaysBreakTemplateDeclarations: false |
|||
BinPackArguments: true |
|||
BinPackParameters: true |
|||
BraceWrapping: |
|||
AfterClass: false |
|||
AfterControlStatement: false |
|||
AfterEnum: false |
|||
AfterFunction: false |
|||
AfterNamespace: false |
|||
AfterObjCDeclaration: false |
|||
AfterStruct: false |
|||
AfterUnion: false |
|||
BeforeCatch: false |
|||
BeforeElse: false |
|||
IndentBraces: false |
|||
BreakBeforeBinaryOperators: None |
|||
BreakBeforeBraces: Attach |
|||
BreakBeforeTernaryOperators: true |
|||
BreakConstructorInitializersBeforeComma: false |
|||
BreakAfterJavaFieldAnnotations: false |
|||
BreakStringLiterals: true |
|||
ColumnLimit: 80 |
|||
CommentPragmas: '^ IWYU pragma:' |
|||
ConstructorInitializerAllOnOneLineOrOnePerLine: false |
|||
ConstructorInitializerIndentWidth: 4 |
|||
ContinuationIndentWidth: 4 |
|||
Cpp11BracedListStyle: true |
|||
DerivePointerAlignment: false |
|||
DisableFormat: false |
|||
ExperimentalAutoDetectBinPacking: false |
|||
ForEachMacros: [ foreach, Q_FOREACH, BOOST_FOREACH ] |
|||
IncludeCategories: |
|||
- Regex: '^"(llvm|llvm-c|clang|clang-c)/' |
|||
Priority: 2 |
|||
- Regex: '^(<|"(gtest|isl|json)/)' |
|||
Priority: 3 |
|||
- Regex: '.*' |
|||
Priority: 1 |
|||
IncludeIsMainRegex: '$' |
|||
IndentCaseLabels: false |
|||
IndentWidth: 2 |
|||
IndentWrappedFunctionNames: false |
|||
KeepEmptyLinesAtTheStartOfBlocks: true |
|||
MacroBlockBegin: '' |
|||
MacroBlockEnd: '' |
|||
MaxEmptyLinesToKeep: 1 |
|||
NamespaceIndentation: None |
|||
ObjCBlockIndentWidth: 2 |
|||
ObjCSpaceAfterProperty: false |
|||
ObjCSpaceBeforeProtocolList: true |
|||
PenaltyBreakBeforeFirstCallParameter: 19 |
|||
PenaltyBreakComment: 300 |
|||
PenaltyBreakFirstLessLess: 120 |
|||
PenaltyBreakString: 1000 |
|||
PenaltyExcessCharacter: 1000000 |
|||
PenaltyReturnTypeOnItsOwnLine: 60 |
|||
PointerAlignment: Right |
|||
ReflowComments: true |
|||
SortIncludes: true |
|||
SpaceAfterCStyleCast: false |
|||
SpaceBeforeAssignmentOperators: true |
|||
SpaceBeforeParens: ControlStatements |
|||
SpaceInEmptyParentheses: false |
|||
SpacesBeforeTrailingComments: 1 |
|||
SpacesInAngles: false |
|||
SpacesInContainerLiterals: true |
|||
SpacesInCStyleCastParentheses: false |
|||
SpacesInParentheses: false |
|||
SpacesInSquareBrackets: false |
|||
Standard: Cpp11 |
|||
TabWidth: 8 |
|||
UseTab: Never |
|||
JavaScriptQuotes: Leave |
|||
... |
|||
855
storage/rocksdb/ha_rocksdb.cc
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
@ -0,0 +1,21 @@ |
|||
DROP TABLE IF EXISTS t1; |
|||
CREATE TABLE t1 (i INT PRIMARY KEY, j INT) ENGINE = ROCKSDB; |
|||
INSERT INTO t1 VALUES (1,2), (2,4), (3,6), (4,8), (5,10); |
|||
SET debug_sync= 'rocksdb.commit_in_place_alter_table WAIT_FOR flushed'; |
|||
ALTER TABLE t1 ADD INDEX kj(j), ALGORITHM=INPLACE; |
|||
SET GLOBAL rocksdb_force_flush_memtable_now = 1; |
|||
SET debug_sync= 'now SIGNAL flushed'; |
|||
SELECT * FROM INFORMATION_SCHEMA.ROCKSDB_INDEX_FILE_MAP |
|||
WHERE INDEX_NUMBER = |
|||
(SELECT INDEX_NUMBER FROM INFORMATION_SCHEMA.ROCKSDB_DDL |
|||
WHERE TABLE_NAME = 't1' 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 |
|||
# # SSTNAME 5 # # # # # 5 |
|||
SELECT * FROM INFORMATION_SCHEMA.ROCKSDB_INDEX_FILE_MAP |
|||
WHERE INDEX_NUMBER = |
|||
(SELECT INDEX_NUMBER FROM INFORMATION_SCHEMA.ROCKSDB_DDL |
|||
WHERE TABLE_NAME = 't1' AND INDEX_NAME = "kj"); |
|||
COLUMN_FAMILY INDEX_NUMBER SST_NAME NUM_ROWS DATA_SIZE ENTRY_DELETES ENTRY_SINGLEDELETES ENTRY_MERGES ENTRY_OTHERS DISTINCT_KEYS_PREFIX |
|||
# # SSTNAME 5 # # # # # 5,5 |
|||
SET debug_sync='RESET'; |
|||
DROP TABLE t1; |
|||
@ -0,0 +1,85 @@ |
|||
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 @save_rocksdb_blind_delete_primary_key=@@session.rocksdb_blind_delete_primary_key; |
|||
set @save_rocksdb_master_skip_tx_api=@@session.rocksdb_master_skip_tx_api; |
|||
DROP TABLE IF EXISTS t1,t2; |
|||
create table t1 (id int primary key, value int, value2 varchar(200)) engine=rocksdb; |
|||
create table t2 (id int primary key, value int, value2 varchar(200), index(value)) engine=rocksdb; |
|||
SET session rocksdb_blind_delete_primary_key=1; |
|||
select variable_value into @c from information_schema.global_status where variable_name='rocksdb_rows_deleted_blind'; |
|||
select variable_value-@c from information_schema.global_status where variable_name='rocksdb_rows_deleted_blind'; |
|||
variable_value-@c |
|||
1000 |
|||
SELECT count(*) FROM t1; |
|||
count(*) |
|||
9000 |
|||
include/sync_slave_sql_with_master.inc |
|||
SELECT count(*) FROM t1; |
|||
count(*) |
|||
9000 |
|||
select variable_value into @c from information_schema.global_status where variable_name='rocksdb_rows_deleted_blind'; |
|||
select variable_value-@c from information_schema.global_status where variable_name='rocksdb_rows_deleted_blind'; |
|||
variable_value-@c |
|||
0 |
|||
SELECT count(*) FROM t2; |
|||
count(*) |
|||
9000 |
|||
SET session rocksdb_master_skip_tx_api=1; |
|||
select variable_value into @c from information_schema.global_status where variable_name='rocksdb_rows_deleted_blind'; |
|||
select variable_value-@c from information_schema.global_status where variable_name='rocksdb_rows_deleted_blind'; |
|||
variable_value-@c |
|||
1000 |
|||
SELECT count(*) FROM t1; |
|||
count(*) |
|||
8000 |
|||
SELECT count(*) FROM t2; |
|||
count(*) |
|||
8000 |
|||
include/sync_slave_sql_with_master.inc |
|||
SELECT count(*) FROM t1; |
|||
count(*) |
|||
8000 |
|||
SELECT count(*) FROM t2; |
|||
count(*) |
|||
8000 |
|||
select variable_value into @c from information_schema.global_status where variable_name='rocksdb_rows_deleted_blind'; |
|||
DELETE FROM t1 WHERE id BETWEEN 3001 AND 4000; |
|||
DELETE FROM t2 WHERE id BETWEEN 3001 AND 4000; |
|||
select variable_value-@c from information_schema.global_status where variable_name='rocksdb_rows_deleted_blind'; |
|||
variable_value-@c |
|||
0 |
|||
SELECT count(*) FROM t1; |
|||
count(*) |
|||
7000 |
|||
SELECT count(*) FROM t2; |
|||
count(*) |
|||
7000 |
|||
include/sync_slave_sql_with_master.inc |
|||
SELECT count(*) FROM t1; |
|||
count(*) |
|||
7000 |
|||
SELECT count(*) FROM t2; |
|||
count(*) |
|||
7000 |
|||
DELETE FROM t1 WHERE id = 10; |
|||
SELECT count(*) FROM t1; |
|||
count(*) |
|||
7000 |
|||
call mtr.add_suppression("Slave SQL.*Could not execute Delete_rows event on table test.t1.*Error_code.*"); |
|||
call mtr.add_suppression("Slave: Can't find record in 't1'.*"); |
|||
include/wait_for_slave_sql_error.inc [errno=1032] |
|||
set @save_rocksdb_read_free_rpl_tables=@@global.rocksdb_read_free_rpl_tables; |
|||
set global rocksdb_read_free_rpl_tables="t.*"; |
|||
START SLAVE; |
|||
include/sync_slave_sql_with_master.inc |
|||
SELECT count(*) FROM t1; |
|||
count(*) |
|||
7000 |
|||
set global rocksdb_read_free_rpl_tables=@save_rocksdb_read_free_rpl_tables; |
|||
SET session rocksdb_blind_delete_primary_key=@save_rocksdb_blind_delete_primary_key; |
|||
SET session rocksdb_master_skip_tx_api=@save_rocksdb_master_skip_tx_api; |
|||
DROP TABLE t1, t2; |
|||
include/rpl_end.inc |
|||
@ -1,4 +1,4 @@ |
|||
DROP TABLE IF EXISTS t1; |
|||
CREATE TABLE t1 (i INT, PRIMARY KEY (i) COMMENT '__system__') ENGINE = ROCKSDB; |
|||
ERROR HY000: Incorrect arguments to column family not valid for storing index data |
|||
ERROR HY000: Incorrect arguments to column family not valid for storing index data. |
|||
DROP TABLE IF EXISTS t1; |
|||
@ -0,0 +1,32 @@ |
|||
drop table if exists t; |
|||
Warnings: |
|||
Note 1051 Unknown table 'test.t' |
|||
create table t ( |
|||
a int, |
|||
b int, |
|||
c varchar(12249) collate latin1_bin, |
|||
d datetime, |
|||
e int, |
|||
f int, |
|||
g blob, |
|||
h int, |
|||
i int, |
|||
key (b,e), |
|||
key (h,b) |
|||
) engine=rocksdb |
|||
partition by linear hash (i) partitions 8 ; |
|||
insert into t values (1,1,'a',now(),1,1,'a',1,1); |
|||
insert into t values (1,1,'a',now(),1,1,'a',1,1); |
|||
insert into t values (1,1,'a',now(),1,1,'a',1,1); |
|||
insert into t values (1,1,'a',now(),1,1,'a',1,1); |
|||
insert into t values (1,1,'a',now(),1,1,'a',1,1); |
|||
insert into t values (1,1,'a',now(),1,1,'a',1,1); |
|||
insert into t values (1,1,'a',now(),1,1,'a',1,1); |
|||
insert into t values (1,1,'a',now(),1,1,'a',1,1); |
|||
select i from t group by h; |
|||
i |
|||
1 |
|||
select i from t group by h; |
|||
i |
|||
1 |
|||
drop table t; |
|||
@ -0,0 +1,409 @@ |
|||
DROP TABLE IF EXISTS t1; |
|||
DROP TABLE IF EXISTS t2; |
|||
CREATE TABLE t1 ( |
|||
c1 INT, |
|||
c2 INT, |
|||
name VARCHAR(25) NOT NULL, |
|||
event DATE, |
|||
PRIMARY KEY (`c1`, `c2`) COMMENT 'testcomment' |
|||
) ENGINE=ROCKSDB |
|||
PARTITION BY LIST(c1) ( |
|||
PARTITION custom_p0 VALUES IN (1, 4, 7), |
|||
PARTITION custom_p1 VALUES IN (2, 5, 8), |
|||
PARTITION custom_p2 VALUES IN (3, 6, 9) |
|||
); |
|||
SELECT DISTINCT(cf_name) FROM information_schema.rocksdb_cfstats WHERE cf_name='testcomment'; |
|||
cf_name |
|||
DROP TABLE t1; |
|||
CREATE TABLE t1 ( |
|||
c1 INT, |
|||
c2 INT, |
|||
name VARCHAR(25) NOT NULL, |
|||
event DATE, |
|||
PRIMARY KEY (`c1`, `c2`) COMMENT 'rev:testrevcomment' |
|||
) ENGINE=ROCKSDB |
|||
PARTITION BY LIST(c1) ( |
|||
PARTITION custom_p0 VALUES IN (1, 4, 7), |
|||
PARTITION custom_p1 VALUES IN (2, 5, 8), |
|||
PARTITION custom_p2 VALUES IN (3, 6, 9) |
|||
); |
|||
SELECT DISTINCT(cf_name) FROM information_schema.rocksdb_cfstats WHERE cf_name='rev:testrevcomment'; |
|||
cf_name |
|||
DROP TABLE t1; |
|||
CREATE TABLE t1 ( |
|||
c1 INT, |
|||
c2 INT, |
|||
name VARCHAR(25) NOT NULL, |
|||
event DATE, |
|||
PRIMARY KEY (`c1`, `c2`) COMMENT 'custom_p0_cfname=foo;custom_p1_cfname=my_custom_cf;custom_p2_cfname=baz' |
|||
) ENGINE=ROCKSDB |
|||
PARTITION BY LIST(c1) ( |
|||
PARTITION custom_p0 VALUES IN (1, 4, 7), |
|||
PARTITION custom_p1 VALUES IN (2, 5, 8), |
|||
PARTITION custom_p2 VALUES IN (3, 6, 9) |
|||
); |
|||
set @@global.rocksdb_compact_cf = 'foo'; |
|||
set @@global.rocksdb_compact_cf = 'my_custom_cf'; |
|||
set @@global.rocksdb_compact_cf = 'baz'; |
|||
SELECT DISTINCT(cf_name) FROM information_schema.rocksdb_cfstats WHERE cf_name='foo'; |
|||
cf_name |
|||
foo |
|||
SELECT DISTINCT(cf_name) FROM information_schema.rocksdb_cfstats WHERE cf_name='my_custom_cf'; |
|||
cf_name |
|||
my_custom_cf |
|||
SELECT DISTINCT(cf_name) FROM information_schema.rocksdb_cfstats WHERE cf_name='baz'; |
|||
cf_name |
|||
baz |
|||
DROP TABLE t1; |
|||
CREATE TABLE t1 ( |
|||
c1 INT, |
|||
c2 INT, |
|||
name VARCHAR(25) NOT NULL, |
|||
event DATE, |
|||
PRIMARY KEY (`c1`, `c2`) COMMENT 'custom_p0_cfname=t1-p0;custom_p1_cfname=rev:bar;custom_p2_cfname=t1-p2' |
|||
) ENGINE=ROCKSDB |
|||
PARTITION BY LIST(c1) ( |
|||
PARTITION custom_p0 VALUES IN (1, 4, 7), |
|||
PARTITION custom_p1 VALUES IN (2, 5, 8), |
|||
PARTITION custom_p2 VALUES IN (3, 6, 9) |
|||
); |
|||
set @@global.rocksdb_compact_cf = 't1-p0'; |
|||
set @@global.rocksdb_compact_cf = 'rev:bar'; |
|||
set @@global.rocksdb_compact_cf = 't1-p2'; |
|||
SELECT DISTINCT(cf_name) FROM information_schema.rocksdb_cfstats WHERE cf_name='t1-p0'; |
|||
cf_name |
|||
t1-p0 |
|||
SELECT DISTINCT(cf_name) FROM information_schema.rocksdb_cfstats WHERE cf_name='rev:bar'; |
|||
cf_name |
|||
rev:bar |
|||
SELECT DISTINCT(cf_name) FROM information_schema.rocksdb_cfstats WHERE cf_name='t1-p2'; |
|||
cf_name |
|||
t1-p2 |
|||
DROP TABLE t1; |
|||
CREATE TABLE t1 ( |
|||
c1 INT, |
|||
c2 INT, |
|||
name VARCHAR(25) NOT NULL, |
|||
event DATE, |
|||
PRIMARY KEY (`c1`, `c2`) COMMENT 'custom_p0_cfname=cf-zero;custom_p1_cfname=cf-one;custom_p2_cfname=cf-zero' |
|||
) ENGINE=ROCKSDB |
|||
PARTITION BY LIST(c1) ( |
|||
PARTITION custom_p0 VALUES IN (1, 4, 7), |
|||
PARTITION custom_p1 VALUES IN (2, 5, 8), |
|||
PARTITION custom_p2 VALUES IN (3, 6, 9), |
|||
PARTITION custom_p3 VALUES IN (10, 20, 30) |
|||
); |
|||
set @@global.rocksdb_compact_cf = 'cf-zero'; |
|||
set @@global.rocksdb_compact_cf = 'cf-one'; |
|||
SELECT DISTINCT(cf_name) FROM information_schema.rocksdb_cfstats WHERE cf_name='cf-zero'; |
|||
cf_name |
|||
cf-zero |
|||
SELECT DISTINCT(cf_name) FROM information_schema.rocksdb_cfstats WHERE cf_name='cf-one'; |
|||
cf_name |
|||
cf-one |
|||
DROP TABLE t1; |
|||
CREATE TABLE t1 ( |
|||
c1 INT, |
|||
c2 INT, |
|||
name VARCHAR(25) NOT NULL, |
|||
event DATE, |
|||
PRIMARY KEY (`c1`, `c2`) COMMENT 'custom_p0_cfname=foo;custom_p1_cfname=bar;custom_p2_cfname=baz' |
|||
) ENGINE=ROCKSDB |
|||
PARTITION BY LIST(c1) ( |
|||
PARTITION custom_p0 VALUES IN (1, 4, 7), |
|||
PARTITION custom_p1 VALUES IN (2, 5, 8), |
|||
PARTITION custom_p2 VALUES IN (3, 6, 9) |
|||
); |
|||
INSERT INTO t1 VALUES (1, 1, "one", null); |
|||
INSERT INTO t1 VALUES (2, 2, "two", null); |
|||
INSERT INTO t1 VALUES (3, 3, "three", null); |
|||
INSERT INTO t1 VALUES (5, 5, "five", null); |
|||
INSERT INTO t1 VALUES (9, 9, "nine", null); |
|||
SELECT * FROM t1; |
|||
c1 c2 name event |
|||
1 1 one NULL |
|||
2 2 two NULL |
|||
5 5 five NULL |
|||
3 3 three NULL |
|||
9 9 nine NULL |
|||
ALTER TABLE t1 DROP PRIMARY KEY; |
|||
SELECT * FROM t1; |
|||
c1 c2 name event |
|||
1 1 one NULL |
|||
2 2 two NULL |
|||
5 5 five NULL |
|||
3 3 three NULL |
|||
9 9 nine NULL |
|||
set @@global.rocksdb_compact_cf = 'foo'; |
|||
set @@global.rocksdb_compact_cf = 'bar'; |
|||
set @@global.rocksdb_compact_cf = 'baz'; |
|||
DROP TABLE t1; |
|||
CREATE TABLE t1 ( |
|||
c1 INT, |
|||
c2 INT, |
|||
name VARCHAR(25) NOT NULL, |
|||
event DATE, |
|||
PRIMARY KEY (`c1`, `c2`) COMMENT 'custom_p0_cfname=foo;custom_p1_cfname=bar;custom_p2_cfname=baz' |
|||
) ENGINE=ROCKSDB |
|||
PARTITION BY LIST(c1) ( |
|||
PARTITION custom_p0 VALUES IN (1, 4, 7), |
|||
PARTITION custom_p1 VALUES IN (2, 5, 8), |
|||
PARTITION custom_p2 VALUES IN (3, 6, 9) |
|||
); |
|||
INSERT INTO t1 VALUES (1, 1, "one", null); |
|||
INSERT INTO t1 VALUES (2, 2, "two", null); |
|||
INSERT INTO t1 VALUES (3, 3, "three", null); |
|||
INSERT INTO t1 VALUES (5, 5, "five", null); |
|||
INSERT INTO t1 VALUES (9, 9, "nine", null); |
|||
ALTER TABLE t1 DROP PRIMARY KEY; |
|||
ALTER TABLE t1 ADD PRIMARY KEY (`c1`, `c2`) COMMENT 'custom_p0_cfname=p0_cf;custom_p1_cfname=p1_cf'; |
|||
set @@global.rocksdb_compact_cf = 'p0_cf'; |
|||
set @@global.rocksdb_compact_cf = 'p1_cf'; |
|||
SELECT DISTINCT(cf_name) FROM information_schema.rocksdb_cfstats WHERE cf_name='p0_cf'; |
|||
cf_name |
|||
p0_cf |
|||
SELECT DISTINCT(cf_name) FROM information_schema.rocksdb_cfstats WHERE cf_name='p1_cf'; |
|||
cf_name |
|||
p1_cf |
|||
DROP TABLE t1; |
|||
CREATE TABLE t1 ( |
|||
c1 INT, |
|||
c2 INT, |
|||
name VARCHAR(25) NOT NULL, |
|||
event DATE, |
|||
PRIMARY KEY (`c1`, `c2`) COMMENT 'custom_p0_cfname=foo;custom_p1_cfname=bar;custom_p2_cfname=baz' |
|||
) ENGINE=ROCKSDB |
|||
PARTITION BY LIST(c1) ( |
|||
PARTITION custom_p0 VALUES IN (1, 4, 7), |
|||
PARTITION custom_p1 VALUES IN (2, 5, 8), |
|||
PARTITION custom_p2 VALUES IN (3, 6, 9) |
|||
); |
|||
INSERT INTO t1 VALUES (1, 1, "one", null); |
|||
INSERT INTO t1 VALUES (2, 2, "two", null); |
|||
INSERT INTO t1 VALUES (3, 3, "three", null); |
|||
INSERT INTO t1 VALUES (5, 5, "five", null); |
|||
INSERT INTO t1 VALUES (9, 9, "nine", null); |
|||
ALTER TABLE t1 PARTITION BY LIST(c1) ( |
|||
PARTITION custom_p3 VALUES IN (1, 4, 7), |
|||
PARTITION custom_p4 VALUES IN (2, 5, 8, 3, 6, 9) |
|||
); |
|||
ALTER TABLE t1 DROP PRIMARY KEY; |
|||
ALTER TABLE t1 ADD PRIMARY KEY (`c1`, `c2`) COMMENT 'custom_p3_cfname=p3_cf;custom_p4_cfname=p4_cf'; |
|||
set @@global.rocksdb_compact_cf = 'p3_cf'; |
|||
set @@global.rocksdb_compact_cf = 'p4_cf'; |
|||
SELECT DISTINCT(cf_name) FROM information_schema.rocksdb_cfstats WHERE cf_name='p3_cf'; |
|||
cf_name |
|||
p3_cf |
|||
SELECT DISTINCT(cf_name) FROM information_schema.rocksdb_cfstats WHERE cf_name='p4_cf'; |
|||
cf_name |
|||
p4_cf |
|||
DROP TABLE t1; |
|||
CREATE TABLE t1 ( |
|||
c1 INT, |
|||
c2 INT, |
|||
name VARCHAR(25) NOT NULL, |
|||
event DATE, |
|||
PRIMARY KEY (`c1`, `c2`) COMMENT 'custom_p0_cfname=foo;custom_p1_cfname=;' |
|||
) ENGINE=ROCKSDB |
|||
PARTITION BY LIST(c1) ( |
|||
PARTITION custom_p0 VALUES IN (1, 4, 7), |
|||
PARTITION custom_p1 VALUES IN (2, 5, 8), |
|||
PARTITION custom_p2 VALUES IN (3, 6, 9) |
|||
); |
|||
DROP TABLE t1; |
|||
CREATE TABLE `t2` ( |
|||
`col1` bigint(20) NOT NULL, |
|||
`col2` varbinary(64) NOT NULL, |
|||
`col3` varbinary(256) NOT NULL, |
|||
`col4` bigint(20) NOT NULL, |
|||
`col5` mediumblob NOT NULL, |
|||
PRIMARY KEY (`col1`,`col2`,`col3`) |
|||
) ENGINE=ROCKSDB DEFAULT CHARSET=latin1 |
|||
PARTITION BY LIST COLUMNS (`col2`) ( |
|||
PARTITION custom_p0 VALUES IN (0x12345), |
|||
PARTITION custom_p1 VALUES IN (0x23456), |
|||
PARTITION custom_p2 VALUES IN (0x34567), |
|||
PARTITION custom_p3 VALUES IN (0x45678), |
|||
PARTITION custom_p4 VALUES IN (0x56789), |
|||
PARTITION custom_p5 VALUES IN (0x6789A), |
|||
PARTITION custom_p6 VALUES IN (0x789AB), |
|||
PARTITION custom_p7 VALUES IN (0x89ABC) |
|||
); |
|||
DROP TABLE t2; |
|||
CREATE TABLE `t2` ( |
|||
`col1` bigint(20) NOT NULL, |
|||
`col2` varbinary(64) NOT NULL, |
|||
`col3` varbinary(256) NOT NULL, |
|||
`col4` bigint(20) NOT NULL, |
|||
`col5` mediumblob NOT NULL, |
|||
PRIMARY KEY (`col1`,`col2`,`col3`) COMMENT 'custom_p0_cfname=my_cf0;custom_p1_cfname=my_cf1' |
|||
) ENGINE=ROCKSDB DEFAULT CHARSET=latin1 |
|||
PARTITION BY LIST COLUMNS (`col2`) ( |
|||
PARTITION custom_p0 VALUES IN (0x12345), |
|||
PARTITION custom_p1 VALUES IN (0x23456), |
|||
PARTITION custom_p2 VALUES IN (0x34567), |
|||
PARTITION custom_p3 VALUES IN (0x45678), |
|||
PARTITION custom_p4 VALUES IN (0x56789), |
|||
PARTITION custom_p5 VALUES IN (0x6789A), |
|||
PARTITION custom_p6 VALUES IN (0x789AB), |
|||
PARTITION custom_p7 VALUES IN (0x89ABC) |
|||
); |
|||
set @@global.rocksdb_compact_cf = 'my_cf0'; |
|||
set @@global.rocksdb_compact_cf = 'my_cf1'; |
|||
SELECT DISTINCT(cf_name) FROM information_schema.rocksdb_cfstats WHERE cf_name='my_cf0'; |
|||
cf_name |
|||
my_cf0 |
|||
SELECT DISTINCT(cf_name) FROM information_schema.rocksdb_cfstats WHERE cf_name='my_cf1'; |
|||
cf_name |
|||
my_cf1 |
|||
INSERT INTO t2 VALUES (100, 0x12345, 0x1, 1, 0x2); |
|||
INSERT INTO t2 VALUES (200, 0x12345, 0x1, 1, 0x2); |
|||
INSERT INTO t2 VALUES (300, 0x12345, 0x1, 1, 0x2); |
|||
INSERT INTO t2 VALUES (100, 0x23456, 0x2, 1, 0x3); |
|||
INSERT INTO t2 VALUES (100, 0x34567, 0x4, 1, 0x5); |
|||
INSERT INTO t2 VALUES (400, 0x89ABC, 0x4, 1, 0x5); |
|||
SELECT col1, HEX(col2), HEX(col3), col4, HEX(col5) FROM t2; |
|||
col1 HEX(col2) HEX(col3) col4 HEX(col5) |
|||
100 012345 01 1 02 |
|||
200 012345 01 1 02 |
|||
300 012345 01 1 02 |
|||
100 023456 02 1 03 |
|||
100 034567 04 1 05 |
|||
400 089ABC 04 1 05 |
|||
EXPLAIN PARTITIONS SELECT HEX(col2) FROM t2 where col2 = 0x12345; |
|||
id select_type table partitions type possible_keys key key_len ref rows Extra |
|||
1 SIMPLE t2 custom_p0 index NULL PRIMARY 332 NULL 3 Using where; Using index |
|||
EXPLAIN PARTITIONS SELECT HEX(col2) FROM t2 where col2 = 0x23456; |
|||
id select_type table partitions type possible_keys key key_len ref rows Extra |
|||
1 SIMPLE t2 custom_p1 index NULL PRIMARY 332 NULL 2 Using where; Using index |
|||
ALTER TABLE t2 DROP PRIMARY KEY; |
|||
ALTER TABLE t2 ADD PRIMARY KEY (`col1`,`col2`,`col3`) COMMENT 'custom_p0_cfname=new_cf0;custom_p1_cfname=new_cf1'; |
|||
set @@global.rocksdb_compact_cf = 'new_cf0'; |
|||
set @@global.rocksdb_compact_cf = 'new_cf1'; |
|||
SELECT DISTINCT(cf_name) FROM information_schema.rocksdb_cfstats WHERE cf_name='new_cf0'; |
|||
cf_name |
|||
new_cf0 |
|||
SELECT DISTINCT(cf_name) FROM information_schema.rocksdb_cfstats WHERE cf_name='new_cf1'; |
|||
cf_name |
|||
new_cf1 |
|||
INSERT INTO t2 VALUES (500, 0x12345, 0x5, 1, 0x2); |
|||
INSERT INTO t2 VALUES (700, 0x23456, 0x7, 1, 0x3); |
|||
EXPLAIN PARTITIONS SELECT HEX(col2) FROM t2 where col2 = 0x12345; |
|||
id select_type table partitions type possible_keys key key_len ref rows Extra |
|||
1 SIMPLE t2 custom_p0 index NULL PRIMARY 332 NULL 4 Using where; Using index |
|||
EXPLAIN PARTITIONS SELECT HEX(col2) FROM t2 where col2 = 0x23456; |
|||
id select_type table partitions type possible_keys key key_len ref rows Extra |
|||
1 SIMPLE t2 custom_p1 index NULL PRIMARY 332 NULL 2 Using where; Using index |
|||
SELECT col1, HEX(col2), HEX(col3), col4, HEX(col5) FROM t2; |
|||
col1 HEX(col2) HEX(col3) col4 HEX(col5) |
|||
100 012345 01 1 02 |
|||
200 012345 01 1 02 |
|||
300 012345 01 1 02 |
|||
500 012345 05 1 02 |
|||
100 023456 02 1 03 |
|||
700 023456 07 1 03 |
|||
100 034567 04 1 05 |
|||
400 089ABC 04 1 05 |
|||
DROP TABLE t2; |
|||
CREATE TABLE `t2` ( |
|||
`col1` bigint(20) NOT NULL, |
|||
`col2` varbinary(64) NOT NULL, |
|||
`col3` varbinary(256) NOT NULL, |
|||
`col4` bigint(20) NOT NULL, |
|||
`col5` mediumblob NOT NULL, |
|||
PRIMARY KEY (`col1`,`col2`,`col3`) COMMENT 'custom_p0_cfname=test_cf0;custom_p1_cfname=test_cf1', |
|||
KEY (`col2`, `col4`) COMMENT 'custom_p5_cfname=test_cf5' |
|||
) ENGINE=ROCKSDB DEFAULT CHARSET=latin1 |
|||
PARTITION BY LIST COLUMNS (`col2`) ( |
|||
PARTITION custom_p0 VALUES IN (0x12345), |
|||
PARTITION custom_p1 VALUES IN (0x23456), |
|||
PARTITION custom_p2 VALUES IN (0x34567), |
|||
PARTITION custom_p3 VALUES IN (0x45678), |
|||
PARTITION custom_p4 VALUES IN (0x56789), |
|||
PARTITION custom_p5 VALUES IN (0x6789A), |
|||
PARTITION custom_p6 VALUES IN (0x789AB), |
|||
PARTITION custom_p7 VALUES IN (0x89ABC) |
|||
); |
|||
SELECT DISTINCT(cf_name) FROM information_schema.rocksdb_cfstats WHERE cf_name='test_cf0'; |
|||
cf_name |
|||
test_cf0 |
|||
SELECT DISTINCT(cf_name) FROM information_schema.rocksdb_cfstats WHERE cf_name='test_cf1'; |
|||
cf_name |
|||
test_cf1 |
|||
SELECT DISTINCT(cf_name) FROM information_schema.rocksdb_cfstats WHERE cf_name='test_cf5'; |
|||
cf_name |
|||
test_cf5 |
|||
INSERT INTO t2 VALUES (100, 0x12345, 0x1, 1, 0x2); |
|||
INSERT INTO t2 VALUES (200, 0x12345, 0x1, 1, 0x2); |
|||
INSERT INTO t2 VALUES (300, 0x12345, 0x1, 1, 0x2); |
|||
INSERT INTO t2 VALUES (100, 0x23456, 0x2, 1, 0x3); |
|||
INSERT INTO t2 VALUES (100, 0x34567, 0x4, 1, 0x5); |
|||
INSERT INTO t2 VALUES (400, 0x89ABC, 0x4, 1, 0x5); |
|||
INSERT INTO t2 VALUES (500, 0x6789A, 0x5, 1, 0x7); |
|||
EXPLAIN PARTITIONS SELECT * FROM t2 WHERE col2 = 0x6789A AND col4 = 1; |
|||
id select_type table partitions type possible_keys key key_len ref rows Extra |
|||
1 SIMPLE t2 custom_p5 ref col2 col2 74 const,const 1 Using where |
|||
ALTER TABLE t2 DROP KEY `col2`; |
|||
ALTER TABLE t2 ADD KEY (`col3`, `col4`) COMMENT 'custom_p5_cfname=another_cf_for_p5'; |
|||
SELECT DISTINCT(cf_name) FROM information_schema.rocksdb_cfstats WHERE cf_name='another_cf_for_p5'; |
|||
cf_name |
|||
another_cf_for_p5 |
|||
EXPLAIN PARTITIONS SELECT * FROM t2 WHERE col3 = 0x4 AND col2 = 0x34567; |
|||
id select_type table partitions type possible_keys key key_len ref rows Extra |
|||
1 SIMPLE t2 custom_p2 ref col3 col3 258 const 1 Using where |
|||
DROP TABLE t2; |
|||
CREATE TABLE `t2` ( |
|||
`col1` bigint(20) NOT NULL, |
|||
`col2` varbinary(64) NOT NULL, |
|||
`col3` varbinary(256) NOT NULL, |
|||
`col4` bigint(20) NOT NULL, |
|||
`col5` mediumblob NOT NULL, |
|||
PRIMARY KEY (`col1`,`col2`,`col3`) COMMENT 'custom_p0_cfname=test_cf0;custom_p1_cfname=test_cf1', |
|||
UNIQUE KEY (`col2`, `col4`) COMMENT 'custom_p5_cfname=unique_test_cf5' |
|||
) ENGINE=ROCKSDB DEFAULT CHARSET=latin1 |
|||
PARTITION BY LIST COLUMNS (`col2`) ( |
|||
PARTITION custom_p0 VALUES IN (0x12345), |
|||
PARTITION custom_p1 VALUES IN (0x23456), |
|||
PARTITION custom_p2 VALUES IN (0x34567), |
|||
PARTITION custom_p3 VALUES IN (0x45678), |
|||
PARTITION custom_p4 VALUES IN (0x56789), |
|||
PARTITION custom_p5 VALUES IN (0x6789A), |
|||
PARTITION custom_p6 VALUES IN (0x789AB), |
|||
PARTITION custom_p7 VALUES IN (0x89ABC) |
|||
); |
|||
SELECT DISTINCT(cf_name) FROM information_schema.rocksdb_cfstats WHERE cf_name='unique_test_cf5'; |
|||
cf_name |
|||
unique_test_cf5 |
|||
INSERT INTO t2 VALUES (100, 0x12345, 0x1, 1, 0x2); |
|||
INSERT INTO t2 VALUES (200, 0x12345, 0x1, 1, 0x2); |
|||
ERROR 23000: Duplicate entry '\x01#E-1' for key 'col2' |
|||
INSERT INTO t2 VALUES (300, 0x12345, 0x1, 1, 0x2); |
|||
ERROR 23000: Duplicate entry '\x01#E-1' for key 'col2' |
|||
INSERT INTO t2 VALUES (100, 0x23456, 0x2, 1, 0x3); |
|||
INSERT INTO t2 VALUES (100, 0x34567, 0x4, 1, 0x5); |
|||
INSERT INTO t2 VALUES (400, 0x89ABC, 0x4, 1, 0x5); |
|||
INSERT INTO t2 VALUES (500, 0x6789A, 0x5, 1, 0x7); |
|||
DROP TABLE t2; |
|||
CREATE TABLE t1 ( |
|||
`a` int, |
|||
PRIMARY KEY (a) COMMENT "sharedcf" |
|||
) ENGINE=ROCKSDB; |
|||
SELECT DISTINCT(cf_name) FROM information_schema.rocksdb_cfstats WHERE cf_name='sharedcf'; |
|||
cf_name |
|||
sharedcf |
|||
CREATE TABLE t2 ( |
|||
`a` INT, |
|||
`b` DATE, |
|||
`c` VARCHAR(42), |
|||
PRIMARY KEY (`a`) COMMENT "custom_p0_cfname=sharedcf;custom_p2_cfname=notsharedcf" |
|||
) ENGINE=ROCKSDB |
|||
PARTITION BY LIST(`a`) ( |
|||
PARTITION custom_p0 VALUES IN (1, 4, 7), |
|||
PARTITION custom_p1 VALUES IN (2, 5, 8), |
|||
PARTITION custom_p2 VALUES IN (3, 6, 9) |
|||
); |
|||
SELECT DISTINCT(cf_name) FROM information_schema.rocksdb_cfstats WHERE cf_name='notsharedcf'; |
|||
cf_name |
|||
notsharedcf |
|||
DROP TABLE IF EXISTS t1; |
|||
DROP TABLE IF EXISTS t2; |
|||
@ -1,20 +1,23 @@ |
|||
DROP TABLE IF EXISTS t1; |
|||
CREATE TABLE t1 (a INT PRIMARY KEY, b CHAR(8)) ENGINE=rocksdb DATA DIRECTORY = '<DATA_DIR>' INDEX DIRECTORY = '<INDEX_DIR>'; |
|||
SHOW CREATE TABLE t1; |
|||
Table Create Table |
|||
t1 CREATE TABLE `t1` ( |
|||
`a` int(11) NOT NULL, |
|||
`b` char(8) DEFAULT NULL, |
|||
PRIMARY KEY (`a`) |
|||
) ENGINE=ROCKSDB DEFAULT CHARSET=latin1 |
|||
ALTER TABLE t1 INDEX DIRECTORY = '<DATA_DIR>'; |
|||
Warnings: |
|||
Warning 1618 <INDEX DIRECTORY> option ignored |
|||
SHOW CREATE TABLE t1; |
|||
Table Create Table |
|||
t1 CREATE TABLE `t1` ( |
|||
`a` int(11) NOT NULL, |
|||
`b` char(8) DEFAULT NULL, |
|||
PRIMARY KEY (`a`) |
|||
) ENGINE=ROCKSDB DEFAULT CHARSET=latin1 |
|||
DROP TABLE t1; |
|||
CREATE TABLE t1 (a INT PRIMARY KEY, b CHAR(8)) ENGINE=rocksdb DATA DIRECTORY = '/foo/bar/data'; |
|||
ERROR HY000: Got error 197 'Specifying DATA DIRECTORY for an individual table is not supported.' from ROCKSDB |
|||
CREATE TABLE t1 (a INT PRIMARY KEY, b CHAR(8)) ENGINE=rocksdb INDEX DIRECTORY = '/foo/bar/index'; |
|||
ERROR HY000: Got error 198 'Specifying INDEX DIRECTORY for an individual table is not supported.' from ROCKSDB |
|||
CREATE TABLE t1 (id INT NOT NULL PRIMARY KEY) ENGINE=rocksdb PARTITION BY RANGE (id) |
|||
( |
|||
PARTITION P0 VALUES LESS THAN (1000) |
|||
DATA DIRECTORY = '/foo/bar/data/', |
|||
PARTITION P1 VALUES LESS THAN (2000) |
|||
DATA DIRECTORY = '/foo/bar/data/', |
|||
PARTITION P2 VALUES LESS THAN (MAXVALUE) |
|||
); |
|||
ERROR HY000: Got error 197 'Specifying DATA DIRECTORY for an individual table is not supported.' from ROCKSDB |
|||
CREATE TABLE t1 (id int not null primary key) ENGINE=rocksdb PARTITION BY RANGE (id) |
|||
( |
|||
PARTITION P0 VALUES LESS THAN (1000) |
|||
INDEX DIRECTORY = '/foo/bar/data/', |
|||
PARTITION P1 VALUES LESS THAN (2000) |
|||
INDEX DIRECTORY = '/foo/bar/data/', |
|||
PARTITION P2 VALUES LESS THAN (MAXVALUE) |
|||
); |
|||
ERROR HY000: Got error 198 'Specifying INDEX DIRECTORY for an individual table is not supported.' from ROCKSDB |
|||
@ -0,0 +1 @@ |
|||
--rocksdb_table_stats_sampling_pct=100 |
|||
@ -0,0 +1,44 @@ |
|||
--source include/have_rocksdb.inc |
|||
--source include/have_debug.inc |
|||
--source include/have_debug_sync.inc |
|||
|
|||
--disable_warnings |
|||
DROP TABLE IF EXISTS t1; |
|||
--enable_warnings |
|||
|
|||
# Test that fast secondary index creation updates cardinality properly |
|||
CREATE TABLE t1 (i INT PRIMARY KEY, j INT) ENGINE = ROCKSDB; |
|||
INSERT INTO t1 VALUES (1,2), (2,4), (3,6), (4,8), (5,10); |
|||
|
|||
SET debug_sync= 'rocksdb.commit_in_place_alter_table WAIT_FOR flushed'; |
|||
send ALTER TABLE t1 ADD INDEX kj(j), ALGORITHM=INPLACE; |
|||
|
|||
connect (con1,localhost,root,,); |
|||
|
|||
# Flush memtable out to SST |
|||
SET GLOBAL rocksdb_force_flush_memtable_now = 1; |
|||
SET debug_sync= 'now SIGNAL flushed'; |
|||
|
|||
connection default; |
|||
reap; |
|||
|
|||
# Return the data for the primary key of t1 |
|||
--replace_column 1 # 2 # 3 SSTNAME 5 # 6 # 7 # 8 # 9 # |
|||
SELECT * FROM INFORMATION_SCHEMA.ROCKSDB_INDEX_FILE_MAP |
|||
WHERE INDEX_NUMBER = |
|||
(SELECT INDEX_NUMBER FROM INFORMATION_SCHEMA.ROCKSDB_DDL |
|||
WHERE TABLE_NAME = 't1' AND INDEX_NAME = "PRIMARY"); |
|||
|
|||
# Return the data for the secondary index of t1 |
|||
--replace_column 1 # 2 # 3 SSTNAME 5 # 6 # 7 # 8 # 9 # |
|||
SELECT * FROM INFORMATION_SCHEMA.ROCKSDB_INDEX_FILE_MAP |
|||
WHERE INDEX_NUMBER = |
|||
(SELECT INDEX_NUMBER FROM INFORMATION_SCHEMA.ROCKSDB_DDL |
|||
WHERE TABLE_NAME = 't1' AND INDEX_NAME = "kj"); |
|||
|
|||
disconnect con1; |
|||
SET debug_sync='RESET'; |
|||
|
|||
# cleanup |
|||
DROP TABLE t1; |
|||
|
|||
@ -0,0 +1,11 @@ |
|||
!include suite/rpl/my.cnf |
|||
|
|||
[mysqld.1] |
|||
sync_binlog=0 |
|||
binlog_format=row |
|||
slave-exec-mode=strict |
|||
|
|||
[mysqld.2] |
|||
sync_binlog=0 |
|||
binlog_format=row |
|||
slave-exec-mode=strict |
|||
@ -0,0 +1,129 @@ |
|||
--source include/have_rocksdb.inc |
|||
|
|||
source include/master-slave.inc; |
|||
|
|||
connection master; |
|||
|
|||
set @save_rocksdb_blind_delete_primary_key=@@session.rocksdb_blind_delete_primary_key; |
|||
set @save_rocksdb_master_skip_tx_api=@@session.rocksdb_master_skip_tx_api; |
|||
|
|||
--disable_warnings |
|||
DROP TABLE IF EXISTS t1,t2; |
|||
--enable_warnings |
|||
create table t1 (id int primary key, value int, value2 varchar(200)) engine=rocksdb; |
|||
create table t2 (id int primary key, value int, value2 varchar(200), index(value)) engine=rocksdb; |
|||
|
|||
--disable_query_log |
|||
let $t = 1; |
|||
while ($t <= 2) { |
|||
let $i = 1; |
|||
while ($i <= 10000) { |
|||
let $insert = INSERT INTO t$t VALUES($i, $i, REPEAT('x', 150)); |
|||
inc $i; |
|||
eval $insert; |
|||
} |
|||
inc $t; |
|||
} |
|||
--enable_query_log |
|||
|
|||
SET session rocksdb_blind_delete_primary_key=1; |
|||
select variable_value into @c from information_schema.global_status where variable_name='rocksdb_rows_deleted_blind'; |
|||
# Deleting 1000 rows from t1 |
|||
--disable_query_log |
|||
let $i = 1; |
|||
while ($i <= 1000) { |
|||
let $insert = DELETE FROM t1 WHERE id=$i; |
|||
inc $i; |
|||
eval $insert; |
|||
} |
|||
--enable_query_log |
|||
select variable_value-@c from information_schema.global_status where variable_name='rocksdb_rows_deleted_blind'; |
|||
SELECT count(*) FROM t1; |
|||
|
|||
--source include/sync_slave_sql_with_master.inc |
|||
connection slave; |
|||
SELECT count(*) FROM t1; |
|||
connection master; |
|||
|
|||
# Deleting 1000 rows from t2 (blind delete disabled because of secondary key) |
|||
select variable_value into @c from information_schema.global_status where variable_name='rocksdb_rows_deleted_blind'; |
|||
--disable_query_log |
|||
let $i = 1; |
|||
while ($i <= 1000) { |
|||
let $insert = DELETE FROM t2 WHERE id=$i; |
|||
inc $i; |
|||
eval $insert; |
|||
} |
|||
--enable_query_log |
|||
select variable_value-@c from information_schema.global_status where variable_name='rocksdb_rows_deleted_blind'; |
|||
SELECT count(*) FROM t2; |
|||
|
|||
SET session rocksdb_master_skip_tx_api=1; |
|||
|
|||
select variable_value into @c from information_schema.global_status where variable_name='rocksdb_rows_deleted_blind'; |
|||
--disable_query_log |
|||
let $t = 1; |
|||
while ($t <= 2) { |
|||
let $i = 1001; |
|||
while ($i <= 2000) { |
|||
let $insert = DELETE FROM t$t WHERE id=$i; |
|||
inc $i; |
|||
eval $insert; |
|||
} |
|||
inc $t; |
|||
} |
|||
--enable_query_log |
|||
select variable_value-@c from information_schema.global_status where variable_name='rocksdb_rows_deleted_blind'; |
|||
SELECT count(*) FROM t1; |
|||
SELECT count(*) FROM t2; |
|||
--source include/sync_slave_sql_with_master.inc |
|||
connection slave; |
|||
SELECT count(*) FROM t1; |
|||
SELECT count(*) FROM t2; |
|||
connection master; |
|||
|
|||
|
|||
# Range Deletes (blind delete disabled) |
|||
select variable_value into @c from information_schema.global_status where variable_name='rocksdb_rows_deleted_blind'; |
|||
DELETE FROM t1 WHERE id BETWEEN 3001 AND 4000; |
|||
DELETE FROM t2 WHERE id BETWEEN 3001 AND 4000; |
|||
select variable_value-@c from information_schema.global_status where variable_name='rocksdb_rows_deleted_blind'; |
|||
SELECT count(*) FROM t1; |
|||
SELECT count(*) FROM t2; |
|||
--source include/sync_slave_sql_with_master.inc |
|||
connection slave; |
|||
SELECT count(*) FROM t1; |
|||
SELECT count(*) FROM t2; |
|||
connection master; |
|||
|
|||
|
|||
# Deleting same keys (slaves stop) |
|||
DELETE FROM t1 WHERE id = 10; |
|||
SELECT count(*) FROM t1; |
|||
connection slave; |
|||
call mtr.add_suppression("Slave SQL.*Could not execute Delete_rows event on table test.t1.*Error_code.*"); |
|||
call mtr.add_suppression("Slave: Can't find record in 't1'.*"); |
|||
# wait until we have the expected error |
|||
--let $slave_sql_errno= convert_error(ER_KEY_NOT_FOUND) |
|||
--source include/wait_for_slave_sql_error.inc |
|||
|
|||
connection slave; |
|||
set @save_rocksdb_read_free_rpl_tables=@@global.rocksdb_read_free_rpl_tables; |
|||
set global rocksdb_read_free_rpl_tables="t.*"; |
|||
START SLAVE; |
|||
connection master; |
|||
--source include/sync_slave_sql_with_master.inc |
|||
connection slave; |
|||
SELECT count(*) FROM t1; |
|||
connection master; |
|||
|
|||
|
|||
# cleanup |
|||
connection slave; |
|||
set global rocksdb_read_free_rpl_tables=@save_rocksdb_read_free_rpl_tables; |
|||
connection master; |
|||
SET session rocksdb_blind_delete_primary_key=@save_rocksdb_blind_delete_primary_key; |
|||
SET session rocksdb_master_skip_tx_api=@save_rocksdb_master_skip_tx_api; |
|||
|
|||
DROP TABLE t1, t2; |
|||
--source include/rpl_end.inc |
|||
@ -0,0 +1,29 @@ |
|||
drop table if exists t; |
|||
create table t ( |
|||
a int, |
|||
b int, |
|||
c varchar(12249) collate latin1_bin, |
|||
d datetime, |
|||
e int, |
|||
f int, |
|||
g blob, |
|||
h int, |
|||
i int, |
|||
key (b,e), |
|||
key (h,b) |
|||
) engine=rocksdb |
|||
partition by linear hash (i) partitions 8 ; |
|||
|
|||
insert into t values (1,1,'a',now(),1,1,'a',1,1); |
|||
insert into t values (1,1,'a',now(),1,1,'a',1,1); |
|||
insert into t values (1,1,'a',now(),1,1,'a',1,1); |
|||
insert into t values (1,1,'a',now(),1,1,'a',1,1); |
|||
insert into t values (1,1,'a',now(),1,1,'a',1,1); |
|||
insert into t values (1,1,'a',now(),1,1,'a',1,1); |
|||
insert into t values (1,1,'a',now(),1,1,'a',1,1); |
|||
insert into t values (1,1,'a',now(),1,1,'a',1,1); |
|||
select i from t group by h; |
|||
select i from t group by h; |
|||
|
|||
drop table t; |
|||
|
|||
@ -0,0 +1,494 @@ |
|||
--source include/have_rocksdb.inc |
|||
|
|||
--disable_warnings |
|||
DROP TABLE IF EXISTS t1; |
|||
DROP TABLE IF EXISTS t2; |
|||
--enable_warnings |
|||
|
|||
# |
|||
# Create a table with multiple partitions, but in the comment don't specify |
|||
# that per-partition based column families (CF) should be created. Expect that |
|||
# default CF will be used and new one won't be created. |
|||
# |
|||
CREATE TABLE t1 ( |
|||
c1 INT, |
|||
c2 INT, |
|||
name VARCHAR(25) NOT NULL, |
|||
event DATE, |
|||
PRIMARY KEY (`c1`, `c2`) COMMENT 'testcomment' |
|||
) ENGINE=ROCKSDB |
|||
PARTITION BY LIST(c1) ( |
|||
PARTITION custom_p0 VALUES IN (1, 4, 7), |
|||
PARTITION custom_p1 VALUES IN (2, 5, 8), |
|||
PARTITION custom_p2 VALUES IN (3, 6, 9) |
|||
); |
|||
|
|||
# Expecting no results here. |
|||
SELECT DISTINCT(cf_name) FROM information_schema.rocksdb_cfstats WHERE cf_name='testcomment'; |
|||
|
|||
DROP TABLE t1; |
|||
|
|||
# |
|||
# Same test case as above, only with the reverse CF. Should result in the same |
|||
# behavior. No new CF-s created, only default one will be used. |
|||
# |
|||
CREATE TABLE t1 ( |
|||
c1 INT, |
|||
c2 INT, |
|||
name VARCHAR(25) NOT NULL, |
|||
event DATE, |
|||
PRIMARY KEY (`c1`, `c2`) COMMENT 'rev:testrevcomment' |
|||
) ENGINE=ROCKSDB |
|||
PARTITION BY LIST(c1) ( |
|||
PARTITION custom_p0 VALUES IN (1, 4, 7), |
|||
PARTITION custom_p1 VALUES IN (2, 5, 8), |
|||
PARTITION custom_p2 VALUES IN (3, 6, 9) |
|||
); |
|||
|
|||
# Expecting no results here. |
|||
SELECT DISTINCT(cf_name) FROM information_schema.rocksdb_cfstats WHERE cf_name='rev:testrevcomment'; |
|||
|
|||
DROP TABLE t1; |
|||
|
|||
# |
|||
# Create a table with multiple partitions and request for separate CF to be |
|||
# created per every partition. As a result we expect three different CF-s to be |
|||
# created. |
|||
# |
|||
CREATE TABLE t1 ( |
|||
c1 INT, |
|||
c2 INT, |
|||
name VARCHAR(25) NOT NULL, |
|||
event DATE, |
|||
PRIMARY KEY (`c1`, `c2`) COMMENT 'custom_p0_cfname=foo;custom_p1_cfname=my_custom_cf;custom_p2_cfname=baz' |
|||
) ENGINE=ROCKSDB |
|||
PARTITION BY LIST(c1) ( |
|||
PARTITION custom_p0 VALUES IN (1, 4, 7), |
|||
PARTITION custom_p1 VALUES IN (2, 5, 8), |
|||
PARTITION custom_p2 VALUES IN (3, 6, 9) |
|||
); |
|||
|
|||
set @@global.rocksdb_compact_cf = 'foo'; |
|||
set @@global.rocksdb_compact_cf = 'my_custom_cf'; |
|||
set @@global.rocksdb_compact_cf = 'baz'; |
|||
|
|||
SELECT DISTINCT(cf_name) FROM information_schema.rocksdb_cfstats WHERE cf_name='foo'; |
|||
SELECT DISTINCT(cf_name) FROM information_schema.rocksdb_cfstats WHERE cf_name='my_custom_cf'; |
|||
SELECT DISTINCT(cf_name) FROM information_schema.rocksdb_cfstats WHERE cf_name='baz'; |
|||
|
|||
DROP TABLE t1; |
|||
|
|||
# |
|||
# Same test case as above, only one of the partitions has "rev:" prefix. The |
|||
# intent here is to make sure that qualifier can specify reverse CF as well. |
|||
# |
|||
CREATE TABLE t1 ( |
|||
c1 INT, |
|||
c2 INT, |
|||
name VARCHAR(25) NOT NULL, |
|||
event DATE, |
|||
PRIMARY KEY (`c1`, `c2`) COMMENT 'custom_p0_cfname=t1-p0;custom_p1_cfname=rev:bar;custom_p2_cfname=t1-p2' |
|||
) ENGINE=ROCKSDB |
|||
PARTITION BY LIST(c1) ( |
|||
PARTITION custom_p0 VALUES IN (1, 4, 7), |
|||
PARTITION custom_p1 VALUES IN (2, 5, 8), |
|||
PARTITION custom_p2 VALUES IN (3, 6, 9) |
|||
); |
|||
|
|||
set @@global.rocksdb_compact_cf = 't1-p0'; |
|||
set @@global.rocksdb_compact_cf = 'rev:bar'; |
|||
set @@global.rocksdb_compact_cf = 't1-p2'; |
|||
|
|||
SELECT DISTINCT(cf_name) FROM information_schema.rocksdb_cfstats WHERE cf_name='t1-p0'; |
|||
SELECT DISTINCT(cf_name) FROM information_schema.rocksdb_cfstats WHERE cf_name='rev:bar'; |
|||
SELECT DISTINCT(cf_name) FROM information_schema.rocksdb_cfstats WHERE cf_name='t1-p2'; |
|||
|
|||
DROP TABLE t1; |
|||
|
|||
|
|||
# |
|||
# Create a table with multiple partitions and assign two partitions to the same |
|||
# CF, third one gets a separate partition, and fourth one will belong to a |
|||
# default one. As a result we expect two new CF-s to be created. |
|||
# |
|||
CREATE TABLE t1 ( |
|||
c1 INT, |
|||
c2 INT, |
|||
name VARCHAR(25) NOT NULL, |
|||
event DATE, |
|||
PRIMARY KEY (`c1`, `c2`) COMMENT 'custom_p0_cfname=cf-zero;custom_p1_cfname=cf-one;custom_p2_cfname=cf-zero' |
|||
) ENGINE=ROCKSDB |
|||
PARTITION BY LIST(c1) ( |
|||
PARTITION custom_p0 VALUES IN (1, 4, 7), |
|||
PARTITION custom_p1 VALUES IN (2, 5, 8), |
|||
PARTITION custom_p2 VALUES IN (3, 6, 9), |
|||
PARTITION custom_p3 VALUES IN (10, 20, 30) |
|||
); |
|||
|
|||
set @@global.rocksdb_compact_cf = 'cf-zero'; |
|||
set @@global.rocksdb_compact_cf = 'cf-one'; |
|||
|
|||
SELECT DISTINCT(cf_name) FROM information_schema.rocksdb_cfstats WHERE cf_name='cf-zero'; |
|||
SELECT DISTINCT(cf_name) FROM information_schema.rocksdb_cfstats WHERE cf_name='cf-one'; |
|||
|
|||
DROP TABLE t1; |
|||
|
|||
# |
|||
# Create a table with CF-s per partition and verify that ALTER TABLE + DROP |
|||
# INDEX work for that scenario and data is persisted. |
|||
# |
|||
CREATE TABLE t1 ( |
|||
c1 INT, |
|||
c2 INT, |
|||
name VARCHAR(25) NOT NULL, |
|||
event DATE, |
|||
PRIMARY KEY (`c1`, `c2`) COMMENT 'custom_p0_cfname=foo;custom_p1_cfname=bar;custom_p2_cfname=baz' |
|||
) ENGINE=ROCKSDB |
|||
PARTITION BY LIST(c1) ( |
|||
PARTITION custom_p0 VALUES IN (1, 4, 7), |
|||
PARTITION custom_p1 VALUES IN (2, 5, 8), |
|||
PARTITION custom_p2 VALUES IN (3, 6, 9) |
|||
); |
|||
|
|||
INSERT INTO t1 VALUES (1, 1, "one", null); |
|||
INSERT INTO t1 VALUES (2, 2, "two", null); |
|||
INSERT INTO t1 VALUES (3, 3, "three", null); |
|||
INSERT INTO t1 VALUES (5, 5, "five", null); |
|||
INSERT INTO t1 VALUES (9, 9, "nine", null); |
|||
|
|||
SELECT * FROM t1; |
|||
ALTER TABLE t1 DROP PRIMARY KEY; |
|||
SELECT * FROM t1; |
|||
|
|||
# |
|||
# Verify that we can compact custom CF-s. |
|||
# |
|||
set @@global.rocksdb_compact_cf = 'foo'; |
|||
set @@global.rocksdb_compact_cf = 'bar'; |
|||
set @@global.rocksdb_compact_cf = 'baz'; |
|||
|
|||
DROP TABLE t1; |
|||
|
|||
# |
|||
# Create a table with CF-s per partition and verify that ALTER TABLE + DROP |
|||
# INDEX + ADD INDEX work for that scenario and data is persisted and new cf_name_str |
|||
# are created. |
|||
# |
|||
CREATE TABLE t1 ( |
|||
c1 INT, |
|||
c2 INT, |
|||
name VARCHAR(25) NOT NULL, |
|||
event DATE, |
|||
PRIMARY KEY (`c1`, `c2`) COMMENT 'custom_p0_cfname=foo;custom_p1_cfname=bar;custom_p2_cfname=baz' |
|||
) ENGINE=ROCKSDB |
|||
PARTITION BY LIST(c1) ( |
|||
PARTITION custom_p0 VALUES IN (1, 4, 7), |
|||
PARTITION custom_p1 VALUES IN (2, 5, 8), |
|||
PARTITION custom_p2 VALUES IN (3, 6, 9) |
|||
); |
|||
|
|||
INSERT INTO t1 VALUES (1, 1, "one", null); |
|||
INSERT INTO t1 VALUES (2, 2, "two", null); |
|||
INSERT INTO t1 VALUES (3, 3, "three", null); |
|||
INSERT INTO t1 VALUES (5, 5, "five", null); |
|||
INSERT INTO t1 VALUES (9, 9, "nine", null); |
|||
|
|||
ALTER TABLE t1 DROP PRIMARY KEY; |
|||
ALTER TABLE t1 ADD PRIMARY KEY (`c1`, `c2`) COMMENT 'custom_p0_cfname=p0_cf;custom_p1_cfname=p1_cf'; |
|||
|
|||
set @@global.rocksdb_compact_cf = 'p0_cf'; |
|||
set @@global.rocksdb_compact_cf = 'p1_cf'; |
|||
|
|||
SELECT DISTINCT(cf_name) FROM information_schema.rocksdb_cfstats WHERE cf_name='p0_cf'; |
|||
SELECT DISTINCT(cf_name) FROM information_schema.rocksdb_cfstats WHERE cf_name='p1_cf'; |
|||
|
|||
DROP TABLE t1; |
|||
|
|||
# |
|||
# Create a table CF-s per partition, use ALTER TABLE to change the way it's |
|||
# partitioned and verify that new CF-s will be created. |
|||
# |
|||
CREATE TABLE t1 ( |
|||
c1 INT, |
|||
c2 INT, |
|||
name VARCHAR(25) NOT NULL, |
|||
event DATE, |
|||
PRIMARY KEY (`c1`, `c2`) COMMENT 'custom_p0_cfname=foo;custom_p1_cfname=bar;custom_p2_cfname=baz' |
|||
) ENGINE=ROCKSDB |
|||
PARTITION BY LIST(c1) ( |
|||
PARTITION custom_p0 VALUES IN (1, 4, 7), |
|||
PARTITION custom_p1 VALUES IN (2, 5, 8), |
|||
PARTITION custom_p2 VALUES IN (3, 6, 9) |
|||
); |
|||
|
|||
INSERT INTO t1 VALUES (1, 1, "one", null); |
|||
INSERT INTO t1 VALUES (2, 2, "two", null); |
|||
INSERT INTO t1 VALUES (3, 3, "three", null); |
|||
INSERT INTO t1 VALUES (5, 5, "five", null); |
|||
INSERT INTO t1 VALUES (9, 9, "nine", null); |
|||
|
|||
ALTER TABLE t1 PARTITION BY LIST(c1) ( |
|||
PARTITION custom_p3 VALUES IN (1, 4, 7), |
|||
PARTITION custom_p4 VALUES IN (2, 5, 8, 3, 6, 9) |
|||
); |
|||
|
|||
ALTER TABLE t1 DROP PRIMARY KEY; |
|||
ALTER TABLE t1 ADD PRIMARY KEY (`c1`, `c2`) COMMENT 'custom_p3_cfname=p3_cf;custom_p4_cfname=p4_cf'; |
|||
|
|||
set @@global.rocksdb_compact_cf = 'p3_cf'; |
|||
set @@global.rocksdb_compact_cf = 'p4_cf'; |
|||
|
|||
SELECT DISTINCT(cf_name) FROM information_schema.rocksdb_cfstats WHERE cf_name='p3_cf'; |
|||
SELECT DISTINCT(cf_name) FROM information_schema.rocksdb_cfstats WHERE cf_name='p4_cf'; |
|||
|
|||
DROP TABLE t1; |
|||
|
|||
# |
|||
# Create a table CF-s per partition, use empty qualifier name. Verify that no |
|||
# new CF-s are created. This will also make sure that nothing gets added for |
|||
# `custom_p2`. |
|||
# |
|||
CREATE TABLE t1 ( |
|||
c1 INT, |
|||
c2 INT, |
|||
name VARCHAR(25) NOT NULL, |
|||
event DATE, |
|||
PRIMARY KEY (`c1`, `c2`) COMMENT 'custom_p0_cfname=foo;custom_p1_cfname=;' |
|||
) ENGINE=ROCKSDB |
|||
PARTITION BY LIST(c1) ( |
|||
PARTITION custom_p0 VALUES IN (1, 4, 7), |
|||
PARTITION custom_p1 VALUES IN (2, 5, 8), |
|||
PARTITION custom_p2 VALUES IN (3, 6, 9) |
|||
); |
|||
|
|||
DROP TABLE t1; |
|||
|
|||
# |
|||
# Verify some basic partition related operations when using PARTITION BY LIST |
|||
# COLUMNS on a VARBINARY column on a table with more complicated schema. |
|||
# |
|||
|
|||
# |
|||
# Verify that creating the table without COMMENT actually works. |
|||
# |
|||
CREATE TABLE `t2` ( |
|||
`col1` bigint(20) NOT NULL, |
|||
`col2` varbinary(64) NOT NULL, |
|||
`col3` varbinary(256) NOT NULL, |
|||
`col4` bigint(20) NOT NULL, |
|||
`col5` mediumblob NOT NULL, |
|||
PRIMARY KEY (`col1`,`col2`,`col3`) |
|||
) ENGINE=ROCKSDB DEFAULT CHARSET=latin1 |
|||
PARTITION BY LIST COLUMNS (`col2`) ( |
|||
PARTITION custom_p0 VALUES IN (0x12345), |
|||
PARTITION custom_p1 VALUES IN (0x23456), |
|||
PARTITION custom_p2 VALUES IN (0x34567), |
|||
PARTITION custom_p3 VALUES IN (0x45678), |
|||
PARTITION custom_p4 VALUES IN (0x56789), |
|||
PARTITION custom_p5 VALUES IN (0x6789A), |
|||
PARTITION custom_p6 VALUES IN (0x789AB), |
|||
PARTITION custom_p7 VALUES IN (0x89ABC) |
|||
); |
|||
|
|||
DROP TABLE t2; |
|||
|
|||
# |
|||
# Create the same table with two custom CF-s per partition as specified in the |
|||
# COMMENT. |
|||
# |
|||
CREATE TABLE `t2` ( |
|||
`col1` bigint(20) NOT NULL, |
|||
`col2` varbinary(64) NOT NULL, |
|||
`col3` varbinary(256) NOT NULL, |
|||
`col4` bigint(20) NOT NULL, |
|||
`col5` mediumblob NOT NULL, |
|||
PRIMARY KEY (`col1`,`col2`,`col3`) COMMENT 'custom_p0_cfname=my_cf0;custom_p1_cfname=my_cf1' |
|||
) ENGINE=ROCKSDB DEFAULT CHARSET=latin1 |
|||
PARTITION BY LIST COLUMNS (`col2`) ( |
|||
PARTITION custom_p0 VALUES IN (0x12345), |
|||
PARTITION custom_p1 VALUES IN (0x23456), |
|||
PARTITION custom_p2 VALUES IN (0x34567), |
|||
PARTITION custom_p3 VALUES IN (0x45678), |
|||
PARTITION custom_p4 VALUES IN (0x56789), |
|||
PARTITION custom_p5 VALUES IN (0x6789A), |
|||
PARTITION custom_p6 VALUES IN (0x789AB), |
|||
PARTITION custom_p7 VALUES IN (0x89ABC) |
|||
); |
|||
|
|||
# Verify that CF-s were created earlier. |
|||
set @@global.rocksdb_compact_cf = 'my_cf0'; |
|||
set @@global.rocksdb_compact_cf = 'my_cf1'; |
|||
|
|||
SELECT DISTINCT(cf_name) FROM information_schema.rocksdb_cfstats WHERE cf_name='my_cf0'; |
|||
SELECT DISTINCT(cf_name) FROM information_schema.rocksdb_cfstats WHERE cf_name='my_cf1'; |
|||
|
|||
# Insert some random data. |
|||
INSERT INTO t2 VALUES (100, 0x12345, 0x1, 1, 0x2); |
|||
INSERT INTO t2 VALUES (200, 0x12345, 0x1, 1, 0x2); |
|||
INSERT INTO t2 VALUES (300, 0x12345, 0x1, 1, 0x2); |
|||
INSERT INTO t2 VALUES (100, 0x23456, 0x2, 1, 0x3); |
|||
INSERT INTO t2 VALUES (100, 0x34567, 0x4, 1, 0x5); |
|||
INSERT INTO t2 VALUES (400, 0x89ABC, 0x4, 1, 0x5); |
|||
|
|||
# Verify it's there. |
|||
SELECT col1, HEX(col2), HEX(col3), col4, HEX(col5) FROM t2; |
|||
|
|||
# Verify it's being fetched from the right partition. This tests partitioning |
|||
# functionality, but we want to make sure that by adding CF-s per partition we |
|||
# don't regress anything. |
|||
EXPLAIN PARTITIONS SELECT HEX(col2) FROM t2 where col2 = 0x12345; |
|||
EXPLAIN PARTITIONS SELECT HEX(col2) FROM t2 where col2 = 0x23456; |
|||
|
|||
# Delete the current PK and create a new one referencing different CF-s. We |
|||
# need to verity that new CF-s will be created and no data will be lost in |
|||
# process. |
|||
ALTER TABLE t2 DROP PRIMARY KEY; |
|||
ALTER TABLE t2 ADD PRIMARY KEY (`col1`,`col2`,`col3`) COMMENT 'custom_p0_cfname=new_cf0;custom_p1_cfname=new_cf1'; |
|||
|
|||
# Verify that new CF-s are created as well. |
|||
set @@global.rocksdb_compact_cf = 'new_cf0'; |
|||
set @@global.rocksdb_compact_cf = 'new_cf1'; |
|||
|
|||
SELECT DISTINCT(cf_name) FROM information_schema.rocksdb_cfstats WHERE cf_name='new_cf0'; |
|||
SELECT DISTINCT(cf_name) FROM information_schema.rocksdb_cfstats WHERE cf_name='new_cf1'; |
|||
|
|||
# Insert some more random data. |
|||
INSERT INTO t2 VALUES (500, 0x12345, 0x5, 1, 0x2); |
|||
INSERT INTO t2 VALUES (700, 0x23456, 0x7, 1, 0x3); |
|||
|
|||
# Verify that partition mappings are still intact. |
|||
EXPLAIN PARTITIONS SELECT HEX(col2) FROM t2 where col2 = 0x12345; |
|||
EXPLAIN PARTITIONS SELECT HEX(col2) FROM t2 where col2 = 0x23456; |
|||
|
|||
# Verify that no data is lost. |
|||
SELECT col1, HEX(col2), HEX(col3), col4, HEX(col5) FROM t2; |
|||
|
|||
DROP TABLE t2; |
|||
|
|||
# |
|||
# Create the same table with two custom CF-s per partition as specified in the |
|||
# COMMENT. Use both the PK and SK when creating the table. |
|||
# |
|||
CREATE TABLE `t2` ( |
|||
`col1` bigint(20) NOT NULL, |
|||
`col2` varbinary(64) NOT NULL, |
|||
`col3` varbinary(256) NOT NULL, |
|||
`col4` bigint(20) NOT NULL, |
|||
`col5` mediumblob NOT NULL, |
|||
PRIMARY KEY (`col1`,`col2`,`col3`) COMMENT 'custom_p0_cfname=test_cf0;custom_p1_cfname=test_cf1', |
|||
KEY (`col2`, `col4`) COMMENT 'custom_p5_cfname=test_cf5' |
|||
) ENGINE=ROCKSDB DEFAULT CHARSET=latin1 |
|||
PARTITION BY LIST COLUMNS (`col2`) ( |
|||
PARTITION custom_p0 VALUES IN (0x12345), |
|||
PARTITION custom_p1 VALUES IN (0x23456), |
|||
PARTITION custom_p2 VALUES IN (0x34567), |
|||
PARTITION custom_p3 VALUES IN (0x45678), |
|||
PARTITION custom_p4 VALUES IN (0x56789), |
|||
PARTITION custom_p5 VALUES IN (0x6789A), |
|||
PARTITION custom_p6 VALUES IN (0x789AB), |
|||
PARTITION custom_p7 VALUES IN (0x89ABC) |
|||
); |
|||
|
|||
# Verify that CF-s were created for PK. |
|||
SELECT DISTINCT(cf_name) FROM information_schema.rocksdb_cfstats WHERE cf_name='test_cf0'; |
|||
SELECT DISTINCT(cf_name) FROM information_schema.rocksdb_cfstats WHERE cf_name='test_cf1'; |
|||
|
|||
# Verify that CF-s were created for SK. |
|||
SELECT DISTINCT(cf_name) FROM information_schema.rocksdb_cfstats WHERE cf_name='test_cf5'; |
|||
|
|||
# Insert some random data. |
|||
INSERT INTO t2 VALUES (100, 0x12345, 0x1, 1, 0x2); |
|||
INSERT INTO t2 VALUES (200, 0x12345, 0x1, 1, 0x2); |
|||
INSERT INTO t2 VALUES (300, 0x12345, 0x1, 1, 0x2); |
|||
INSERT INTO t2 VALUES (100, 0x23456, 0x2, 1, 0x3); |
|||
INSERT INTO t2 VALUES (100, 0x34567, 0x4, 1, 0x5); |
|||
INSERT INTO t2 VALUES (400, 0x89ABC, 0x4, 1, 0x5); |
|||
INSERT INTO t2 VALUES (500, 0x6789A, 0x5, 1, 0x7); |
|||
|
|||
# Basic verification that correct partition and key are used when searching. |
|||
EXPLAIN PARTITIONS SELECT * FROM t2 WHERE col2 = 0x6789A AND col4 = 1; |
|||
|
|||
# Remove the key. |
|||
ALTER TABLE t2 DROP KEY `col2`; |
|||
|
|||
# Add a new key and expect new CF to be created as well. |
|||
ALTER TABLE t2 ADD KEY (`col3`, `col4`) COMMENT 'custom_p5_cfname=another_cf_for_p5'; |
|||
|
|||
# Verify that CF-s were created for SK. |
|||
SELECT DISTINCT(cf_name) FROM information_schema.rocksdb_cfstats WHERE cf_name='another_cf_for_p5'; |
|||
|
|||
# Verify that correct partition and key are used when searching. |
|||
EXPLAIN PARTITIONS SELECT * FROM t2 WHERE col3 = 0x4 AND col2 = 0x34567; |
|||
|
|||
DROP TABLE t2; |
|||
|
|||
# |
|||
# Verify the same scenario as before, but with a UNIQUE KEY in addition to PK. |
|||
# |
|||
CREATE TABLE `t2` ( |
|||
`col1` bigint(20) NOT NULL, |
|||
`col2` varbinary(64) NOT NULL, |
|||
`col3` varbinary(256) NOT NULL, |
|||
`col4` bigint(20) NOT NULL, |
|||
`col5` mediumblob NOT NULL, |
|||
PRIMARY KEY (`col1`,`col2`,`col3`) COMMENT 'custom_p0_cfname=test_cf0;custom_p1_cfname=test_cf1', |
|||
UNIQUE KEY (`col2`, `col4`) COMMENT 'custom_p5_cfname=unique_test_cf5' |
|||
) ENGINE=ROCKSDB DEFAULT CHARSET=latin1 |
|||
PARTITION BY LIST COLUMNS (`col2`) ( |
|||
PARTITION custom_p0 VALUES IN (0x12345), |
|||
PARTITION custom_p1 VALUES IN (0x23456), |
|||
PARTITION custom_p2 VALUES IN (0x34567), |
|||
PARTITION custom_p3 VALUES IN (0x45678), |
|||
PARTITION custom_p4 VALUES IN (0x56789), |
|||
PARTITION custom_p5 VALUES IN (0x6789A), |
|||
PARTITION custom_p6 VALUES IN (0x789AB), |
|||
PARTITION custom_p7 VALUES IN (0x89ABC) |
|||
); |
|||
|
|||
# Verify that CF-s were created for SK. |
|||
SELECT DISTINCT(cf_name) FROM information_schema.rocksdb_cfstats WHERE cf_name='unique_test_cf5'; |
|||
|
|||
INSERT INTO t2 VALUES (100, 0x12345, 0x1, 1, 0x2); |
|||
|
|||
--error ER_DUP_ENTRY |
|||
INSERT INTO t2 VALUES (200, 0x12345, 0x1, 1, 0x2); |
|||
|
|||
--error ER_DUP_ENTRY |
|||
INSERT INTO t2 VALUES (300, 0x12345, 0x1, 1, 0x2); |
|||
|
|||
INSERT INTO t2 VALUES (100, 0x23456, 0x2, 1, 0x3); |
|||
INSERT INTO t2 VALUES (100, 0x34567, 0x4, 1, 0x5); |
|||
INSERT INTO t2 VALUES (400, 0x89ABC, 0x4, 1, 0x5); |
|||
INSERT INTO t2 VALUES (500, 0x6789A, 0x5, 1, 0x7); |
|||
|
|||
DROP TABLE t2; |
|||
|
|||
# |
|||
# Verify that both partitioned and non-partitioned table can share a CF. |
|||
# |
|||
CREATE TABLE t1 ( |
|||
`a` int, |
|||
PRIMARY KEY (a) COMMENT "sharedcf" |
|||
) ENGINE=ROCKSDB; |
|||
|
|||
SELECT DISTINCT(cf_name) FROM information_schema.rocksdb_cfstats WHERE cf_name='sharedcf'; |
|||
|
|||
# |
|||
# We expect this to succeed. |
|||
# |
|||
CREATE TABLE t2 ( |
|||
`a` INT, |
|||
`b` DATE, |
|||
`c` VARCHAR(42), |
|||
PRIMARY KEY (`a`) COMMENT "custom_p0_cfname=sharedcf;custom_p2_cfname=notsharedcf" |
|||
) ENGINE=ROCKSDB |
|||
PARTITION BY LIST(`a`) ( |
|||
PARTITION custom_p0 VALUES IN (1, 4, 7), |
|||
PARTITION custom_p1 VALUES IN (2, 5, 8), |
|||
PARTITION custom_p2 VALUES IN (3, 6, 9) |
|||
); |
|||
|
|||
SELECT DISTINCT(cf_name) FROM information_schema.rocksdb_cfstats WHERE cf_name='notsharedcf'; |
|||
|
|||
DROP TABLE IF EXISTS t1; |
|||
DROP TABLE IF EXISTS t2; |
|||
@ -1,37 +1,41 @@ |
|||
--source include/have_rocksdb.inc |
|||
|
|||
# |
|||
# Check whether DATA DIRECTORY and INDEX DIRECTORY |
|||
# are supported in CREATE and ALTER TABLE |
|||
# |
|||
# Note: the test does not check whether the options |
|||
# have any real effect on the table, only |
|||
# that they are accepted |
|||
# (and apparently ignored) |
|||
# |
|||
|
|||
--let $data_dir = $MYSQLTEST_VARDIR/storage_engine_data_dir/ |
|||
--let $index_dir = $MYSQLTEST_VARDIR/storage_engine_index_dir/ |
|||
--mkdir $data_dir |
|||
--mkdir $index_dir |
|||
# Check that when either DATA DIRECTORY or INDEX DIRECTORY are specified |
|||
# then MyRocks returns an appropriate error. We don't support this |
|||
# functionality and therefore shouldn't just silently accept the values. |
|||
# |
|||
|
|||
--disable_warnings |
|||
DROP TABLE IF EXISTS t1; |
|||
--enable_warnings |
|||
|
|||
--replace_result $data_dir <DATA_DIR> $index_dir <INDEX_DIR> |
|||
eval CREATE TABLE t1 (a INT PRIMARY KEY, b CHAR(8)) ENGINE=rocksdb DATA DIRECTORY = '$data_dir' INDEX DIRECTORY = '$index_dir'; |
|||
--replace_result $data_dir <DATA_DIR> $index_dir <INDEX_DIR> |
|||
SHOW CREATE TABLE t1; |
|||
|
|||
--replace_result $data_dir <DATA_DIR> $index_dir <INDEX_DIR> |
|||
eval ALTER TABLE t1 INDEX DIRECTORY = '$data_dir'; |
|||
--replace_result $data_dir <DATA_DIR> $index_dir <INDEX_DIR> |
|||
SHOW CREATE TABLE t1; |
|||
--error 1296 |
|||
eval CREATE TABLE t1 (a INT PRIMARY KEY, b CHAR(8)) ENGINE=rocksdb DATA DIRECTORY = '/foo/bar/data'; |
|||
|
|||
DROP TABLE t1; |
|||
|
|||
--rmdir $data_dir |
|||
--rmdir $index_dir |
|||
--error 1296 |
|||
eval CREATE TABLE t1 (a INT PRIMARY KEY, b CHAR(8)) ENGINE=rocksdb INDEX DIRECTORY = '/foo/bar/index'; |
|||
|
|||
# |
|||
# Verify that we'll get the same error codes when using the partitions. |
|||
# |
|||
|
|||
--error 1296 |
|||
CREATE TABLE t1 (id INT NOT NULL PRIMARY KEY) ENGINE=rocksdb PARTITION BY RANGE (id) |
|||
( |
|||
PARTITION P0 VALUES LESS THAN (1000) |
|||
DATA DIRECTORY = '/foo/bar/data/', |
|||
PARTITION P1 VALUES LESS THAN (2000) |
|||
DATA DIRECTORY = '/foo/bar/data/', |
|||
PARTITION P2 VALUES LESS THAN (MAXVALUE) |
|||
); |
|||
|
|||
--error 1296 |
|||
CREATE TABLE t1 (id int not null primary key) ENGINE=rocksdb PARTITION BY RANGE (id) |
|||
( |
|||
PARTITION P0 VALUES LESS THAN (1000) |
|||
INDEX DIRECTORY = '/foo/bar/data/', |
|||
PARTITION P1 VALUES LESS THAN (2000) |
|||
INDEX DIRECTORY = '/foo/bar/data/', |
|||
PARTITION P2 VALUES LESS THAN (MAXVALUE) |
|||
); |
|||
@ -1 +1 @@ |
|||
--gtid_mode=ON --enforce_gtid_consistency --log_slave_updates |
|||
--gtid_mode=ON --enforce_gtid_consistency --log_slave_updates --rocksdb_enable_2pc=OFF |
|||
@ -1,2 +1,2 @@ |
|||
--gtid_mode=ON --enforce_gtid_consistency --log_slave_updates |
|||
--gtid_mode=ON --enforce_gtid_consistency --log_slave_updates --rocksdb_enable_2pc=OFF |
|||
--sync_binlog=1000 --relay_log_recovery=1 |
|||
@ -1 +1 @@ |
|||
--gtid_mode=ON --enforce_gtid_consistency --log_bin --log_slave_updates --rocksdb_write_sync=ON --rocksdb_write_disable_wal=OFF |
|||
--gtid_mode=ON --enforce_gtid_consistency --log_bin --log_slave_updates --rocksdb_flush_log_at_trx_commit=1 --rocksdb_write_disable_wal=OFF |
|||
@ -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_BLIND_DELETE_PRIMARY_KEY; |
|||
SELECT @start_global_value; |
|||
@start_global_value |
|||
0 |
|||
SET @start_session_value = @@session.ROCKSDB_BLIND_DELETE_PRIMARY_KEY; |
|||
SELECT @start_session_value; |
|||
@start_session_value |
|||
0 |
|||
'# Setting to valid values in global scope#' |
|||
"Trying to set variable @@global.ROCKSDB_BLIND_DELETE_PRIMARY_KEY to 1" |
|||
SET @@global.ROCKSDB_BLIND_DELETE_PRIMARY_KEY = 1; |
|||
SELECT @@global.ROCKSDB_BLIND_DELETE_PRIMARY_KEY; |
|||
@@global.ROCKSDB_BLIND_DELETE_PRIMARY_KEY |
|||
1 |
|||
"Setting the global scope variable back to default" |
|||
SET @@global.ROCKSDB_BLIND_DELETE_PRIMARY_KEY = DEFAULT; |
|||
SELECT @@global.ROCKSDB_BLIND_DELETE_PRIMARY_KEY; |
|||
@@global.ROCKSDB_BLIND_DELETE_PRIMARY_KEY |
|||
0 |
|||
"Trying to set variable @@global.ROCKSDB_BLIND_DELETE_PRIMARY_KEY to 0" |
|||
SET @@global.ROCKSDB_BLIND_DELETE_PRIMARY_KEY = 0; |
|||
SELECT @@global.ROCKSDB_BLIND_DELETE_PRIMARY_KEY; |
|||
@@global.ROCKSDB_BLIND_DELETE_PRIMARY_KEY |
|||
0 |
|||
"Setting the global scope variable back to default" |
|||
SET @@global.ROCKSDB_BLIND_DELETE_PRIMARY_KEY = DEFAULT; |
|||
SELECT @@global.ROCKSDB_BLIND_DELETE_PRIMARY_KEY; |
|||
@@global.ROCKSDB_BLIND_DELETE_PRIMARY_KEY |
|||
0 |
|||
"Trying to set variable @@global.ROCKSDB_BLIND_DELETE_PRIMARY_KEY to on" |
|||
SET @@global.ROCKSDB_BLIND_DELETE_PRIMARY_KEY = on; |
|||
SELECT @@global.ROCKSDB_BLIND_DELETE_PRIMARY_KEY; |
|||
@@global.ROCKSDB_BLIND_DELETE_PRIMARY_KEY |
|||
1 |
|||
"Setting the global scope variable back to default" |
|||
SET @@global.ROCKSDB_BLIND_DELETE_PRIMARY_KEY = DEFAULT; |
|||
SELECT @@global.ROCKSDB_BLIND_DELETE_PRIMARY_KEY; |
|||
@@global.ROCKSDB_BLIND_DELETE_PRIMARY_KEY |
|||
0 |
|||
'# Setting to valid values in session scope#' |
|||
"Trying to set variable @@session.ROCKSDB_BLIND_DELETE_PRIMARY_KEY to 1" |
|||
SET @@session.ROCKSDB_BLIND_DELETE_PRIMARY_KEY = 1; |
|||
SELECT @@session.ROCKSDB_BLIND_DELETE_PRIMARY_KEY; |
|||
@@session.ROCKSDB_BLIND_DELETE_PRIMARY_KEY |
|||
1 |
|||
"Setting the session scope variable back to default" |
|||
SET @@session.ROCKSDB_BLIND_DELETE_PRIMARY_KEY = DEFAULT; |
|||
SELECT @@session.ROCKSDB_BLIND_DELETE_PRIMARY_KEY; |
|||
@@session.ROCKSDB_BLIND_DELETE_PRIMARY_KEY |
|||
0 |
|||
"Trying to set variable @@session.ROCKSDB_BLIND_DELETE_PRIMARY_KEY to 0" |
|||
SET @@session.ROCKSDB_BLIND_DELETE_PRIMARY_KEY = 0; |
|||
SELECT @@session.ROCKSDB_BLIND_DELETE_PRIMARY_KEY; |
|||
@@session.ROCKSDB_BLIND_DELETE_PRIMARY_KEY |
|||
0 |
|||
"Setting the session scope variable back to default" |
|||
SET @@session.ROCKSDB_BLIND_DELETE_PRIMARY_KEY = DEFAULT; |
|||
SELECT @@session.ROCKSDB_BLIND_DELETE_PRIMARY_KEY; |
|||
@@session.ROCKSDB_BLIND_DELETE_PRIMARY_KEY |
|||
0 |
|||
"Trying to set variable @@session.ROCKSDB_BLIND_DELETE_PRIMARY_KEY to on" |
|||
SET @@session.ROCKSDB_BLIND_DELETE_PRIMARY_KEY = on; |
|||
SELECT @@session.ROCKSDB_BLIND_DELETE_PRIMARY_KEY; |
|||
@@session.ROCKSDB_BLIND_DELETE_PRIMARY_KEY |
|||
1 |
|||
"Setting the session scope variable back to default" |
|||
SET @@session.ROCKSDB_BLIND_DELETE_PRIMARY_KEY = DEFAULT; |
|||
SELECT @@session.ROCKSDB_BLIND_DELETE_PRIMARY_KEY; |
|||
@@session.ROCKSDB_BLIND_DELETE_PRIMARY_KEY |
|||
0 |
|||
'# Testing with invalid values in global scope #' |
|||
"Trying to set variable @@global.ROCKSDB_BLIND_DELETE_PRIMARY_KEY to 'aaa'" |
|||
SET @@global.ROCKSDB_BLIND_DELETE_PRIMARY_KEY = 'aaa'; |
|||
Got one of the listed errors |
|||
SELECT @@global.ROCKSDB_BLIND_DELETE_PRIMARY_KEY; |
|||
@@global.ROCKSDB_BLIND_DELETE_PRIMARY_KEY |
|||
0 |
|||
"Trying to set variable @@global.ROCKSDB_BLIND_DELETE_PRIMARY_KEY to 'bbb'" |
|||
SET @@global.ROCKSDB_BLIND_DELETE_PRIMARY_KEY = 'bbb'; |
|||
Got one of the listed errors |
|||
SELECT @@global.ROCKSDB_BLIND_DELETE_PRIMARY_KEY; |
|||
@@global.ROCKSDB_BLIND_DELETE_PRIMARY_KEY |
|||
0 |
|||
SET @@global.ROCKSDB_BLIND_DELETE_PRIMARY_KEY = @start_global_value; |
|||
SELECT @@global.ROCKSDB_BLIND_DELETE_PRIMARY_KEY; |
|||
@@global.ROCKSDB_BLIND_DELETE_PRIMARY_KEY |
|||
0 |
|||
SET @@session.ROCKSDB_BLIND_DELETE_PRIMARY_KEY = @start_session_value; |
|||
SELECT @@session.ROCKSDB_BLIND_DELETE_PRIMARY_KEY; |
|||
@@session.ROCKSDB_BLIND_DELETE_PRIMARY_KEY |
|||
0 |
|||
DROP TABLE valid_values; |
|||
DROP TABLE invalid_values; |
|||
@ -0,0 +1,85 @@ |
|||
CREATE TABLE valid_values (value varchar(255)) ENGINE=myisam; |
|||
INSERT INTO valid_values VALUES(100); |
|||
INSERT INTO valid_values VALUES(1); |
|||
INSERT INTO valid_values VALUES(0); |
|||
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_DELAYED_WRITE_RATE; |
|||
SELECT @start_global_value; |
|||
@start_global_value |
|||
16777216 |
|||
'# Setting to valid values in global scope#' |
|||
"Trying to set variable @@global.ROCKSDB_DELAYED_WRITE_RATE to 100" |
|||
SET @@global.ROCKSDB_DELAYED_WRITE_RATE = 100; |
|||
SELECT @@global.ROCKSDB_DELAYED_WRITE_RATE; |
|||
@@global.ROCKSDB_DELAYED_WRITE_RATE |
|||
100 |
|||
"Setting the global scope variable back to default" |
|||
SET @@global.ROCKSDB_DELAYED_WRITE_RATE = DEFAULT; |
|||
SELECT @@global.ROCKSDB_DELAYED_WRITE_RATE; |
|||
@@global.ROCKSDB_DELAYED_WRITE_RATE |
|||
16777216 |
|||
"Trying to set variable @@global.ROCKSDB_DELAYED_WRITE_RATE to 1" |
|||
SET @@global.ROCKSDB_DELAYED_WRITE_RATE = 1; |
|||
SELECT @@global.ROCKSDB_DELAYED_WRITE_RATE; |
|||
@@global.ROCKSDB_DELAYED_WRITE_RATE |
|||
1 |
|||
"Setting the global scope variable back to default" |
|||
SET @@global.ROCKSDB_DELAYED_WRITE_RATE = DEFAULT; |
|||
SELECT @@global.ROCKSDB_DELAYED_WRITE_RATE; |
|||
@@global.ROCKSDB_DELAYED_WRITE_RATE |
|||
16777216 |
|||
"Trying to set variable @@global.ROCKSDB_DELAYED_WRITE_RATE to 0" |
|||
SET @@global.ROCKSDB_DELAYED_WRITE_RATE = 0; |
|||
SELECT @@global.ROCKSDB_DELAYED_WRITE_RATE; |
|||
@@global.ROCKSDB_DELAYED_WRITE_RATE |
|||
0 |
|||
"Setting the global scope variable back to default" |
|||
SET @@global.ROCKSDB_DELAYED_WRITE_RATE = DEFAULT; |
|||
SELECT @@global.ROCKSDB_DELAYED_WRITE_RATE; |
|||
@@global.ROCKSDB_DELAYED_WRITE_RATE |
|||
16777216 |
|||
"Trying to set variable @@session.ROCKSDB_DELAYED_WRITE_RATE to 444. It should fail because it is not session." |
|||
SET @@session.ROCKSDB_DELAYED_WRITE_RATE = 444; |
|||
ERROR HY000: Variable 'rocksdb_delayed_write_rate' is a GLOBAL variable and should be set with SET GLOBAL |
|||
'# Testing with invalid values in global scope #' |
|||
"Trying to set variable @@global.ROCKSDB_DELAYED_WRITE_RATE to 'aaa'" |
|||
SET @@global.ROCKSDB_DELAYED_WRITE_RATE = 'aaa'; |
|||
Got one of the listed errors |
|||
SELECT @@global.ROCKSDB_DELAYED_WRITE_RATE; |
|||
@@global.ROCKSDB_DELAYED_WRITE_RATE |
|||
16777216 |
|||
"Trying to set variable @@global.ROCKSDB_DELAYED_WRITE_RATE to 'bbb'" |
|||
SET @@global.ROCKSDB_DELAYED_WRITE_RATE = 'bbb'; |
|||
Got one of the listed errors |
|||
SELECT @@global.ROCKSDB_DELAYED_WRITE_RATE; |
|||
@@global.ROCKSDB_DELAYED_WRITE_RATE |
|||
16777216 |
|||
"Trying to set variable @@global.ROCKSDB_DELAYED_WRITE_RATE to '-1'" |
|||
SET @@global.ROCKSDB_DELAYED_WRITE_RATE = '-1'; |
|||
Got one of the listed errors |
|||
SELECT @@global.ROCKSDB_DELAYED_WRITE_RATE; |
|||
@@global.ROCKSDB_DELAYED_WRITE_RATE |
|||
16777216 |
|||
"Trying to set variable @@global.ROCKSDB_DELAYED_WRITE_RATE to '101'" |
|||
SET @@global.ROCKSDB_DELAYED_WRITE_RATE = '101'; |
|||
Got one of the listed errors |
|||
SELECT @@global.ROCKSDB_DELAYED_WRITE_RATE; |
|||
@@global.ROCKSDB_DELAYED_WRITE_RATE |
|||
16777216 |
|||
"Trying to set variable @@global.ROCKSDB_DELAYED_WRITE_RATE to '484436'" |
|||
SET @@global.ROCKSDB_DELAYED_WRITE_RATE = '484436'; |
|||
Got one of the listed errors |
|||
SELECT @@global.ROCKSDB_DELAYED_WRITE_RATE; |
|||
@@global.ROCKSDB_DELAYED_WRITE_RATE |
|||
16777216 |
|||
SET @@global.ROCKSDB_DELAYED_WRITE_RATE = @start_global_value; |
|||
SELECT @@global.ROCKSDB_DELAYED_WRITE_RATE; |
|||
@@global.ROCKSDB_DELAYED_WRITE_RATE |
|||
16777216 |
|||
DROP TABLE valid_values; |
|||
DROP TABLE invalid_values; |
|||
@ -1,7 +0,0 @@ |
|||
SET @start_global_value = @@global.ROCKSDB_DISABLEDATASYNC; |
|||
SELECT @start_global_value; |
|||
@start_global_value |
|||
0 |
|||
"Trying to set variable @@global.ROCKSDB_DISABLEDATASYNC to 444. It should fail because it is readonly." |
|||
SET @@global.ROCKSDB_DISABLEDATASYNC = 444; |
|||
ERROR HY000: Variable 'rocksdb_disabledatasync' is a read only variable |
|||
@ -0,0 +1,93 @@ |
|||
CREATE TABLE valid_values (value varchar(255)) ENGINE=myisam; |
|||
INSERT INTO valid_values VALUES(2); |
|||
INSERT INTO valid_values VALUES(1); |
|||
INSERT INTO valid_values VALUES(0); |
|||
CREATE TABLE invalid_values (value varchar(255)) ENGINE=myisam; |
|||
INSERT INTO invalid_values VALUES('\'aaa\''); |
|||
SET @start_global_value = @@global.ROCKSDB_FLUSH_LOG_AT_TRX_COMMIT; |
|||
SELECT @start_global_value; |
|||
@start_global_value |
|||
1 |
|||
SET @start_session_value = @@session.ROCKSDB_FLUSH_LOG_AT_TRX_COMMIT; |
|||
SELECT @start_session_value; |
|||
@start_session_value |
|||
1 |
|||
'# Setting to valid values in global scope#' |
|||
"Trying to set variable @@global.ROCKSDB_FLUSH_LOG_AT_TRX_COMMIT to 2" |
|||
SET @@global.ROCKSDB_FLUSH_LOG_AT_TRX_COMMIT = 2; |
|||
SELECT @@global.ROCKSDB_FLUSH_LOG_AT_TRX_COMMIT; |
|||
@@global.ROCKSDB_FLUSH_LOG_AT_TRX_COMMIT |
|||
2 |
|||
"Setting the global scope variable back to default" |
|||
SET @@global.ROCKSDB_FLUSH_LOG_AT_TRX_COMMIT = DEFAULT; |
|||
SELECT @@global.ROCKSDB_FLUSH_LOG_AT_TRX_COMMIT; |
|||
@@global.ROCKSDB_FLUSH_LOG_AT_TRX_COMMIT |
|||
1 |
|||
"Trying to set variable @@global.ROCKSDB_FLUSH_LOG_AT_TRX_COMMIT to 1" |
|||
SET @@global.ROCKSDB_FLUSH_LOG_AT_TRX_COMMIT = 1; |
|||
SELECT @@global.ROCKSDB_FLUSH_LOG_AT_TRX_COMMIT; |
|||
@@global.ROCKSDB_FLUSH_LOG_AT_TRX_COMMIT |
|||
1 |
|||
"Setting the global scope variable back to default" |
|||
SET @@global.ROCKSDB_FLUSH_LOG_AT_TRX_COMMIT = DEFAULT; |
|||
SELECT @@global.ROCKSDB_FLUSH_LOG_AT_TRX_COMMIT; |
|||
@@global.ROCKSDB_FLUSH_LOG_AT_TRX_COMMIT |
|||
1 |
|||
"Trying to set variable @@global.ROCKSDB_FLUSH_LOG_AT_TRX_COMMIT to 0" |
|||
SET @@global.ROCKSDB_FLUSH_LOG_AT_TRX_COMMIT = 0; |
|||
SELECT @@global.ROCKSDB_FLUSH_LOG_AT_TRX_COMMIT; |
|||
@@global.ROCKSDB_FLUSH_LOG_AT_TRX_COMMIT |
|||
0 |
|||
"Setting the global scope variable back to default" |
|||
SET @@global.ROCKSDB_FLUSH_LOG_AT_TRX_COMMIT = DEFAULT; |
|||
SELECT @@global.ROCKSDB_FLUSH_LOG_AT_TRX_COMMIT; |
|||
@@global.ROCKSDB_FLUSH_LOG_AT_TRX_COMMIT |
|||
1 |
|||
'# Setting to valid values in session scope#' |
|||
"Trying to set variable @@session.ROCKSDB_FLUSH_LOG_AT_TRX_COMMIT to 2" |
|||
SET @@session.ROCKSDB_FLUSH_LOG_AT_TRX_COMMIT = 2; |
|||
SELECT @@session.ROCKSDB_FLUSH_LOG_AT_TRX_COMMIT; |
|||
@@session.ROCKSDB_FLUSH_LOG_AT_TRX_COMMIT |
|||
2 |
|||
"Setting the session scope variable back to default" |
|||
SET @@session.ROCKSDB_FLUSH_LOG_AT_TRX_COMMIT = DEFAULT; |
|||
SELECT @@session.ROCKSDB_FLUSH_LOG_AT_TRX_COMMIT; |
|||
@@session.ROCKSDB_FLUSH_LOG_AT_TRX_COMMIT |
|||
1 |
|||
"Trying to set variable @@session.ROCKSDB_FLUSH_LOG_AT_TRX_COMMIT to 1" |
|||
SET @@session.ROCKSDB_FLUSH_LOG_AT_TRX_COMMIT = 1; |
|||
SELECT @@session.ROCKSDB_FLUSH_LOG_AT_TRX_COMMIT; |
|||
@@session.ROCKSDB_FLUSH_LOG_AT_TRX_COMMIT |
|||
1 |
|||
"Setting the session scope variable back to default" |
|||
SET @@session.ROCKSDB_FLUSH_LOG_AT_TRX_COMMIT = DEFAULT; |
|||
SELECT @@session.ROCKSDB_FLUSH_LOG_AT_TRX_COMMIT; |
|||
@@session.ROCKSDB_FLUSH_LOG_AT_TRX_COMMIT |
|||
1 |
|||
"Trying to set variable @@session.ROCKSDB_FLUSH_LOG_AT_TRX_COMMIT to 0" |
|||
SET @@session.ROCKSDB_FLUSH_LOG_AT_TRX_COMMIT = 0; |
|||
SELECT @@session.ROCKSDB_FLUSH_LOG_AT_TRX_COMMIT; |
|||
@@session.ROCKSDB_FLUSH_LOG_AT_TRX_COMMIT |
|||
0 |
|||
"Setting the session scope variable back to default" |
|||
SET @@session.ROCKSDB_FLUSH_LOG_AT_TRX_COMMIT = DEFAULT; |
|||
SELECT @@session.ROCKSDB_FLUSH_LOG_AT_TRX_COMMIT; |
|||
@@session.ROCKSDB_FLUSH_LOG_AT_TRX_COMMIT |
|||
1 |
|||
'# Testing with invalid values in global scope #' |
|||
"Trying to set variable @@global.ROCKSDB_FLUSH_LOG_AT_TRX_COMMIT to 'aaa'" |
|||
SET @@global.ROCKSDB_FLUSH_LOG_AT_TRX_COMMIT = 'aaa'; |
|||
Got one of the listed errors |
|||
SELECT @@global.ROCKSDB_FLUSH_LOG_AT_TRX_COMMIT; |
|||
@@global.ROCKSDB_FLUSH_LOG_AT_TRX_COMMIT |
|||
1 |
|||
SET @@global.ROCKSDB_FLUSH_LOG_AT_TRX_COMMIT = @start_global_value; |
|||
SELECT @@global.ROCKSDB_FLUSH_LOG_AT_TRX_COMMIT; |
|||
@@global.ROCKSDB_FLUSH_LOG_AT_TRX_COMMIT |
|||
1 |
|||
SET @@session.ROCKSDB_FLUSH_LOG_AT_TRX_COMMIT = @start_session_value; |
|||
SELECT @@session.ROCKSDB_FLUSH_LOG_AT_TRX_COMMIT; |
|||
@@session.ROCKSDB_FLUSH_LOG_AT_TRX_COMMIT |
|||
1 |
|||
DROP TABLE valid_values; |
|||
DROP TABLE invalid_values; |
|||
@ -0,0 +1,15 @@ |
|||
DROP TABLE IF EXISTS t; |
|||
CREATE TABLE t (a INT PRIMARY KEY, b CHAR(8)) ENGINE=rocksdb; |
|||
INSERT INTO t (a,b) VALUES (1,'bar'),(2,'foo'); |
|||
SET @ORIG_PAUSE_BACKGROUND_WORK = @@rocksdb_force_compute_memtable_stats; |
|||
set global rocksdb_force_flush_memtable_now = true; |
|||
INSERT INTO t (a,b) VALUES (3,'dead'),(4,'beef'),(5,'a'),(6,'bbb'),(7,'c'),(8,'d'); |
|||
set global rocksdb_force_compute_memtable_stats=0; |
|||
SELECT TABLE_ROWS INTO @ROWS_EXCLUDE_MEMTABLE FROM information_schema.TABLES WHERE table_name = 't'; |
|||
set global rocksdb_force_compute_memtable_stats=1; |
|||
SELECT TABLE_ROWS INTO @ROWS_INCLUDE_MEMTABLE FROM information_schema.TABLES WHERE table_name = 't'; |
|||
select case when @ROWS_INCLUDE_MEMTABLE-@ROWS_EXCLUDE_MEMTABLE > 0 then 'true' else 'false' end; |
|||
case when @ROWS_INCLUDE_MEMTABLE-@ROWS_EXCLUDE_MEMTABLE > 0 then 'true' else 'false' end |
|||
true |
|||
DROP TABLE t; |
|||
set global rocksdb_force_compute_memtable_stats = @ORIG_PAUSE_BACKGROUND_WORK; |
|||
@ -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_MASTER_SKIP_TX_API; |
|||
SELECT @start_global_value; |
|||
@start_global_value |
|||
0 |
|||
SET @start_session_value = @@session.ROCKSDB_MASTER_SKIP_TX_API; |
|||
SELECT @start_session_value; |
|||
@start_session_value |
|||
0 |
|||
'# Setting to valid values in global scope#' |
|||
"Trying to set variable @@global.ROCKSDB_MASTER_SKIP_TX_API to 1" |
|||
SET @@global.ROCKSDB_MASTER_SKIP_TX_API = 1; |
|||
SELECT @@global.ROCKSDB_MASTER_SKIP_TX_API; |
|||
@@global.ROCKSDB_MASTER_SKIP_TX_API |
|||
1 |
|||
"Setting the global scope variable back to default" |
|||
SET @@global.ROCKSDB_MASTER_SKIP_TX_API = DEFAULT; |
|||
SELECT @@global.ROCKSDB_MASTER_SKIP_TX_API; |
|||
@@global.ROCKSDB_MASTER_SKIP_TX_API |
|||
0 |
|||
"Trying to set variable @@global.ROCKSDB_MASTER_SKIP_TX_API to 0" |
|||
SET @@global.ROCKSDB_MASTER_SKIP_TX_API = 0; |
|||
SELECT @@global.ROCKSDB_MASTER_SKIP_TX_API; |
|||
@@global.ROCKSDB_MASTER_SKIP_TX_API |
|||
0 |
|||
"Setting the global scope variable back to default" |
|||
SET @@global.ROCKSDB_MASTER_SKIP_TX_API = DEFAULT; |
|||
SELECT @@global.ROCKSDB_MASTER_SKIP_TX_API; |
|||
@@global.ROCKSDB_MASTER_SKIP_TX_API |
|||
0 |
|||
"Trying to set variable @@global.ROCKSDB_MASTER_SKIP_TX_API to on" |
|||
SET @@global.ROCKSDB_MASTER_SKIP_TX_API = on; |
|||
SELECT @@global.ROCKSDB_MASTER_SKIP_TX_API; |
|||
@@global.ROCKSDB_MASTER_SKIP_TX_API |
|||
1 |
|||
"Setting the global scope variable back to default" |
|||
SET @@global.ROCKSDB_MASTER_SKIP_TX_API = DEFAULT; |
|||
SELECT @@global.ROCKSDB_MASTER_SKIP_TX_API; |
|||
@@global.ROCKSDB_MASTER_SKIP_TX_API |
|||
0 |
|||
'# Setting to valid values in session scope#' |
|||
"Trying to set variable @@session.ROCKSDB_MASTER_SKIP_TX_API to 1" |
|||
SET @@session.ROCKSDB_MASTER_SKIP_TX_API = 1; |
|||
SELECT @@session.ROCKSDB_MASTER_SKIP_TX_API; |
|||
@@session.ROCKSDB_MASTER_SKIP_TX_API |
|||
1 |
|||
"Setting the session scope variable back to default" |
|||
SET @@session.ROCKSDB_MASTER_SKIP_TX_API = DEFAULT; |
|||
SELECT @@session.ROCKSDB_MASTER_SKIP_TX_API; |
|||
@@session.ROCKSDB_MASTER_SKIP_TX_API |
|||
0 |
|||
"Trying to set variable @@session.ROCKSDB_MASTER_SKIP_TX_API to 0" |
|||
SET @@session.ROCKSDB_MASTER_SKIP_TX_API = 0; |
|||
SELECT @@session.ROCKSDB_MASTER_SKIP_TX_API; |
|||
@@session.ROCKSDB_MASTER_SKIP_TX_API |
|||
0 |
|||
"Setting the session scope variable back to default" |
|||
SET @@session.ROCKSDB_MASTER_SKIP_TX_API = DEFAULT; |
|||
SELECT @@session.ROCKSDB_MASTER_SKIP_TX_API; |
|||
@@session.ROCKSDB_MASTER_SKIP_TX_API |
|||
0 |
|||
"Trying to set variable @@session.ROCKSDB_MASTER_SKIP_TX_API to on" |
|||
SET @@session.ROCKSDB_MASTER_SKIP_TX_API = on; |
|||
SELECT @@session.ROCKSDB_MASTER_SKIP_TX_API; |
|||
@@session.ROCKSDB_MASTER_SKIP_TX_API |
|||
1 |
|||
"Setting the session scope variable back to default" |
|||
SET @@session.ROCKSDB_MASTER_SKIP_TX_API = DEFAULT; |
|||
SELECT @@session.ROCKSDB_MASTER_SKIP_TX_API; |
|||
@@session.ROCKSDB_MASTER_SKIP_TX_API |
|||
0 |
|||
'# Testing with invalid values in global scope #' |
|||
"Trying to set variable @@global.ROCKSDB_MASTER_SKIP_TX_API to 'aaa'" |
|||
SET @@global.ROCKSDB_MASTER_SKIP_TX_API = 'aaa'; |
|||
Got one of the listed errors |
|||
SELECT @@global.ROCKSDB_MASTER_SKIP_TX_API; |
|||
@@global.ROCKSDB_MASTER_SKIP_TX_API |
|||
0 |
|||
"Trying to set variable @@global.ROCKSDB_MASTER_SKIP_TX_API to 'bbb'" |
|||
SET @@global.ROCKSDB_MASTER_SKIP_TX_API = 'bbb'; |
|||
Got one of the listed errors |
|||
SELECT @@global.ROCKSDB_MASTER_SKIP_TX_API; |
|||
@@global.ROCKSDB_MASTER_SKIP_TX_API |
|||
0 |
|||
SET @@global.ROCKSDB_MASTER_SKIP_TX_API = @start_global_value; |
|||
SELECT @@global.ROCKSDB_MASTER_SKIP_TX_API; |
|||
@@global.ROCKSDB_MASTER_SKIP_TX_API |
|||
0 |
|||
SET @@session.ROCKSDB_MASTER_SKIP_TX_API = @start_session_value; |
|||
SELECT @@session.ROCKSDB_MASTER_SKIP_TX_API; |
|||
@@session.ROCKSDB_MASTER_SKIP_TX_API |
|||
0 |
|||
DROP TABLE valid_values; |
|||
DROP TABLE invalid_values; |
|||
@ -1,114 +0,0 @@ |
|||
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'); |
|||
INSERT INTO valid_values VALUES('off'); |
|||
CREATE TABLE invalid_values (value varchar(255)) ENGINE=myisam; |
|||
INSERT INTO invalid_values VALUES('\'aaa\''); |
|||
SET @start_global_value = @@global.ROCKSDB_WRITE_SYNC; |
|||
SELECT @start_global_value; |
|||
@start_global_value |
|||
0 |
|||
SET @start_session_value = @@session.ROCKSDB_WRITE_SYNC; |
|||
SELECT @start_session_value; |
|||
@start_session_value |
|||
0 |
|||
'# Setting to valid values in global scope#' |
|||
"Trying to set variable @@global.ROCKSDB_WRITE_SYNC to 1" |
|||
SET @@global.ROCKSDB_WRITE_SYNC = 1; |
|||
SELECT @@global.ROCKSDB_WRITE_SYNC; |
|||
@@global.ROCKSDB_WRITE_SYNC |
|||
1 |
|||
"Setting the global scope variable back to default" |
|||
SET @@global.ROCKSDB_WRITE_SYNC = DEFAULT; |
|||
SELECT @@global.ROCKSDB_WRITE_SYNC; |
|||
@@global.ROCKSDB_WRITE_SYNC |
|||
0 |
|||
"Trying to set variable @@global.ROCKSDB_WRITE_SYNC to 0" |
|||
SET @@global.ROCKSDB_WRITE_SYNC = 0; |
|||
SELECT @@global.ROCKSDB_WRITE_SYNC; |
|||
@@global.ROCKSDB_WRITE_SYNC |
|||
0 |
|||
"Setting the global scope variable back to default" |
|||
SET @@global.ROCKSDB_WRITE_SYNC = DEFAULT; |
|||
SELECT @@global.ROCKSDB_WRITE_SYNC; |
|||
@@global.ROCKSDB_WRITE_SYNC |
|||
0 |
|||
"Trying to set variable @@global.ROCKSDB_WRITE_SYNC to on" |
|||
SET @@global.ROCKSDB_WRITE_SYNC = on; |
|||
SELECT @@global.ROCKSDB_WRITE_SYNC; |
|||
@@global.ROCKSDB_WRITE_SYNC |
|||
1 |
|||
"Setting the global scope variable back to default" |
|||
SET @@global.ROCKSDB_WRITE_SYNC = DEFAULT; |
|||
SELECT @@global.ROCKSDB_WRITE_SYNC; |
|||
@@global.ROCKSDB_WRITE_SYNC |
|||
0 |
|||
"Trying to set variable @@global.ROCKSDB_WRITE_SYNC to off" |
|||
SET @@global.ROCKSDB_WRITE_SYNC = off; |
|||
SELECT @@global.ROCKSDB_WRITE_SYNC; |
|||
@@global.ROCKSDB_WRITE_SYNC |
|||
0 |
|||
"Setting the global scope variable back to default" |
|||
SET @@global.ROCKSDB_WRITE_SYNC = DEFAULT; |
|||
SELECT @@global.ROCKSDB_WRITE_SYNC; |
|||
@@global.ROCKSDB_WRITE_SYNC |
|||
0 |
|||
'# Setting to valid values in session scope#' |
|||
"Trying to set variable @@session.ROCKSDB_WRITE_SYNC to 1" |
|||
SET @@session.ROCKSDB_WRITE_SYNC = 1; |
|||
SELECT @@session.ROCKSDB_WRITE_SYNC; |
|||
@@session.ROCKSDB_WRITE_SYNC |
|||
1 |
|||
"Setting the session scope variable back to default" |
|||
SET @@session.ROCKSDB_WRITE_SYNC = DEFAULT; |
|||
SELECT @@session.ROCKSDB_WRITE_SYNC; |
|||
@@session.ROCKSDB_WRITE_SYNC |
|||
0 |
|||
"Trying to set variable @@session.ROCKSDB_WRITE_SYNC to 0" |
|||
SET @@session.ROCKSDB_WRITE_SYNC = 0; |
|||
SELECT @@session.ROCKSDB_WRITE_SYNC; |
|||
@@session.ROCKSDB_WRITE_SYNC |
|||
0 |
|||
"Setting the session scope variable back to default" |
|||
SET @@session.ROCKSDB_WRITE_SYNC = DEFAULT; |
|||
SELECT @@session.ROCKSDB_WRITE_SYNC; |
|||
@@session.ROCKSDB_WRITE_SYNC |
|||
0 |
|||
"Trying to set variable @@session.ROCKSDB_WRITE_SYNC to on" |
|||
SET @@session.ROCKSDB_WRITE_SYNC = on; |
|||
SELECT @@session.ROCKSDB_WRITE_SYNC; |
|||
@@session.ROCKSDB_WRITE_SYNC |
|||
1 |
|||
"Setting the session scope variable back to default" |
|||
SET @@session.ROCKSDB_WRITE_SYNC = DEFAULT; |
|||
SELECT @@session.ROCKSDB_WRITE_SYNC; |
|||
@@session.ROCKSDB_WRITE_SYNC |
|||
0 |
|||
"Trying to set variable @@session.ROCKSDB_WRITE_SYNC to off" |
|||
SET @@session.ROCKSDB_WRITE_SYNC = off; |
|||
SELECT @@session.ROCKSDB_WRITE_SYNC; |
|||
@@session.ROCKSDB_WRITE_SYNC |
|||
0 |
|||
"Setting the session scope variable back to default" |
|||
SET @@session.ROCKSDB_WRITE_SYNC = DEFAULT; |
|||
SELECT @@session.ROCKSDB_WRITE_SYNC; |
|||
@@session.ROCKSDB_WRITE_SYNC |
|||
0 |
|||
'# Testing with invalid values in global scope #' |
|||
"Trying to set variable @@global.ROCKSDB_WRITE_SYNC to 'aaa'" |
|||
SET @@global.ROCKSDB_WRITE_SYNC = 'aaa'; |
|||
Got one of the listed errors |
|||
SELECT @@global.ROCKSDB_WRITE_SYNC; |
|||
@@global.ROCKSDB_WRITE_SYNC |
|||
0 |
|||
SET @@global.ROCKSDB_WRITE_SYNC = @start_global_value; |
|||
SELECT @@global.ROCKSDB_WRITE_SYNC; |
|||
@@global.ROCKSDB_WRITE_SYNC |
|||
0 |
|||
SET @@session.ROCKSDB_WRITE_SYNC = @start_session_value; |
|||
SELECT @@session.ROCKSDB_WRITE_SYNC; |
|||
@@session.ROCKSDB_WRITE_SYNC |
|||
0 |
|||
DROP TABLE valid_values; |
|||
DROP TABLE invalid_values; |
|||
@ -0,0 +1,18 @@ |
|||
--source include/have_rocksdb.inc |
|||
|
|||
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\''); |
|||
|
|||
--let $sys_var=ROCKSDB_BLIND_DELETE_PRIMARY_KEY |
|||
--let $read_only=0 |
|||
--let $session=1 |
|||
--source include/rocksdb_sys_var.inc |
|||
|
|||
DROP TABLE valid_values; |
|||
DROP TABLE invalid_values; |
|||
@ -0,0 +1,22 @@ |
|||
--source include/have_rocksdb.inc |
|||
|
|||
CREATE TABLE valid_values (value varchar(255)) ENGINE=myisam; |
|||
INSERT INTO valid_values VALUES(100); |
|||
INSERT INTO valid_values VALUES(1); |
|||
INSERT INTO valid_values VALUES(0); |
|||
|
|||
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\''); |
|||
|
|||
--let $sys_var=ROCKSDB_DELAYED_WRITE_RATE |
|||
--let $read_only=0 |
|||
--let $session=0 |
|||
--source include/rocksdb_sys_var.inc |
|||
|
|||
DROP TABLE valid_values; |
|||
DROP TABLE invalid_values; |
|||
|
|||
@ -1,6 +0,0 @@ |
|||
--source include/have_rocksdb.inc |
|||
|
|||
--let $sys_var=ROCKSDB_DISABLEDATASYNC |
|||
--let $read_only=1 |
|||
--let $session=0 |
|||
--source include/rocksdb_sys_var.inc |
|||
@ -0,0 +1,18 @@ |
|||
--source include/have_rocksdb.inc |
|||
|
|||
CREATE TABLE valid_values (value varchar(255)) ENGINE=myisam; |
|||
INSERT INTO valid_values VALUES(2); |
|||
INSERT INTO valid_values VALUES(1); |
|||
INSERT INTO valid_values VALUES(0); |
|||
|
|||
CREATE TABLE invalid_values (value varchar(255)) ENGINE=myisam; |
|||
INSERT INTO invalid_values VALUES('\'aaa\''); |
|||
|
|||
--let $sys_var=ROCKSDB_FLUSH_LOG_AT_TRX_COMMIT |
|||
--let $read_only=0 |
|||
--let $session=1 |
|||
--source include/rocksdb_sys_var.inc |
|||
|
|||
DROP TABLE valid_values; |
|||
DROP TABLE invalid_values; |
|||
|
|||
@ -0,0 +1,23 @@ |
|||
--source include/have_rocksdb.inc |
|||
--disable_warnings |
|||
DROP TABLE IF EXISTS t; |
|||
--enable_warnings |
|||
|
|||
CREATE TABLE t (a INT PRIMARY KEY, b CHAR(8)) ENGINE=rocksdb; |
|||
INSERT INTO t (a,b) VALUES (1,'bar'),(2,'foo'); |
|||
|
|||
SET @ORIG_PAUSE_BACKGROUND_WORK = @@rocksdb_force_compute_memtable_stats; |
|||
set global rocksdb_force_flush_memtable_now = true; |
|||
|
|||
INSERT INTO t (a,b) VALUES (3,'dead'),(4,'beef'),(5,'a'),(6,'bbb'),(7,'c'),(8,'d'); |
|||
|
|||
set global rocksdb_force_compute_memtable_stats=0; |
|||
SELECT TABLE_ROWS INTO @ROWS_EXCLUDE_MEMTABLE FROM information_schema.TABLES WHERE table_name = 't'; |
|||
|
|||
set global rocksdb_force_compute_memtable_stats=1; |
|||
SELECT TABLE_ROWS INTO @ROWS_INCLUDE_MEMTABLE FROM information_schema.TABLES WHERE table_name = 't'; |
|||
|
|||
select case when @ROWS_INCLUDE_MEMTABLE-@ROWS_EXCLUDE_MEMTABLE > 0 then 'true' else 'false' end; |
|||
|
|||
DROP TABLE t; |
|||
set global rocksdb_force_compute_memtable_stats = @ORIG_PAUSE_BACKGROUND_WORK; |
|||
@ -0,0 +1,113 @@ |
|||
/* Copyright (c) 2017, Percona and/or its affiliates. All rights reserved.
|
|||
|
|||
This program is free software; you can redistribute it and/or modify |
|||
it under the terms of the GNU General Public License as published by |
|||
the Free Software Foundation; version 2 of the License. |
|||
|
|||
This program is distributed in the hope that it will be useful, |
|||
but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
GNU General Public License for more details. |
|||
|
|||
You should have received a copy of the GNU General Public License |
|||
along with this program; if not, write to the Free Software |
|||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ |
|||
|
|||
#ifdef USE_PRAGMA_IMPLEMENTATION
|
|||
#pragma implementation // gcc: Class implementation
|
|||
#endif
|
|||
|
|||
#define MYSQL_SERVER 1
|
|||
|
|||
/* The C++ file's header */ |
|||
#include "./rdb_psi.h"
|
|||
|
|||
/* MySQL header files */ |
|||
#include <mysql/psi/mysql_stage.h>
|
|||
|
|||
namespace myrocks { |
|||
|
|||
/*
|
|||
The following is needed as an argument for mysql_stage_register, |
|||
irrespectively of whether we're compiling with P_S or not. |
|||
*/ |
|||
my_core::PSI_stage_info stage_waiting_on_row_lock = {0, "Waiting for row lock", |
|||
0}; |
|||
|
|||
#ifdef HAVE_PSI_INTERFACE
|
|||
my_core::PSI_stage_info *all_rocksdb_stages[] = {&stage_waiting_on_row_lock}; |
|||
|
|||
my_core::PSI_thread_key rdb_background_psi_thread_key, |
|||
rdb_drop_idx_psi_thread_key; |
|||
|
|||
my_core::PSI_thread_info all_rocksdb_threads[] = { |
|||
{&rdb_background_psi_thread_key, "background", PSI_FLAG_GLOBAL}, |
|||
{&rdb_drop_idx_psi_thread_key, "drop index", PSI_FLAG_GLOBAL}, |
|||
}; |
|||
|
|||
my_core::PSI_mutex_key rdb_psi_open_tbls_mutex_key, rdb_signal_bg_psi_mutex_key, |
|||
rdb_signal_drop_idx_psi_mutex_key, rdb_collation_data_mutex_key, |
|||
rdb_mem_cmp_space_mutex_key, key_mutex_tx_list, rdb_sysvars_psi_mutex_key, |
|||
rdb_cfm_mutex_key; |
|||
|
|||
my_core::PSI_mutex_info all_rocksdb_mutexes[] = { |
|||
{&rdb_psi_open_tbls_mutex_key, "open tables", PSI_FLAG_GLOBAL}, |
|||
{&rdb_signal_bg_psi_mutex_key, "stop background", PSI_FLAG_GLOBAL}, |
|||
{&rdb_signal_drop_idx_psi_mutex_key, "signal drop index", PSI_FLAG_GLOBAL}, |
|||
{&rdb_collation_data_mutex_key, "collation data init", PSI_FLAG_GLOBAL}, |
|||
{&rdb_mem_cmp_space_mutex_key, "collation space char data init", |
|||
PSI_FLAG_GLOBAL}, |
|||
{&key_mutex_tx_list, "tx_list", PSI_FLAG_GLOBAL}, |
|||
{&rdb_sysvars_psi_mutex_key, "setting sysvar", PSI_FLAG_GLOBAL}, |
|||
{&rdb_cfm_mutex_key, "column family manager", PSI_FLAG_GLOBAL}, |
|||
}; |
|||
|
|||
my_core::PSI_rwlock_key key_rwlock_collation_exception_list, |
|||
key_rwlock_read_free_rpl_tables, key_rwlock_skip_unique_check_tables; |
|||
|
|||
my_core::PSI_rwlock_info all_rocksdb_rwlocks[] = { |
|||
{&key_rwlock_collation_exception_list, "collation_exception_list", |
|||
PSI_FLAG_GLOBAL}, |
|||
{&key_rwlock_read_free_rpl_tables, "read_free_rpl_tables", PSI_FLAG_GLOBAL}, |
|||
{&key_rwlock_skip_unique_check_tables, "skip_unique_check_tables", |
|||
PSI_FLAG_GLOBAL}, |
|||
}; |
|||
|
|||
my_core::PSI_cond_key rdb_signal_bg_psi_cond_key, |
|||
rdb_signal_drop_idx_psi_cond_key; |
|||
|
|||
my_core::PSI_cond_info all_rocksdb_conds[] = { |
|||
{&rdb_signal_bg_psi_cond_key, "cond signal background", PSI_FLAG_GLOBAL}, |
|||
{&rdb_signal_drop_idx_psi_cond_key, "cond signal drop index", |
|||
PSI_FLAG_GLOBAL}, |
|||
}; |
|||
|
|||
void init_rocksdb_psi_keys() { |
|||
const char *const category = "rocksdb"; |
|||
int count; |
|||
|
|||
if (PSI_server == nullptr) |
|||
return; |
|||
|
|||
count = array_elements(all_rocksdb_mutexes); |
|||
PSI_server->register_mutex(category, all_rocksdb_mutexes, count); |
|||
|
|||
count = array_elements(all_rocksdb_rwlocks); |
|||
PSI_server->register_rwlock(category, all_rocksdb_rwlocks, count); |
|||
|
|||
count = array_elements(all_rocksdb_conds); |
|||
//TODO Disabling PFS for conditions due to the bug
|
|||
// https://github.com/MySQLOnRocksDB/mysql-5.6/issues/92
|
|||
// PSI_server->register_cond(category, all_rocksdb_conds, count);
|
|||
|
|||
count = array_elements(all_rocksdb_stages); |
|||
mysql_stage_register(category, all_rocksdb_stages, count); |
|||
|
|||
count = array_elements(all_rocksdb_threads); |
|||
mysql_thread_register(category, all_rocksdb_threads, count); |
|||
} |
|||
#else // HAVE_PSI_INTERFACE
|
|||
void init_rocksdb_psi_keys() {} |
|||
#endif // HAVE_PSI_INTERFACE
|
|||
|
|||
} // namespace myrocks
|
|||
@ -0,0 +1,55 @@ |
|||
/* Copyright (c) 2017, Percona and/or its affiliates. All rights reserved. |
|||
|
|||
This program is free software; you can redistribute it and/or modify |
|||
it under the terms of the GNU General Public License as published by |
|||
the Free Software Foundation; version 2 of the License. |
|||
|
|||
This program is distributed in the hope that it will be useful, |
|||
but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
GNU General Public License for more details. |
|||
|
|||
You should have received a copy of the GNU General Public License |
|||
along with this program; if not, write to the Free Software |
|||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ |
|||
#pragma once |
|||
|
|||
#ifndef _rdb_psi_h_ |
|||
#define _rdb_psi_h_ |
|||
|
|||
/* MySQL header files */ |
|||
#include <my_global.h> |
|||
#include <mysql/psi/psi.h> |
|||
|
|||
/* MyRocks header files */ |
|||
#include "./rdb_utils.h" |
|||
|
|||
namespace myrocks { |
|||
|
|||
/* |
|||
The following is needed as an argument for mysql_stage_register, |
|||
irrespectively of whether we're compiling with P_S or not. |
|||
*/ |
|||
extern my_core::PSI_stage_info stage_waiting_on_row_lock; |
|||
|
|||
#ifdef HAVE_PSI_INTERFACE |
|||
extern my_core::PSI_thread_key rdb_background_psi_thread_key, |
|||
rdb_drop_idx_psi_thread_key; |
|||
|
|||
extern my_core::PSI_mutex_key rdb_psi_open_tbls_mutex_key, |
|||
rdb_signal_bg_psi_mutex_key, rdb_signal_drop_idx_psi_mutex_key, |
|||
rdb_collation_data_mutex_key, rdb_mem_cmp_space_mutex_key, |
|||
key_mutex_tx_list, rdb_sysvars_psi_mutex_key, rdb_cfm_mutex_key; |
|||
|
|||
extern my_core::PSI_rwlock_key key_rwlock_collation_exception_list, |
|||
key_rwlock_read_free_rpl_tables, key_rwlock_skip_unique_check_tables; |
|||
|
|||
extern my_core::PSI_cond_key rdb_signal_bg_psi_cond_key, |
|||
rdb_signal_drop_idx_psi_cond_key; |
|||
#endif // HAVE_PSI_INTERFACE |
|||
|
|||
void init_rocksdb_psi_keys(); |
|||
|
|||
} // namespace myrocks |
|||
|
|||
#endif // _rdb_psi_h_ |
|||
@ -1 +1 @@ |
|||
Subproject commit bc5d7b70299b763127f3714055a63ebe7e04ad47 |
|||
Subproject commit ba4c77bd6b16ea493c555561ed2e59bdc4c15fc0 |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue