1--source include/have_rocksdb.inc
2
3SET rocksdb_bulk_load_size=15;
4
5CREATE TABLE t4 (a INT, b INT, c INT,
6                 PRIMARY KEY (a),
7                 KEY (b),
8                 KEY (c) COMMENT "rev:cf") ENGINE=ROCKSDB;
9CREATE TABLE t3 (a INT, b INT, c INT,
10                 PRIMARY KEY (a),
11                 KEY (b),
12                 KEY (c) COMMENT "rev:cf") ENGINE=ROCKSDB;
13CREATE TABLE t2 (a INT, b INT, c INT,
14                 PRIMARY KEY (a),
15                 KEY (b),
16                 KEY (c) COMMENT "rev:cf") ENGINE=ROCKSDB;
17CREATE TABLE t1 (a INT, b INT, c INT,
18                 PRIMARY KEY (a),
19                 KEY (b),
20                 KEY (c) COMMENT "rev:cf") ENGINE=ROCKSDB;
21
22### Setup the control table ###
23--disable_query_log
24let $sign = 1;
25let $max = 10;
26let $i = 1;
27while ($i <= $max) {
28  let $a = 1 + $sign * $i;
29  let $b = 1 - $sign * $i;
30  let $sign = -$sign;
31  let $insert = INSERT INTO t3 VALUES ($a, $b, $b);
32  eval $insert;
33  inc $i;
34}
35--enable_query_log
36
37### Bulk load PK only ###
38SET rocksdb_bulk_load=1;
39INSERT INTO t1 SELECT * FROM t3 FORCE INDEX (PRIMARY) ORDER BY a;
40SELECT count(*) FROM t1 FORCE INDEX (PRIMARY);
41SELECT count(*) FROM t1 FORCE INDEX (b);
42SELECT count(*) FROM t1 FORCE INDEX (c);
43SET rocksdb_bulk_load=0;
44SELECT * FROM t1 FORCE INDEX (PRIMARY);
45SELECT b FROM t1 FORCE INDEX (b);
46SELECT c FROM t1 FORCE INDEX (c);
47--echo Checksums should match
48CHECKSUM TABLE t3;
49CHECKSUM TABLE t1;
50
51### Bulk load PK and SK but require PK order ###
52SET rocksdb_bulk_load_allow_sk=1;
53SET rocksdb_bulk_load=1;
54INSERT INTO t4 SELECT * FROM t3 FORCE INDEX (PRIMARY) ORDER BY a;
55SELECT count(*) FROM t4 FORCE INDEX (PRIMARY);
56SELECT count(*) FROM t4 FORCE INDEX (b);
57SELECT count(*) FROM t4 FORCE INDEX (c);
58SET rocksdb_bulk_load=0;
59SELECT * FROM t4 FORCE INDEX (PRIMARY);
60SELECT b FROM t4 FORCE INDEX (b);
61SELECT c FROM t4 FORCE INDEX (c);
62--echo Checksums should match
63CHECKSUM TABLE t3;
64CHECKSUM TABLE t4;
65
66### Bulk load both PK and SK in random order for all ###
67SET rocksdb_bulk_load_allow_unsorted=1;
68SET rocksdb_bulk_load_allow_sk=1;
69SET rocksdb_bulk_load=1;
70
71INSERT INTO t2 SELECT * FROM t3 WHERE b >= 0 ORDER BY b;
72INSERT INTO t2 SELECT * FROM t3 WHERE b < 0 ORDER BY b;
73SELECT count(*) FROM t2 FORCE INDEX (PRIMARY);
74SELECT count(*) FROM t2 FORCE INDEX (b);
75SELECT count(*) FROM t2 FORCE INDEX (c);
76
77--disable_query_log
78let $sign = 1;
79let $max = 20;
80let $i = 11;
81while ($i <= $max) {
82  let $a = 1 + $sign * $i;
83  let $b = 1 - $sign * $i;
84  let $sign = -$sign;
85  let $insert = INSERT INTO t2 VALUES ($a, $b, $b);
86  eval $insert;
87  inc $i;
88}
89--enable_query_log
90SELECT count(*) FROM t2 FORCE INDEX (PRIMARY);
91SELECT count(*) FROM t2 FORCE INDEX (b);
92SELECT count(*) FROM t2 FORCE INDEX (c);
93SET rocksdb_bulk_load=0;
94
95--disable_query_log
96let $sign = 1;
97let $max = 20;
98let $i = 11;
99while ($i <= $max) {
100  let $a = 1 + $sign * $i;
101  let $b = 1 - $sign * $i;
102  let $sign = -$sign;
103  let $insert = INSERT INTO t3 VALUES ($a, $b, $b);
104  eval $insert;
105  inc $i;
106}
107--enable_query_log
108
109SELECT * FROM t2 FORCE INDEX (PRIMARY);
110SELECT b FROM t2 FORCE INDEX (b);
111SELECT c FROM t2 FORCE INDEX (c);
112--echo Checksums should match
113CHECKSUM TABLE t3;
114CHECKSUM TABLE t2;
115
116DROP TABLE t1;
117DROP TABLE t2;
118DROP TABLE t3;
119DROP TABLE t4;
120