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