1--source include/have_rocksdb.inc
2--source include/have_partition.inc
3
4--source include/restart_mysqld.inc
5
6#
7# SHOW ENGINE STATUS command
8# Checking that the command doesn't produce an error.
9# If it starts producing an actual result, the result file
10# will need to be updated, and possibly masked.
11
12--disable_warnings
13DROP TABLE IF EXISTS t1;
14DROP TABLE IF EXISTS t2;
15DROP TABLE IF EXISTS t3;
16DROP TABLE IF EXISTS t4;
17--enable_warnings
18
19CREATE TABLE t1 (i INT, PRIMARY KEY (i) COMMENT 'cf_t1') ENGINE = ROCKSDB;
20CREATE TABLE t2 (j INT, PRIMARY KEY (j) COMMENT 'rev:cf_t2') ENGINE = ROCKSDB;
21CREATE TABLE t3 (k INT, PRIMARY KEY (k) COMMENT 'cf_t1') ENGINE = ROCKSDB;
22
23# With partition based column family creation we now expect all the partitions
24# to belong to a default column family because mapping wasn't specified in
25# this case.
26CREATE TABLE t4 (l INT, PRIMARY KEY (l) COMMENT 'cf_t4') ENGINE = ROCKSDB
27    PARTITION BY KEY(l) PARTITIONS 4;
28
29SET @save.rocksdb_max_background_jobs= @@global.rocksdb_max_background_jobs;
30SET GLOBAL rocksdb_max_background_jobs= 1;
31
32INSERT INTO t1 VALUES (1), (2), (3);
33SELECT COUNT(*) FROM t1;
34
35INSERT INTO t2 VALUES (1), (2), (3), (4);
36SELECT COUNT(*) FROM t2;
37
38INSERT INTO t4 VALUES (1), (2), (3), (4), (5);
39SELECT COUNT(*) FROM t4;
40
41SET GLOBAL rocksdb_force_flush_memtable_now=1;
42SET GLOBAL rocksdb_compact_cf="cf_t1";
43--replace_column 2 # 3 #
44SHOW ENGINE rocksdb STATUS;
45
46# Fetch data from information schema as well
47--replace_column 3 #
48SELECT * FROM INFORMATION_SCHEMA.ROCKSDB_CFSTATS;
49
50--replace_column 2 #
51SELECT * FROM INFORMATION_SCHEMA.ROCKSDB_DBSTATS;
52
53SELECT TABLE_SCHEMA, TABLE_NAME, PARTITION_NAME, COUNT(STAT_TYPE)
54FROM INFORMATION_SCHEMA.ROCKSDB_PERF_CONTEXT
55WHERE TABLE_SCHEMA = 'test'
56GROUP BY TABLE_NAME, PARTITION_NAME;
57
58--replace_column 3 #
59SELECT * FROM INFORMATION_SCHEMA.ROCKSDB_CF_OPTIONS;
60
61DROP TABLE t1;
62DROP TABLE t2;
63DROP TABLE t3;
64DROP TABLE t4;
65
66SHOW ENGINE rocksdb MUTEX;
67# For SHOW ALL MUTEX even the number of lines is volatile, so the result logging is disabled
68--disable_result_log
69SHOW ENGINE ALL MUTEX;
70--enable_result_log
71
72# The output from SHOW ENGINE ROCKSDB TRANSACTION STATUS has some
73# non-deterministic results.  Replace the timestamp with 'TIMESTAMP', the
74# number of seconds active with 'NUM', the thread id with 'TID' and the thread
75# pointer with 'PTR'.  This test may fail in the future if it is being run in
76# parallel with other tests as the number of snapshots would then be greater
77# than expected.  We may need to turn off the result log if that is the case.
78--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/
79SHOW ENGINE rocksdb TRANSACTION STATUS;
80
81START TRANSACTION WITH CONSISTENT SNAPSHOT;
82
83#select sleep(10);
84--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/
85SHOW ENGINE rocksdb TRANSACTION STATUS;
86
87ROLLBACK;
88
89# Check if explicit snapshots are correctly populated
90START TRANSACTION WITH SHARED ROCKSDB SNAPSHOT;
91--replace_column 2 # 3 #
92SHOW ENGINE rocksdb STATUS;
93ROLLBACK;
94CREATE EXPLICIT rocksdb SNAPSHOT;
95--replace_column 2 # 3 #
96SHOW ENGINE rocksdb STATUS;
97RELEASE EXPLICIT rocksdb SNAPSHOT;
98--replace_column 2 # 3 #
99SHOW ENGINE rocksdb STATUS;
100
101
102# Restore old values
103SET GLOBAL rocksdb_max_background_jobs= @save.rocksdb_max_background_jobs;
104