summaryrefslogtreecommitdiff
path: root/storage/rocksdb/mysql-test/rocksdb/t/show_engine.test
blob: 06f64ddb3fa56e6679e4d224b6767c20f39ff3e5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
--source include/have_rocksdb.inc
--source include/have_partition.inc

--source include/restart_mysqld.inc

#
# SHOW ENGINE STATUS command
# Checking that the command doesn't produce an error.
# If it starts producing an actual result, the result file
# will need to be updated, and possibly masked.

--disable_warnings
DROP TABLE IF EXISTS t1;
DROP TABLE IF EXISTS t2;
DROP TABLE IF EXISTS t3;
DROP TABLE IF EXISTS t4;
--enable_warnings

CREATE TABLE t1 (i INT, PRIMARY KEY (i) COMMENT 'cf_t1') ENGINE = ROCKSDB;
CREATE TABLE t2 (j INT, PRIMARY KEY (j) COMMENT 'rev:cf_t2') ENGINE = ROCKSDB;
CREATE TABLE t3 (k INT, PRIMARY KEY (k) COMMENT 'cf_t1') ENGINE = ROCKSDB;

# With partition based column family creation we now expect all the partitions
# to belong to a default column family because mapping wasn't specified in
# this case.
CREATE TABLE t4 (l INT, PRIMARY KEY (l) COMMENT 'cf_t4') ENGINE = ROCKSDB
    PARTITION BY KEY(l) PARTITIONS 4;

SET @save.rocksdb_max_background_jobs= @@global.rocksdb_max_background_jobs;
SET GLOBAL rocksdb_max_background_jobs= 1;

INSERT INTO t1 VALUES (1), (2), (3);
SELECT COUNT(*) FROM t1;

INSERT INTO t2 VALUES (1), (2), (3), (4);
SELECT COUNT(*) FROM t2;

INSERT INTO t4 VALUES (1), (2), (3), (4), (5);
SELECT COUNT(*) FROM t4;

SET GLOBAL rocksdb_force_flush_memtable_now=1;
SET GLOBAL rocksdb_compact_cf="cf_t1";
--replace_column 2 # 3 #
SHOW ENGINE rocksdb STATUS;

# Fetch data from information schema as well
--replace_column 3 #
SELECT * FROM INFORMATION_SCHEMA.ROCKSDB_CFSTATS;

--replace_column 2 #
SELECT * FROM INFORMATION_SCHEMA.ROCKSDB_DBSTATS;

SELECT TABLE_SCHEMA, TABLE_NAME, PARTITION_NAME, COUNT(STAT_TYPE)
FROM INFORMATION_SCHEMA.ROCKSDB_PERF_CONTEXT
WHERE TABLE_SCHEMA = 'test'
GROUP BY TABLE_NAME, PARTITION_NAME;

--replace_column 3 #
SELECT * FROM INFORMATION_SCHEMA.ROCKSDB_CF_OPTIONS;
 
DROP TABLE t1;
DROP TABLE t2;
DROP TABLE t3;
DROP TABLE t4;

SHOW ENGINE rocksdb MUTEX;
# For SHOW ALL MUTEX even the number of lines is volatile, so the result logging is disabled
--disable_result_log
SHOW ENGINE ALL MUTEX;
--enable_result_log

# The output from SHOW ENGINE ROCKSDB TRANSACTION STATUS has some
# non-deterministic results.  Replace the timestamp with 'TIMESTAMP', the
# number of seconds active with 'NUM', the thread id with 'TID' and the thread
# pointer with 'PTR'.  This test may fail in the future if it is being run in
# parallel with other tests as the number of snapshots would then be greater
# than expected.  We may need to turn off the result log if that is the case.
--replace_regex /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}/TIMESTAMP/ /(ACTIVE) [0-9]+ /\1 NUM / /(thread id) [0-9]+/\1 TID/ /0x[0-9a-f]+/PTR/
SHOW ENGINE rocksdb TRANSACTION STATUS;

START TRANSACTION WITH CONSISTENT SNAPSHOT;

#select sleep(10);
--replace_regex /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}/TIMESTAMP/ /(ACTIVE) [0-9]+ /\1 NUM / /(thread id) [0-9]+/\1 TID/ /0x[0-9a-f]+/PTR/ /(query id) [0-9]+/\1 QID/ /(root) [a-z ]+/\1 ACTION/
SHOW ENGINE rocksdb TRANSACTION STATUS;

ROLLBACK;

# Restore old values
SET GLOBAL rocksdb_max_background_jobs= @save.rocksdb_max_background_jobs;