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 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137
|
#
# INSERT and REPLACE using index_merge optimization
#
# The include file works as intended only when index_merge_single_col_setup.inc
# or index_merge_multi_col_setup.inc is used. The table t1 set-up is done in
# these two include files.
--disable_warnings
DROP TABLE IF EXISTS t2;
--enable_warnings
CREATE TABLE t2 LIKE t1;
let $i=10;
while ($i)
{
INSERT INTO t2 VALUES (rand()*6, rand()*6, rand()*6, rand()*6,
rand()*6, rand()*6, rand()*6, rand()*6);
dec $i;
}
ANALYZE TABLE t2;
# intersect optimization technique test cases for non-selects
# are in a separate file(index_merge_intersect_dml.inc)
# due to different table requirements.
#
# REPLACE
#
# union
--let $query = INTO t2 SELECT * FROM t1 WHERE key3=1025 OR key5 IS NULL
--replace_column 9 #
--eval EXPLAIN REPLACE $query
--eval SELECT COUNT(*) FROM t2
--eval REPLACE $query
--eval SELECT COUNT(*) FROM t2
--let $query = INTO t2 SELECT * FROM t1 WHERE key1=48 OR key4=2 OR key6=3
--replace_column 9 #
--eval EXPLAIN REPLACE $query
--eval SELECT COUNT(*) FROM t2
--eval REPLACE $query
--eval SELECT COUNT(*) FROM t2
# sort_union
--let $query = INTO t2 SELECT * FROM t1 WHERE key1<2 OR key2<3
--replace_column 9 #
--eval EXPLAIN REPLACE $query
--eval SELECT COUNT(*) FROM t2
--eval REPLACE $query
--eval SELECT COUNT(*) FROM t2
--let $query = INTO t2 SELECT * FROM t1 WHERE (key1>30 AND key1<35) OR (key2>32 AND key2<40)
--replace_column 9 #
--eval EXPLAIN REPLACE $query
--eval SELECT COUNT(*) FROM t2
--eval REPLACE $query
--eval SELECT COUNT(*) FROM t2
# statements with use/force/ignore index
--let $query = INTO t2 SELECT * FROM t1 IGNORE INDEX(i2) WHERE key1<2 OR key2<3
--replace_column 9 #
--eval EXPLAIN REPLACE $query
--eval SELECT COUNT(*) FROM t2
--eval REPLACE $query
--eval SELECT COUNT(*) FROM t2
INSERT INTO t1 VALUES (42,42,42,42,3,3,3,3),(4,4,6,6,6,6,4,4);
--let $query = INTO t2 SELECT * FROM t1 USE INDEX(i6,i3) WHERE (key4=42 AND key6=3) OR (key1=4 AND key3=6)
--replace_column 9 #
--eval EXPLAIN REPLACE $query
--eval SELECT COUNT(*) FROM t2
--eval REPLACE $query
--eval SELECT COUNT(*) FROM t2
--let $query = INTO t2 SELECT * FROM t1 FORCE INDEX(i1,i2) WHERE (key1>1 OR key2>2)
--replace_column 9 #
--eval EXPLAIN REPLACE $query
--eval SELECT COUNT(*) FROM t2
--eval REPLACE $query
--eval SELECT COUNT(*) FROM t2
#
# INSERT
#
# union
INSERT INTO t1 VALUES (42,42,42,42,3,3,3,3),(4,4,6,6,6,6,4,4);
--let $query = INTO t2 SELECT * FROM t1 WHERE (key4=42 AND key6=3) OR (key1=4 AND key3=6) AND key5<>50
--replace_column 9 #
--eval EXPLAIN INSERT $query
--eval SELECT COUNT(*) FROM t2
--eval INSERT $query
--eval SELECT COUNT(*) FROM t2
# sort_union
--let $query = INTO t2 SELECT * FROM t1 WHERE key2=10 OR key3=3 OR key4 <=> null
--replace_column 9 #
--eval EXPLAIN INSERT $query
--eval SELECT COUNT(*) FROM t2
--eval INSERT $query
--eval SELECT COUNT(*) FROM t2
# statements with use/force/ignore index
--let $query = INTO t2 SELECT * FROM t1 IGNORE INDEX(i1) WHERE key1<2 OR key2<3
--replace_column 9 #
--eval EXPLAIN INSERT $query
--eval SELECT COUNT(*) FROM t2
--eval INSERT $query
--eval SELECT COUNT(*) FROM t2
--let $query = INTO t2 SELECT * FROM t1 USE INDEX(i5,i6) WHERE (key1<2 OR key2<2) AND (key3<3 OR key4<3) AND (key5<5 OR key6<5);
--replace_column 9 #
--eval EXPLAIN INSERT $query
--eval SELECT COUNT(*) FROM t2
--eval INSERT $query
--eval SELECT COUNT(*) FROM t2
--let $query = INTO t2 SELECT * FROM t1 FORCE INDEX(i4,i5) WHERE (key4>3 OR key5>5)
--replace_column 9 #
--eval EXPLAIN INSERT $query
--eval SELECT COUNT(*) FROM t2
--eval INSERT $query
--eval SELECT COUNT(*) FROM t2
#
# end
#
|