diff --git a/mysql-test/r/delayed.result b/mysql-test/r/delayed.result
index a514ffcddd20f645c04e4c362a15d3d0221d2c12..a21b6f4f3a58799ef0c64f82bea5e641eb4079c2 100644
--- a/mysql-test/r/delayed.result
+++ b/mysql-test/r/delayed.result
@@ -243,3 +243,10 @@ SET             @@session.auto_increment_offset=
 @bug20830_old_session_auto_increment_offset;
 SET             @@session.auto_increment_increment=
 @bug20830_old_session_auto_increment_increment;
+CREATE TABLE t1(a BIT);
+INSERT DELAYED INTO t1 VALUES(1);
+FLUSH TABLE t1;
+SELECT HEX(a) FROM t1;
+HEX(a)
+1
+DROP TABLE t1;
diff --git a/mysql-test/r/gis-rtree.result b/mysql-test/r/gis-rtree.result
index 138360edc499e319614b3ebec97de6825478ae29..96aa8a17181eeb1d78112b3f6f71cee7af48edd0 100644
--- a/mysql-test/r/gis-rtree.result
+++ b/mysql-test/r/gis-rtree.result
@@ -873,6 +873,558 @@ SELECT 1 FROM t1 WHERE foo != PointFromWKB(POINT(0,0));
 1
 1
 DROP TABLE t1;
+CREATE TABLE t1 (id bigint(12) unsigned NOT NULL auto_increment,
+c2 varchar(15) collate utf8_bin default NULL,
+c1 varchar(15) collate utf8_bin default NULL,
+c3 varchar(10) collate utf8_bin default NULL,
+spatial_point point NOT NULL,
+PRIMARY KEY(id),
+SPATIAL KEY (spatial_point(32))
+)ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
+INSERT INTO t1 (c2, c1, c3, spatial_point) VALUES
+('y', 's', 'j', GeomFromText('POINT(167 74)')),
+('r', 'n', 'd', GeomFromText('POINT(215 118)')),
+('g', 'n', 'e', GeomFromText('POINT(203 98)')),
+('h', 'd', 'd', GeomFromText('POINT(54 193)')),
+('r', 'x', 'y', GeomFromText('POINT(47 69)')),
+('t', 'q', 'r', GeomFromText('POINT(109 42)')),
+('a', 'z', 'd', GeomFromText('POINT(0 154)')),
+('x', 'v', 'o', GeomFromText('POINT(174 131)')),
+('b', 'r', 'a', GeomFromText('POINT(114 253)')),
+('x', 'z', 'i', GeomFromText('POINT(163 21)')),
+('w', 'p', 'i', GeomFromText('POINT(42 102)')),
+('g', 'j', 'j', GeomFromText('POINT(170 133)')),
+('m', 'g', 'n', GeomFromText('POINT(28 22)')),
+('b', 'z', 'h', GeomFromText('POINT(174 28)')),
+('q', 'k', 'f', GeomFromText('POINT(233 73)')),
+('w', 'w', 'a', GeomFromText('POINT(124 200)')),
+('t', 'j', 'w', GeomFromText('POINT(252 101)')),
+('d', 'r', 'd', GeomFromText('POINT(98 18)')),
+('w', 'o', 'y', GeomFromText('POINT(165 31)')),
+('y', 'h', 't', GeomFromText('POINT(14 220)')),
+('d', 'p', 'u', GeomFromText('POINT(223 196)')),
+('g', 'y', 'g', GeomFromText('POINT(207 96)')),
+('x', 'm', 'n', GeomFromText('POINT(214 3)')),
+('g', 'v', 'e', GeomFromText('POINT(140 205)')),
+('g', 'm', 'm', GeomFromText('POINT(10 236)')),
+('i', 'r', 'j', GeomFromText('POINT(137 228)')),
+('w', 's', 'p', GeomFromText('POINT(115 6)')),
+('o', 'n', 'k', GeomFromText('POINT(158 129)')),
+('j', 'h', 'l', GeomFromText('POINT(129 72)')),
+('f', 'x', 'l', GeomFromText('POINT(139 207)')),
+('u', 'd', 'n', GeomFromText('POINT(125 109)')),
+('b', 'a', 'z', GeomFromText('POINT(30 32)')),
+('m', 'h', 'o', GeomFromText('POINT(251 251)')),
+('f', 'r', 'd', GeomFromText('POINT(243 211)')),
+('b', 'd', 'r', GeomFromText('POINT(232 80)')),
+('g', 'k', 'v', GeomFromText('POINT(15 100)')),
+('i', 'f', 'c', GeomFromText('POINT(109 66)')),
+('r', 't', 'j', GeomFromText('POINT(178 6)')),
+('y', 'n', 'f', GeomFromText('POINT(233 211)')),
+('f', 'y', 'm', GeomFromText('POINT(99 16)')),
+('z', 'q', 'l', GeomFromText('POINT(39 49)')),
+('j', 'c', 'r', GeomFromText('POINT(75 187)')),
+('c', 'y', 'y', GeomFromText('POINT(246 253)')),
+('w', 'u', 'd', GeomFromText('POINT(56 190)')),
+('n', 'q', 'm', GeomFromText('POINT(73 149)')),
+('d', 'y', 'a', GeomFromText('POINT(134 6)')),
+('z', 's', 'w', GeomFromText('POINT(216 225)')),
+('d', 'u', 'k', GeomFromText('POINT(132 70)')),
+('f', 'v', 't', GeomFromText('POINT(187 141)')),
+('r', 'r', 'a', GeomFromText('POINT(152 39)')),
+('y', 'p', 'o', GeomFromText('POINT(45 27)')),
+('p', 'n', 'm', GeomFromText('POINT(228 148)')),
+('e', 'g', 'e', GeomFromText('POINT(88 81)')),
+('m', 'a', 'h', GeomFromText('POINT(35 29)')),
+('m', 'h', 'f', GeomFromText('POINT(30 71)')),
+('h', 'k', 'i', GeomFromText('POINT(244 78)')),
+('z', 'v', 'd', GeomFromText('POINT(241 38)')),
+('q', 'l', 'j', GeomFromText('POINT(13 71)')),
+('s', 'p', 'g', GeomFromText('POINT(108 38)')),
+('q', 's', 'j', GeomFromText('POINT(92 101)')),
+('l', 'h', 'g', GeomFromText('POINT(120 78)')),
+('w', 't', 'b', GeomFromText('POINT(193 109)')),
+('b', 's', 's', GeomFromText('POINT(223 211)')),
+('w', 'w', 'y', GeomFromText('POINT(122 42)')),
+('q', 'c', 'c', GeomFromText('POINT(104 102)')),
+('w', 'g', 'n', GeomFromText('POINT(213 120)')),
+('p', 'q', 'a', GeomFromText('POINT(247 148)')),
+('c', 'z', 'e', GeomFromText('POINT(18 106)')),
+('z', 'u', 'n', GeomFromText('POINT(70 133)')),
+('j', 'n', 'x', GeomFromText('POINT(232 13)')),
+('e', 'h', 'f', GeomFromText('POINT(22 135)')),
+('w', 'l', 'f', GeomFromText('POINT(9 180)')),
+('a', 'v', 'q', GeomFromText('POINT(163 228)')),
+('i', 'z', 'o', GeomFromText('POINT(180 100)')),
+('e', 'c', 'l', GeomFromText('POINT(182 231)')),
+('c', 'k', 'o', GeomFromText('POINT(19 60)')),
+('q', 'f', 'p', GeomFromText('POINT(79 95)')),
+('m', 'd', 'r', GeomFromText('POINT(3 127)')),
+('m', 'e', 't', GeomFromText('POINT(136 154)')),
+('w', 'w', 'w', GeomFromText('POINT(102 15)')),
+('l', 'n', 'q', GeomFromText('POINT(71 196)')),
+('p', 'k', 'c', GeomFromText('POINT(47 139)')),
+('j', 'o', 'r', GeomFromText('POINT(177 128)')),
+('j', 'q', 'a', GeomFromText('POINT(170 6)')),
+('b', 'a', 'o', GeomFromText('POINT(63 211)')),
+('g', 's', 'o', GeomFromText('POINT(144 251)')),
+('w', 'u', 'w', GeomFromText('POINT(221 214)')),
+('g', 'a', 'm', GeomFromText('POINT(14 102)')),
+('u', 'q', 'z', GeomFromText('POINT(86 200)')),
+('k', 'a', 'm', GeomFromText('POINT(144 222)')),
+('j', 'u', 'r', GeomFromText('POINT(216 142)')),
+('q', 'k', 'v', GeomFromText('POINT(121 236)')),
+('p', 'o', 'r', GeomFromText('POINT(108 102)')),
+('b', 'd', 'x', GeomFromText('POINT(127 198)')),
+('k', 's', 'a', GeomFromText('POINT(2 150)')),
+('f', 'm', 'f', GeomFromText('POINT(160 191)')),
+('q', 'y', 'x', GeomFromText('POINT(98 111)')),
+('o', 'f', 'm', GeomFromText('POINT(232 218)')),
+('c', 'w', 'j', GeomFromText('POINT(156 165)')),
+('s', 'q', 'v', GeomFromText('POINT(98 161)'));
+SET @@RAND_SEED1=692635050, @@RAND_SEED2=297339954;
+DELETE FROM t1 ORDER BY RAND() LIMIT 10;
+SET @@RAND_SEED1=159925977, @@RAND_SEED2=942570618;
+DELETE FROM t1 ORDER BY RAND() LIMIT 10;
+SET @@RAND_SEED1=328169745, @@RAND_SEED2=410451954;
+DELETE FROM t1 ORDER BY RAND() LIMIT 10;
+SET @@RAND_SEED1=178507359, @@RAND_SEED2=332493072;
+DELETE FROM t1 ORDER BY RAND() LIMIT 10;
+SET @@RAND_SEED1=1034033013, @@RAND_SEED2=558966507;
+DELETE FROM t1 ORDER BY RAND() LIMIT 10;
+UPDATE t1 set spatial_point=GeomFromText('POINT(230 9)') where  c1 like 'y%';
+UPDATE t1 set spatial_point=GeomFromText('POINT(95 35)') where  c1 like 'j%';
+UPDATE t1 set spatial_point=GeomFromText('POINT(93 99)') where  c1 like 'a%';
+UPDATE t1 set spatial_point=GeomFromText('POINT(19 81)') where  c1 like 'r%';
+UPDATE t1 set spatial_point=GeomFromText('POINT(20 177)') where  c1 like 'h%';
+UPDATE t1 set spatial_point=GeomFromText('POINT(221 193)') where  c1 like 'u%';
+UPDATE t1 set spatial_point=GeomFromText('POINT(195 205)') where  c1 like 'd%';
+UPDATE t1 set spatial_point=GeomFromText('POINT(15 213)') where  c1 like 'u%';
+UPDATE t1 set spatial_point=GeomFromText('POINT(214 63)') where  c1 like 'n%';
+UPDATE t1 set spatial_point=GeomFromText('POINT(243 171)') where  c1 like 'c%';
+UPDATE t1 set spatial_point=GeomFromText('POINT(198 82)') where  c1 like 'y%';
+INSERT INTO t1 (c2, c1, c3, spatial_point) VALUES
+('f', 'y', 'p', GeomFromText('POINT(109 235)')),
+('b', 'e', 'v', GeomFromText('POINT(20 48)')),
+('i', 'u', 'f', GeomFromText('POINT(15 55)')),
+('o', 'r', 'z', GeomFromText('POINT(105 64)')),
+('a', 'p', 'a', GeomFromText('POINT(142 236)')),
+('g', 'i', 'k', GeomFromText('POINT(10 49)')),
+('x', 'z', 'x', GeomFromText('POINT(192 200)')),
+('c', 'v', 'r', GeomFromText('POINT(94 168)')),
+('y', 'z', 'e', GeomFromText('POINT(141 51)')),
+('h', 'm', 'd', GeomFromText('POINT(35 251)')),
+('v', 'm', 'q', GeomFromText('POINT(44 90)')),
+('j', 'l', 'z', GeomFromText('POINT(67 237)')),
+('i', 'v', 'a', GeomFromText('POINT(75 14)')),
+('b', 'q', 't', GeomFromText('POINT(153 33)')),
+('e', 'm', 'a', GeomFromText('POINT(247 49)')),
+('l', 'y', 'g', GeomFromText('POINT(56 203)')),
+('v', 'o', 'r', GeomFromText('POINT(90 54)')),
+('r', 'n', 'd', GeomFromText('POINT(135 83)')),
+('j', 't', 'u', GeomFromText('POINT(174 239)')),
+('u', 'n', 'g', GeomFromText('POINT(104 191)')),
+('p', 'q', 'y', GeomFromText('POINT(63 171)')),
+('o', 'q', 'p', GeomFromText('POINT(192 103)')),
+('f', 'x', 'e', GeomFromText('POINT(244 30)')),
+('n', 'x', 'c', GeomFromText('POINT(92 103)')),
+('r', 'q', 'z', GeomFromText('POINT(166 20)')),
+('s', 'a', 'j', GeomFromText('POINT(137 205)')),
+('z', 't', 't', GeomFromText('POINT(99 134)')),
+('o', 'm', 'j', GeomFromText('POINT(217 3)')),
+('n', 'h', 'j', GeomFromText('POINT(211 17)')),
+('v', 'v', 'a', GeomFromText('POINT(41 137)')),
+('q', 'o', 'j', GeomFromText('POINT(5 92)')),
+('z', 'y', 'e', GeomFromText('POINT(175 212)')),
+('j', 'z', 'h', GeomFromText('POINT(224 194)')),
+('a', 'g', 'm', GeomFromText('POINT(31 119)')),
+('p', 'c', 'f', GeomFromText('POINT(17 221)')),
+('t', 'h', 'k', GeomFromText('POINT(26 203)')),
+('u', 'w', 'p', GeomFromText('POINT(47 185)')),
+('z', 'a', 'c', GeomFromText('POINT(61 133)')),
+('u', 'k', 'a', GeomFromText('POINT(210 115)')),
+('k', 'f', 'h', GeomFromText('POINT(125 113)')),
+('t', 'v', 'y', GeomFromText('POINT(12 239)')),
+('u', 'v', 'd', GeomFromText('POINT(90 24)')),
+('m', 'y', 'w', GeomFromText('POINT(25 243)')),
+('d', 'n', 'g', GeomFromText('POINT(122 92)')),
+('z', 'm', 'f', GeomFromText('POINT(235 110)')),
+('q', 'd', 'f', GeomFromText('POINT(233 217)')),
+('a', 'v', 'u', GeomFromText('POINT(69 59)')),
+('x', 'k', 'p', GeomFromText('POINT(240 14)')),
+('i', 'v', 'r', GeomFromText('POINT(154 42)')),
+('w', 'h', 'l', GeomFromText('POINT(178 156)')),
+('d', 'h', 'n', GeomFromText('POINT(65 157)')),
+('c', 'k', 'z', GeomFromText('POINT(62 33)')),
+('e', 'l', 'w', GeomFromText('POINT(162 1)')),
+('r', 'f', 'i', GeomFromText('POINT(127 71)')),
+('q', 'm', 'c', GeomFromText('POINT(63 118)')),
+('c', 'h', 'u', GeomFromText('POINT(205 203)')),
+('d', 't', 'p', GeomFromText('POINT(234 87)')),
+('s', 'g', 'h', GeomFromText('POINT(149 34)')),
+('o', 'b', 'q', GeomFromText('POINT(159 179)')),
+('k', 'u', 'f', GeomFromText('POINT(202 254)')),
+('u', 'f', 'g', GeomFromText('POINT(70 15)')),
+('x', 's', 'b', GeomFromText('POINT(25 181)')),
+('s', 'c', 'g', GeomFromText('POINT(252 17)')),
+('a', 'c', 'f', GeomFromText('POINT(89 67)')),
+('r', 'e', 'q', GeomFromText('POINT(55 54)')),
+('f', 'i', 'k', GeomFromText('POINT(178 230)')),
+('p', 'e', 'l', GeomFromText('POINT(198 28)')),
+('w', 'o', 'd', GeomFromText('POINT(204 189)')),
+('c', 'a', 'g', GeomFromText('POINT(230 178)')),
+('r', 'o', 'e', GeomFromText('POINT(61 116)')),
+('w', 'a', 'a', GeomFromText('POINT(178 237)')),
+('v', 'd', 'e', GeomFromText('POINT(70 85)')),
+('k', 'c', 'e', GeomFromText('POINT(147 118)')),
+('d', 'q', 't', GeomFromText('POINT(218 77)')),
+('k', 'g', 'f', GeomFromText('POINT(192 113)')),
+('w', 'n', 'e', GeomFromText('POINT(92 124)')),
+('r', 'm', 'q', GeomFromText('POINT(130 65)')),
+('o', 'r', 'r', GeomFromText('POINT(174 233)')),
+('k', 'n', 't', GeomFromText('POINT(175 147)')),
+('q', 'm', 'r', GeomFromText('POINT(18 208)')),
+('l', 'd', 'i', GeomFromText('POINT(13 104)')),
+('w', 'o', 'y', GeomFromText('POINT(207 39)')),
+('p', 'u', 'o', GeomFromText('POINT(114 31)')),
+('y', 'a', 'p', GeomFromText('POINT(106 59)')),
+('a', 'x', 'z', GeomFromText('POINT(17 57)')),
+('v', 'h', 'x', GeomFromText('POINT(170 13)')),
+('t', 's', 'u', GeomFromText('POINT(84 18)')),
+('z', 'z', 'f', GeomFromText('POINT(250 197)')),
+('l', 'z', 't', GeomFromText('POINT(59 80)')),
+('j', 'g', 's', GeomFromText('POINT(54 26)')),
+('g', 'v', 'm', GeomFromText('POINT(89 98)')),
+('q', 'v', 'b', GeomFromText('POINT(39 240)')),
+('x', 'k', 'v', GeomFromText('POINT(246 207)')),
+('k', 'u', 'i', GeomFromText('POINT(105 111)')),
+('w', 'z', 's', GeomFromText('POINT(235 8)')),
+('d', 'd', 'd', GeomFromText('POINT(105 4)')),
+('c', 'z', 'q', GeomFromText('POINT(13 140)')),
+('m', 'k', 'i', GeomFromText('POINT(208 120)')),
+('g', 'a', 'g', GeomFromText('POINT(9 182)')),
+('z', 'j', 'r', GeomFromText('POINT(149 153)')),
+('h', 'f', 'g', GeomFromText('POINT(81 236)')),
+('m', 'e', 'q', GeomFromText('POINT(209 215)')),
+('c', 'h', 'y', GeomFromText('POINT(235 70)')),
+('i', 'e', 'g', GeomFromText('POINT(138 26)')),
+('m', 't', 'u', GeomFromText('POINT(119 237)')),
+('o', 'w', 's', GeomFromText('POINT(193 166)')),
+('f', 'm', 'q', GeomFromText('POINT(85 96)')),
+('x', 'l', 'x', GeomFromText('POINT(58 115)')),
+('x', 'q', 'u', GeomFromText('POINT(108 210)')),
+('b', 'h', 'i', GeomFromText('POINT(250 139)')),
+('y', 'd', 'x', GeomFromText('POINT(199 135)')),
+('w', 'h', 'p', GeomFromText('POINT(247 233)')),
+('p', 'z', 't', GeomFromText('POINT(148 249)')),
+('q', 'a', 'u', GeomFromText('POINT(174 78)')),
+('v', 't', 'm', GeomFromText('POINT(70 228)')),
+('t', 'n', 'f', GeomFromText('POINT(123 2)')),
+('x', 't', 'b', GeomFromText('POINT(35 50)')),
+('r', 'j', 'f', GeomFromText('POINT(200 51)')),
+('s', 'q', 'o', GeomFromText('POINT(23 184)')),
+('u', 'v', 'z', GeomFromText('POINT(7 113)')),
+('v', 'u', 'l', GeomFromText('POINT(145 190)')),
+('o', 'k', 'i', GeomFromText('POINT(161 122)')),
+('l', 'y', 'e', GeomFromText('POINT(17 232)')),
+('t', 'b', 'e', GeomFromText('POINT(120 50)')),
+('e', 's', 'u', GeomFromText('POINT(254 1)')),
+('d', 'd', 'u', GeomFromText('POINT(167 140)')),
+('o', 'b', 'x', GeomFromText('POINT(186 237)')),
+('m', 's', 's', GeomFromText('POINT(172 149)')),
+('t', 'y', 'a', GeomFromText('POINT(149 85)')),
+('x', 't', 'r', GeomFromText('POINT(10 165)')),
+('g', 'c', 'e', GeomFromText('POINT(95 165)')),
+('e', 'e', 'z', GeomFromText('POINT(98 65)')),
+('f', 'v', 'i', GeomFromText('POINT(149 144)')),
+('o', 'p', 'm', GeomFromText('POINT(233 67)')),
+('t', 'u', 'b', GeomFromText('POINT(109 215)')),
+('o', 'o', 'b', GeomFromText('POINT(130 48)')),
+('e', 'm', 'h', GeomFromText('POINT(88 189)')),
+('e', 'v', 'y', GeomFromText('POINT(55 29)')),
+('e', 't', 'm', GeomFromText('POINT(129 55)')),
+('p', 'p', 'i', GeomFromText('POINT(126 222)')),
+('c', 'i', 'c', GeomFromText('POINT(19 158)')),
+('c', 'b', 's', GeomFromText('POINT(13 19)')),
+('u', 'y', 'a', GeomFromText('POINT(114 5)')),
+('a', 'o', 'f', GeomFromText('POINT(227 232)')),
+('t', 'c', 'z', GeomFromText('POINT(63 62)')),
+('d', 'o', 'k', GeomFromText('POINT(48 228)')),
+('x', 'c', 'e', GeomFromText('POINT(204 2)')),
+('e', 'e', 'g', GeomFromText('POINT(125 43)')),
+('o', 'r', 'f', GeomFromText('POINT(171 140)'));
+UPDATE t1 set spatial_point=GeomFromText('POINT(163 157)') where  c1 like 'w%';
+UPDATE t1 set spatial_point=GeomFromText('POINT(53 151)') where  c1 like 'd%';
+UPDATE t1 set spatial_point=GeomFromText('POINT(96 183)') where  c1 like 'r%';
+UPDATE t1 set spatial_point=GeomFromText('POINT(57 91)') where  c1 like 'q%';
+UPDATE t1 set spatial_point=GeomFromText('POINT(202 110)') where  c1 like 'c%';
+UPDATE t1 set spatial_point=GeomFromText('POINT(120 137)') where  c1 like 'w%';
+UPDATE t1 set spatial_point=GeomFromText('POINT(207 147)') where  c1 like 'c%';
+UPDATE t1 set spatial_point=GeomFromText('POINT(31 125)') where  c1 like 'e%';
+UPDATE t1 set spatial_point=GeomFromText('POINT(27 36)') where  c1 like 'r%';
+INSERT INTO t1 (c2, c1, c3, spatial_point) VALUES
+('b', 'c', 'e', GeomFromText('POINT(41 137)')),
+('p', 'y', 'k', GeomFromText('POINT(50 22)')),
+('s', 'c', 'h', GeomFromText('POINT(208 173)')),
+('x', 'u', 'l', GeomFromText('POINT(199 175)')),
+('s', 'r', 'h', GeomFromText('POINT(85 192)')),
+('j', 'k', 'u', GeomFromText('POINT(18 25)')),
+('p', 'w', 'h', GeomFromText('POINT(152 197)')),
+('e', 'd', 'c', GeomFromText('POINT(229 3)')),
+('o', 'x', 'k', GeomFromText('POINT(187 155)')),
+('o', 'b', 'k', GeomFromText('POINT(208 150)')),
+('d', 'a', 'j', GeomFromText('POINT(70 87)')),
+('f', 'e', 'k', GeomFromText('POINT(156 96)')),
+('u', 'y', 'p', GeomFromText('POINT(239 193)')),
+('n', 'v', 'p', GeomFromText('POINT(223 98)')),
+('z', 'j', 'r', GeomFromText('POINT(87 89)')),
+('h', 'x', 'x', GeomFromText('POINT(92 0)')),
+('r', 'v', 'r', GeomFromText('POINT(159 139)')),
+('v', 'g', 'g', GeomFromText('POINT(16 229)')),
+('z', 'k', 'u', GeomFromText('POINT(99 52)')),
+('p', 'p', 'o', GeomFromText('POINT(105 125)')),
+('w', 'h', 'y', GeomFromText('POINT(105 154)')),
+('v', 'y', 'z', GeomFromText('POINT(134 238)')),
+('x', 'o', 'o', GeomFromText('POINT(178 88)')),
+('z', 'w', 'd', GeomFromText('POINT(123 60)')),
+('q', 'f', 'u', GeomFromText('POINT(64 90)')),
+('s', 'n', 't', GeomFromText('POINT(50 138)')),
+('v', 'p', 't', GeomFromText('POINT(114 91)')),
+('a', 'o', 'n', GeomFromText('POINT(78 43)')),
+('k', 'u', 'd', GeomFromText('POINT(185 161)')),
+('w', 'd', 'n', GeomFromText('POINT(25 92)')),
+('k', 'w', 'a', GeomFromText('POINT(59 238)')),
+('t', 'c', 'f', GeomFromText('POINT(65 87)')),
+('g', 's', 'p', GeomFromText('POINT(238 126)')),
+('d', 'n', 'y', GeomFromText('POINT(107 173)')),
+('l', 'a', 'w', GeomFromText('POINT(125 152)')),
+('m', 'd', 'j', GeomFromText('POINT(146 53)')),
+('q', 'm', 'c', GeomFromText('POINT(217 187)')),
+('i', 'r', 'r', GeomFromText('POINT(6 113)')),
+('e', 'j', 'b', GeomFromText('POINT(37 83)')),
+('w', 'w', 'h', GeomFromText('POINT(83 199)')),
+('k', 'b', 's', GeomFromText('POINT(170 64)')),
+('s', 'b', 'c', GeomFromText('POINT(163 130)')),
+('c', 'h', 'a', GeomFromText('POINT(141 3)')),
+('k', 'j', 'u', GeomFromText('POINT(143 76)')),
+('r', 'h', 'o', GeomFromText('POINT(243 92)')),
+('i', 'd', 'b', GeomFromText('POINT(205 13)')),
+('r', 'y', 'q', GeomFromText('POINT(138 8)')),
+('m', 'o', 'i', GeomFromText('POINT(36 45)')),
+('v', 'g', 'm', GeomFromText('POINT(0 40)')),
+('f', 'e', 'i', GeomFromText('POINT(76 6)')),
+('c', 'q', 'q', GeomFromText('POINT(115 248)')),
+('x', 'c', 'i', GeomFromText('POINT(29 74)')),
+('l', 's', 't', GeomFromText('POINT(83 18)')),
+('t', 't', 'a', GeomFromText('POINT(26 168)')),
+('u', 'n', 'x', GeomFromText('POINT(200 110)')),
+('j', 'b', 'd', GeomFromText('POINT(216 136)')),
+('s', 'p', 'w', GeomFromText('POINT(38 156)')),
+('f', 'b', 'v', GeomFromText('POINT(29 186)')),
+('v', 'e', 'r', GeomFromText('POINT(149 40)')),
+('v', 't', 'm', GeomFromText('POINT(184 24)')),
+('y', 'g', 'a', GeomFromText('POINT(219 105)')),
+('s', 'f', 'i', GeomFromText('POINT(114 130)')),
+('e', 'q', 'h', GeomFromText('POINT(203 135)')),
+('h', 'g', 'b', GeomFromText('POINT(9 208)')),
+('o', 'l', 'r', GeomFromText('POINT(245 79)')),
+('s', 's', 'v', GeomFromText('POINT(238 198)')),
+('w', 'w', 'z', GeomFromText('POINT(209 232)')),
+('v', 'd', 'n', GeomFromText('POINT(30 193)')),
+('q', 'w', 'k', GeomFromText('POINT(133 18)')),
+('o', 'h', 'o', GeomFromText('POINT(42 140)')),
+('f', 'f', 'h', GeomFromText('POINT(145 1)')),
+('u', 's', 'r', GeomFromText('POINT(70 62)')),
+('x', 'n', 'q', GeomFromText('POINT(33 86)')),
+('u', 'p', 'v', GeomFromText('POINT(232 220)')),
+('z', 'e', 'a', GeomFromText('POINT(130 69)')),
+('r', 'u', 'z', GeomFromText('POINT(243 241)')),
+('b', 'n', 't', GeomFromText('POINT(120 12)')),
+('u', 'f', 's', GeomFromText('POINT(190 212)')),
+('a', 'd', 'q', GeomFromText('POINT(235 191)')),
+('f', 'q', 'm', GeomFromText('POINT(176 2)')),
+('n', 'c', 's', GeomFromText('POINT(218 163)')),
+('e', 'm', 'h', GeomFromText('POINT(163 108)')),
+('c', 'f', 'l', GeomFromText('POINT(220 115)')),
+('c', 'v', 'q', GeomFromText('POINT(66 45)')),
+('w', 'v', 'x', GeomFromText('POINT(251 220)')),
+('f', 'w', 'z', GeomFromText('POINT(146 149)')),
+('h', 'n', 'h', GeomFromText('POINT(148 128)')),
+('y', 'k', 'v', GeomFromText('POINT(28 110)')),
+('c', 'x', 'q', GeomFromText('POINT(13 13)')),
+('e', 'd', 's', GeomFromText('POINT(91 190)')),
+('c', 'w', 'c', GeomFromText('POINT(10 231)')),
+('u', 'j', 'n', GeomFromText('POINT(250 21)')),
+('w', 'n', 'x', GeomFromText('POINT(141 69)')),
+('f', 'p', 'y', GeomFromText('POINT(228 246)')),
+('d', 'q', 'f', GeomFromText('POINT(194 22)')),
+('d', 'z', 'l', GeomFromText('POINT(233 181)')),
+('c', 'a', 'q', GeomFromText('POINT(183 96)')),
+('m', 'i', 'd', GeomFromText('POINT(117 226)')),
+('z', 'y', 'y', GeomFromText('POINT(62 81)')),
+('g', 'v', 'm', GeomFromText('POINT(66 158)'));
+SET @@RAND_SEED1=481064922, @@RAND_SEED2=438133497;
+DELETE FROM t1 ORDER BY RAND() LIMIT 10;
+SET @@RAND_SEED1=280535103, @@RAND_SEED2=444518646;
+DELETE FROM t1 ORDER BY RAND() LIMIT 10;
+SET @@RAND_SEED1=1072017234, @@RAND_SEED2=484203885;
+DELETE FROM t1 ORDER BY RAND() LIMIT 10;
+SET @@RAND_SEED1=358851897, @@RAND_SEED2=358495224;
+DELETE FROM t1 ORDER BY RAND() LIMIT 10;
+SET @@RAND_SEED1=509031459, @@RAND_SEED2=675962925;
+DELETE FROM t1 ORDER BY RAND() LIMIT 10;
+UPDATE t1 set spatial_point=GeomFromText('POINT(61 203)') where  c1 like 'y%';
+UPDATE t1 set spatial_point=GeomFromText('POINT(202 194)') where  c1 like 'f%';
+UPDATE t1 set spatial_point=GeomFromText('POINT(228 18)') where  c1 like 'h%';
+UPDATE t1 set spatial_point=GeomFromText('POINT(88 18)') where  c1 like 'l%';
+UPDATE t1 set spatial_point=GeomFromText('POINT(176 94)') where  c1 like 'e%';
+UPDATE t1 set spatial_point=GeomFromText('POINT(44 47)') where  c1 like 'g%';
+UPDATE t1 set spatial_point=GeomFromText('POINT(95 191)') where  c1 like 'b%';
+UPDATE t1 set spatial_point=GeomFromText('POINT(179 218)') where  c1 like 'y%';
+UPDATE t1 set spatial_point=GeomFromText('POINT(239 40)') where  c1 like 'g%';
+UPDATE t1 set spatial_point=GeomFromText('POINT(248 41)') where  c1 like 'q%';
+UPDATE t1 set spatial_point=GeomFromText('POINT(167 82)') where  c1 like 't%';
+UPDATE t1 set spatial_point=GeomFromText('POINT(13 104)') where  c1 like 'u%';
+UPDATE t1 set spatial_point=GeomFromText('POINT(139 84)') where  c1 like 'a%';
+UPDATE t1 set spatial_point=GeomFromText('POINT(145 108)') where  c1 like 'p%';
+UPDATE t1 set spatial_point=GeomFromText('POINT(147 57)') where  c1 like 't%';
+UPDATE t1 set spatial_point=GeomFromText('POINT(217 144)') where  c1 like 'n%';
+UPDATE t1 set spatial_point=GeomFromText('POINT(160 224)') where  c1 like 'w%';
+UPDATE t1 set spatial_point=GeomFromText('POINT(38 28)') where  c1 like 'j%';
+UPDATE t1 set spatial_point=GeomFromText('POINT(104 114)') where  c1 like 'q%';
+UPDATE t1 set spatial_point=GeomFromText('POINT(88 19)') where  c1 like 'c%';
+INSERT INTO t1 (c2, c1, c3, spatial_point) VALUES
+('f', 'x', 'p', GeomFromText('POINT(92 181)')),
+('s', 'i', 'c', GeomFromText('POINT(49 60)')),
+('c', 'c', 'i', GeomFromText('POINT(7 57)')),
+('n', 'g', 'k', GeomFromText('POINT(252 105)')),
+('g', 'b', 'm', GeomFromText('POINT(180 11)')),
+('u', 'l', 'r', GeomFromText('POINT(32 90)')),
+('c', 'x', 'e', GeomFromText('POINT(143 24)')),
+('x', 'u', 'a', GeomFromText('POINT(123 92)')),
+('s', 'b', 'h', GeomFromText('POINT(190 108)')),
+('c', 'x', 'b', GeomFromText('POINT(104 100)')),
+('i', 'd', 't', GeomFromText('POINT(214 104)')),
+('r', 'w', 'g', GeomFromText('POINT(29 67)')),
+('b', 'f', 'g', GeomFromText('POINT(149 46)')),
+('r', 'r', 'd', GeomFromText('POINT(242 196)')),
+('j', 'l', 'a', GeomFromText('POINT(90 196)')),
+('e', 't', 'b', GeomFromText('POINT(190 64)')),
+('l', 'x', 'w', GeomFromText('POINT(250 73)')),
+('q', 'y', 'r', GeomFromText('POINT(120 182)')),
+('s', 'j', 'a', GeomFromText('POINT(180 175)')),
+('n', 'i', 'y', GeomFromText('POINT(124 136)')),
+('s', 'x', 's', GeomFromText('POINT(176 209)')),
+('u', 'f', 's', GeomFromText('POINT(215 173)')),
+('m', 'j', 'x', GeomFromText('POINT(44 140)')),
+('v', 'g', 'x', GeomFromText('POINT(177 233)')),
+('u', 't', 'b', GeomFromText('POINT(136 197)')),
+('f', 'g', 'b', GeomFromText('POINT(10 8)')),
+('v', 'c', 'j', GeomFromText('POINT(13 81)')),
+('d', 's', 'q', GeomFromText('POINT(200 100)')),
+('a', 'p', 'j', GeomFromText('POINT(33 40)')),
+('i', 'c', 'g', GeomFromText('POINT(168 204)')),
+('k', 'h', 'i', GeomFromText('POINT(93 243)')),
+('s', 'b', 's', GeomFromText('POINT(157 13)')),
+('v', 'l', 'l', GeomFromText('POINT(103 6)')),
+('r', 'b', 'k', GeomFromText('POINT(244 137)')),
+('l', 'd', 'r', GeomFromText('POINT(162 254)')),
+('q', 'b', 'z', GeomFromText('POINT(136 246)')),
+('x', 'x', 'p', GeomFromText('POINT(120 37)')),
+('m', 'e', 'z', GeomFromText('POINT(203 167)')),
+('q', 'n', 'p', GeomFromText('POINT(94 119)')),
+('b', 'g', 'u', GeomFromText('POINT(93 248)')),
+('r', 'v', 'v', GeomFromText('POINT(53 88)')),
+('y', 'a', 'i', GeomFromText('POINT(98 219)')),
+('a', 's', 'g', GeomFromText('POINT(173 138)')),
+('c', 'a', 't', GeomFromText('POINT(235 135)')),
+('q', 'm', 'd', GeomFromText('POINT(224 208)')),
+('e', 'p', 'k', GeomFromText('POINT(161 238)')),
+('n', 'g', 'q', GeomFromText('POINT(35 204)')),
+('t', 't', 'x', GeomFromText('POINT(230 178)')),
+('w', 'f', 'a', GeomFromText('POINT(150 221)')),
+('z', 'm', 'z', GeomFromText('POINT(119 42)')),
+('l', 'j', 's', GeomFromText('POINT(97 96)')),
+('f', 'z', 'x', GeomFromText('POINT(208 65)')),
+('i', 'v', 'c', GeomFromText('POINT(145 79)')),
+('l', 'f', 'k', GeomFromText('POINT(83 234)')),
+('u', 'a', 's', GeomFromText('POINT(250 49)')),
+('o', 'k', 'p', GeomFromText('POINT(46 50)')),
+('d', 'e', 'z', GeomFromText('POINT(30 198)')),
+('r', 'r', 'l', GeomFromText('POINT(78 189)')),
+('y', 'l', 'f', GeomFromText('POINT(188 132)')),
+('d', 'q', 'm', GeomFromText('POINT(247 107)')),
+('p', 'j', 'n', GeomFromText('POINT(148 227)')),
+('b', 'o', 'i', GeomFromText('POINT(172 25)')),
+('e', 'v', 'd', GeomFromText('POINT(94 248)')),
+('q', 'd', 'f', GeomFromText('POINT(15 29)')),
+('w', 'b', 'b', GeomFromText('POINT(74 111)')),
+('g', 'q', 'f', GeomFromText('POINT(107 215)')),
+('o', 'h', 'r', GeomFromText('POINT(25 168)')),
+('u', 't', 'w', GeomFromText('POINT(251 188)')),
+('h', 's', 'w', GeomFromText('POINT(254 247)')),
+('f', 'f', 'b', GeomFromText('POINT(166 103)'));
+SET @@RAND_SEED1=866613816, @@RAND_SEED2=92289615;
+INSERT INTO t1 (c2, c1, c3, spatial_point) VALUES
+('l', 'c', 'l', GeomFromText('POINT(202 98)')),
+('k', 'c', 'b', GeomFromText('POINT(46 206)')),
+('r', 'y', 'm', GeomFromText('POINT(74 140)')),
+('y', 'z', 'd', GeomFromText('POINT(200 160)')),
+('s', 'y', 's', GeomFromText('POINT(156 205)')),
+('u', 'v', 'p', GeomFromText('POINT(86 82)')),
+('j', 's', 's', GeomFromText('POINT(91 233)')),
+('x', 'j', 'f', GeomFromText('POINT(3 14)')),
+('l', 'z', 'v', GeomFromText('POINT(123 156)')),
+('h', 'i', 'o', GeomFromText('POINT(145 229)')),
+('o', 'r', 'd', GeomFromText('POINT(15 22)')),
+('f', 'x', 't', GeomFromText('POINT(21 60)')),
+('t', 'g', 'h', GeomFromText('POINT(50 153)')),
+('g', 'u', 'b', GeomFromText('POINT(82 85)')),
+('v', 'a', 'p', GeomFromText('POINT(231 178)')),
+('n', 'v', 'o', GeomFromText('POINT(183 25)')),
+('j', 'n', 'm', GeomFromText('POINT(50 144)')),
+('e', 'f', 'i', GeomFromText('POINT(46 16)')),
+('d', 'w', 'a', GeomFromText('POINT(66 6)')),
+('f', 'x', 'a', GeomFromText('POINT(107 197)')),
+('m', 'o', 'a', GeomFromText('POINT(142 80)')),
+('q', 'l', 'g', GeomFromText('POINT(251 23)')),
+('c', 's', 's', GeomFromText('POINT(158 43)')),
+('y', 'd', 'o', GeomFromText('POINT(196 228)')),
+('d', 'p', 'l', GeomFromText('POINT(107 5)')),
+('h', 'a', 'b', GeomFromText('POINT(183 166)')),
+('m', 'w', 'p', GeomFromText('POINT(19 59)')),
+('b', 'y', 'o', GeomFromText('POINT(178 30)')),
+('x', 'w', 'i', GeomFromText('POINT(168 94)')),
+('t', 'k', 'z', GeomFromText('POINT(171 5)')),
+('r', 'm', 'a', GeomFromText('POINT(222 19)')),
+('u', 'v', 'e', GeomFromText('POINT(224 80)')),
+('q', 'r', 'k', GeomFromText('POINT(212 218)')),
+('d', 'p', 'j', GeomFromText('POINT(169 7)')),
+('d', 'r', 'v', GeomFromText('POINT(193 23)')),
+('n', 'y', 'y', GeomFromText('POINT(130 178)')),
+('m', 'z', 'r', GeomFromText('POINT(81 200)')),
+('j', 'e', 'w', GeomFromText('POINT(145 239)')),
+('v', 'h', 'x', GeomFromText('POINT(24 105)')),
+('z', 'm', 'a', GeomFromText('POINT(175 129)')),
+('b', 'c', 'v', GeomFromText('POINT(213 10)')),
+('t', 't', 'u', GeomFromText('POINT(2 129)')),
+('r', 's', 'v', GeomFromText('POINT(209 192)')),
+('x', 'p', 'g', GeomFromText('POINT(43 63)')),
+('t', 'e', 'u', GeomFromText('POINT(139 210)')),
+('l', 'e', 't', GeomFromText('POINT(245 148)')),
+('a', 'i', 'k', GeomFromText('POINT(167 195)')),
+('m', 'o', 'h', GeomFromText('POINT(206 120)')),
+('g', 'z', 's', GeomFromText('POINT(169 240)')),
+('z', 'u', 's', GeomFromText('POINT(202 120)')),
+('i', 'b', 'a', GeomFromText('POINT(216 18)')),
+('w', 'y', 'g', GeomFromText('POINT(119 236)')),
+('h', 'y', 'p', GeomFromText('POINT(161 24)'));
+UPDATE t1 set spatial_point=GeomFromText('POINT(33 100)') where  c1 like 't%';
+UPDATE t1 set spatial_point=GeomFromText('POINT(41 46)') where  c1 like 'f%';
+CHECK TABLE t1 EXTENDED;
+Table	Op	Msg_type	Msg_text
+test.t1	check	status	OK
+DROP TABLE t1;
 CREATE TABLE t1(foo GEOMETRY NOT NULL, SPATIAL INDEX(foo) );
 INSERT INTO t1(foo) VALUES (NULL);
 ERROR 23000: Column 'foo' cannot be null
diff --git a/mysql-test/r/heap.result b/mysql-test/r/heap.result
index 29bdfcbef7a161b7423e13a3f67dc26b3433c984..ddf675e2f73b011442244da84830ec384f20da0e 100644
--- a/mysql-test/r/heap.result
+++ b/mysql-test/r/heap.result
@@ -731,3 +731,10 @@ SELECT COUNT(*) FROM t1 WHERE c=REPEAT('a',256);
 COUNT(*)
 2
 DROP TABLE t1;
+CREATE TABLE t1(c1 VARCHAR(100), c2 INT) ENGINE=MEMORY;
+INSERT INTO t1 VALUES('', 0);
+ALTER TABLE t1 MODIFY c1 VARCHAR(101);
+SELECT c2 FROM t1;
+c2
+0
+DROP TABLE t1;
diff --git a/mysql-test/r/merge.result b/mysql-test/r/merge.result
index c654392f6e1b6ecbc5dbb407a72e01076f3e9312..9dc2db39e9f4df0cac81aa634f5a46adb7b964cf 100644
--- a/mysql-test/r/merge.result
+++ b/mysql-test/r/merge.result
@@ -806,6 +806,11 @@ CREATE TABLE tm1(a SMALLINT, b SMALLINT, KEY(a)) ENGINE=MERGE UNION=(t1);
 SELECT * FROM tm1;
 ERROR HY000: Unable to open underlying table which is differently defined or of non-MyISAM type or doesn't exist
 DROP TABLE t1, tm1;
+CREATE TABLE t1(c1 INT) ENGINE=MyISAM;
+CREATE TABLE t2(c1 INT) ENGINE=MERGE UNION=(t1);
+INSERT DELAYED INTO t2 VALUES(1);
+ERROR HY000: Table storage engine for 't2' doesn't have this option
+DROP TABLE t1, t2;
 create table t1 (b bit(1));
 create table t2 (b bit(1));
 create table tm (b bit(1)) engine = merge union = (t1,t2);
diff --git a/mysql-test/t/delayed.test b/mysql-test/t/delayed.test
index 3ccee525d10081aad3a3eabe202ce93a4101618f..6f1615812873d9db36586337df1da6814897cedd 100644
--- a/mysql-test/t/delayed.test
+++ b/mysql-test/t/delayed.test
@@ -234,3 +234,11 @@ SET             @@session.auto_increment_offset=
 SET             @@session.auto_increment_increment=
     @bug20830_old_session_auto_increment_increment;
 
+#
+# BUG#26238 - inserted delayed always inserts 0 for BIT columns
+#
+CREATE TABLE t1(a BIT);
+INSERT DELAYED INTO t1 VALUES(1);
+FLUSH TABLE t1;
+SELECT HEX(a) FROM t1;
+DROP TABLE t1;
diff --git a/mysql-test/t/gis-rtree.test b/mysql-test/t/gis-rtree.test
index 1704fe7dc8054aa9bd8ad4095a664331836ba84a..3368aea974112a122352dbd26144b3fee5ce0b12 100644
--- a/mysql-test/t/gis-rtree.test
+++ b/mysql-test/t/gis-rtree.test
@@ -241,6 +241,562 @@ INSERT INTO t1 (foo) VALUES (PointFromWKB(POINT(0,1)));
 INSERT INTO t1 (foo) VALUES (PointFromWKB(POINT(0,0)));
 SELECT 1 FROM t1 WHERE foo != PointFromWKB(POINT(0,0));
 DROP TABLE t1;
+
+#
+# Bug#25673 - spatial index corruption, error 126 incorrect key file for table
+#
+CREATE TABLE t1 (id bigint(12) unsigned NOT NULL auto_increment,
+  c2 varchar(15) collate utf8_bin default NULL,
+  c1 varchar(15) collate utf8_bin default NULL,
+  c3 varchar(10) collate utf8_bin default NULL,
+  spatial_point point NOT NULL,
+  PRIMARY KEY(id),
+  SPATIAL KEY (spatial_point(32))
+  )ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
+#
+INSERT INTO t1 (c2, c1, c3, spatial_point) VALUES
+  ('y', 's', 'j', GeomFromText('POINT(167 74)')),
+  ('r', 'n', 'd', GeomFromText('POINT(215 118)')),
+  ('g', 'n', 'e', GeomFromText('POINT(203 98)')),
+  ('h', 'd', 'd', GeomFromText('POINT(54 193)')),
+  ('r', 'x', 'y', GeomFromText('POINT(47 69)')),
+  ('t', 'q', 'r', GeomFromText('POINT(109 42)')),
+  ('a', 'z', 'd', GeomFromText('POINT(0 154)')),
+  ('x', 'v', 'o', GeomFromText('POINT(174 131)')),
+  ('b', 'r', 'a', GeomFromText('POINT(114 253)')),
+  ('x', 'z', 'i', GeomFromText('POINT(163 21)')),
+  ('w', 'p', 'i', GeomFromText('POINT(42 102)')),
+  ('g', 'j', 'j', GeomFromText('POINT(170 133)')),
+  ('m', 'g', 'n', GeomFromText('POINT(28 22)')),
+  ('b', 'z', 'h', GeomFromText('POINT(174 28)')),
+  ('q', 'k', 'f', GeomFromText('POINT(233 73)')),
+  ('w', 'w', 'a', GeomFromText('POINT(124 200)')),
+  ('t', 'j', 'w', GeomFromText('POINT(252 101)')),
+  ('d', 'r', 'd', GeomFromText('POINT(98 18)')),
+  ('w', 'o', 'y', GeomFromText('POINT(165 31)')),
+  ('y', 'h', 't', GeomFromText('POINT(14 220)')),
+  ('d', 'p', 'u', GeomFromText('POINT(223 196)')),
+  ('g', 'y', 'g', GeomFromText('POINT(207 96)')),
+  ('x', 'm', 'n', GeomFromText('POINT(214 3)')),
+  ('g', 'v', 'e', GeomFromText('POINT(140 205)')),
+  ('g', 'm', 'm', GeomFromText('POINT(10 236)')),
+  ('i', 'r', 'j', GeomFromText('POINT(137 228)')),
+  ('w', 's', 'p', GeomFromText('POINT(115 6)')),
+  ('o', 'n', 'k', GeomFromText('POINT(158 129)')),
+  ('j', 'h', 'l', GeomFromText('POINT(129 72)')),
+  ('f', 'x', 'l', GeomFromText('POINT(139 207)')),
+  ('u', 'd', 'n', GeomFromText('POINT(125 109)')),
+  ('b', 'a', 'z', GeomFromText('POINT(30 32)')),
+  ('m', 'h', 'o', GeomFromText('POINT(251 251)')),
+  ('f', 'r', 'd', GeomFromText('POINT(243 211)')),
+  ('b', 'd', 'r', GeomFromText('POINT(232 80)')),
+  ('g', 'k', 'v', GeomFromText('POINT(15 100)')),
+  ('i', 'f', 'c', GeomFromText('POINT(109 66)')),
+  ('r', 't', 'j', GeomFromText('POINT(178 6)')),
+  ('y', 'n', 'f', GeomFromText('POINT(233 211)')),
+  ('f', 'y', 'm', GeomFromText('POINT(99 16)')),
+  ('z', 'q', 'l', GeomFromText('POINT(39 49)')),
+  ('j', 'c', 'r', GeomFromText('POINT(75 187)')),
+  ('c', 'y', 'y', GeomFromText('POINT(246 253)')),
+  ('w', 'u', 'd', GeomFromText('POINT(56 190)')),
+  ('n', 'q', 'm', GeomFromText('POINT(73 149)')),
+  ('d', 'y', 'a', GeomFromText('POINT(134 6)')),
+  ('z', 's', 'w', GeomFromText('POINT(216 225)')),
+  ('d', 'u', 'k', GeomFromText('POINT(132 70)')),
+  ('f', 'v', 't', GeomFromText('POINT(187 141)')),
+  ('r', 'r', 'a', GeomFromText('POINT(152 39)')),
+  ('y', 'p', 'o', GeomFromText('POINT(45 27)')),
+  ('p', 'n', 'm', GeomFromText('POINT(228 148)')),
+  ('e', 'g', 'e', GeomFromText('POINT(88 81)')),
+  ('m', 'a', 'h', GeomFromText('POINT(35 29)')),
+  ('m', 'h', 'f', GeomFromText('POINT(30 71)')),
+  ('h', 'k', 'i', GeomFromText('POINT(244 78)')),
+  ('z', 'v', 'd', GeomFromText('POINT(241 38)')),
+  ('q', 'l', 'j', GeomFromText('POINT(13 71)')),
+  ('s', 'p', 'g', GeomFromText('POINT(108 38)')),
+  ('q', 's', 'j', GeomFromText('POINT(92 101)')),
+  ('l', 'h', 'g', GeomFromText('POINT(120 78)')),
+  ('w', 't', 'b', GeomFromText('POINT(193 109)')),
+  ('b', 's', 's', GeomFromText('POINT(223 211)')),
+  ('w', 'w', 'y', GeomFromText('POINT(122 42)')),
+  ('q', 'c', 'c', GeomFromText('POINT(104 102)')),
+  ('w', 'g', 'n', GeomFromText('POINT(213 120)')),
+  ('p', 'q', 'a', GeomFromText('POINT(247 148)')),
+  ('c', 'z', 'e', GeomFromText('POINT(18 106)')),
+  ('z', 'u', 'n', GeomFromText('POINT(70 133)')),
+  ('j', 'n', 'x', GeomFromText('POINT(232 13)')),
+  ('e', 'h', 'f', GeomFromText('POINT(22 135)')),
+  ('w', 'l', 'f', GeomFromText('POINT(9 180)')),
+  ('a', 'v', 'q', GeomFromText('POINT(163 228)')),
+  ('i', 'z', 'o', GeomFromText('POINT(180 100)')),
+  ('e', 'c', 'l', GeomFromText('POINT(182 231)')),
+  ('c', 'k', 'o', GeomFromText('POINT(19 60)')),
+  ('q', 'f', 'p', GeomFromText('POINT(79 95)')),
+  ('m', 'd', 'r', GeomFromText('POINT(3 127)')),
+  ('m', 'e', 't', GeomFromText('POINT(136 154)')),
+  ('w', 'w', 'w', GeomFromText('POINT(102 15)')),
+  ('l', 'n', 'q', GeomFromText('POINT(71 196)')),
+  ('p', 'k', 'c', GeomFromText('POINT(47 139)')),
+  ('j', 'o', 'r', GeomFromText('POINT(177 128)')),
+  ('j', 'q', 'a', GeomFromText('POINT(170 6)')),
+  ('b', 'a', 'o', GeomFromText('POINT(63 211)')),
+  ('g', 's', 'o', GeomFromText('POINT(144 251)')),
+  ('w', 'u', 'w', GeomFromText('POINT(221 214)')),
+  ('g', 'a', 'm', GeomFromText('POINT(14 102)')),
+  ('u', 'q', 'z', GeomFromText('POINT(86 200)')),
+  ('k', 'a', 'm', GeomFromText('POINT(144 222)')),
+  ('j', 'u', 'r', GeomFromText('POINT(216 142)')),
+  ('q', 'k', 'v', GeomFromText('POINT(121 236)')),
+  ('p', 'o', 'r', GeomFromText('POINT(108 102)')),
+  ('b', 'd', 'x', GeomFromText('POINT(127 198)')),
+  ('k', 's', 'a', GeomFromText('POINT(2 150)')),
+  ('f', 'm', 'f', GeomFromText('POINT(160 191)')),
+  ('q', 'y', 'x', GeomFromText('POINT(98 111)')),
+  ('o', 'f', 'm', GeomFromText('POINT(232 218)')),
+  ('c', 'w', 'j', GeomFromText('POINT(156 165)')),
+  ('s', 'q', 'v', GeomFromText('POINT(98 161)'));
+SET @@RAND_SEED1=692635050, @@RAND_SEED2=297339954;
+DELETE FROM t1 ORDER BY RAND() LIMIT 10;
+SET @@RAND_SEED1=159925977, @@RAND_SEED2=942570618;
+DELETE FROM t1 ORDER BY RAND() LIMIT 10;
+SET @@RAND_SEED1=328169745, @@RAND_SEED2=410451954;
+DELETE FROM t1 ORDER BY RAND() LIMIT 10;
+SET @@RAND_SEED1=178507359, @@RAND_SEED2=332493072;
+DELETE FROM t1 ORDER BY RAND() LIMIT 10;
+SET @@RAND_SEED1=1034033013, @@RAND_SEED2=558966507;
+DELETE FROM t1 ORDER BY RAND() LIMIT 10;
+UPDATE t1 set spatial_point=GeomFromText('POINT(230 9)') where  c1 like 'y%';
+UPDATE t1 set spatial_point=GeomFromText('POINT(95 35)') where  c1 like 'j%';
+UPDATE t1 set spatial_point=GeomFromText('POINT(93 99)') where  c1 like 'a%';
+UPDATE t1 set spatial_point=GeomFromText('POINT(19 81)') where  c1 like 'r%';
+UPDATE t1 set spatial_point=GeomFromText('POINT(20 177)') where  c1 like 'h%';
+UPDATE t1 set spatial_point=GeomFromText('POINT(221 193)') where  c1 like 'u%';
+UPDATE t1 set spatial_point=GeomFromText('POINT(195 205)') where  c1 like 'd%';
+UPDATE t1 set spatial_point=GeomFromText('POINT(15 213)') where  c1 like 'u%';
+UPDATE t1 set spatial_point=GeomFromText('POINT(214 63)') where  c1 like 'n%';
+UPDATE t1 set spatial_point=GeomFromText('POINT(243 171)') where  c1 like 'c%';
+UPDATE t1 set spatial_point=GeomFromText('POINT(198 82)') where  c1 like 'y%';
+INSERT INTO t1 (c2, c1, c3, spatial_point) VALUES
+  ('f', 'y', 'p', GeomFromText('POINT(109 235)')),
+  ('b', 'e', 'v', GeomFromText('POINT(20 48)')),
+  ('i', 'u', 'f', GeomFromText('POINT(15 55)')),
+  ('o', 'r', 'z', GeomFromText('POINT(105 64)')),
+  ('a', 'p', 'a', GeomFromText('POINT(142 236)')),
+  ('g', 'i', 'k', GeomFromText('POINT(10 49)')),
+  ('x', 'z', 'x', GeomFromText('POINT(192 200)')),
+  ('c', 'v', 'r', GeomFromText('POINT(94 168)')),
+  ('y', 'z', 'e', GeomFromText('POINT(141 51)')),
+  ('h', 'm', 'd', GeomFromText('POINT(35 251)')),
+  ('v', 'm', 'q', GeomFromText('POINT(44 90)')),
+  ('j', 'l', 'z', GeomFromText('POINT(67 237)')),
+  ('i', 'v', 'a', GeomFromText('POINT(75 14)')),
+  ('b', 'q', 't', GeomFromText('POINT(153 33)')),
+  ('e', 'm', 'a', GeomFromText('POINT(247 49)')),
+  ('l', 'y', 'g', GeomFromText('POINT(56 203)')),
+  ('v', 'o', 'r', GeomFromText('POINT(90 54)')),
+  ('r', 'n', 'd', GeomFromText('POINT(135 83)')),
+  ('j', 't', 'u', GeomFromText('POINT(174 239)')),
+  ('u', 'n', 'g', GeomFromText('POINT(104 191)')),
+  ('p', 'q', 'y', GeomFromText('POINT(63 171)')),
+  ('o', 'q', 'p', GeomFromText('POINT(192 103)')),
+  ('f', 'x', 'e', GeomFromText('POINT(244 30)')),
+  ('n', 'x', 'c', GeomFromText('POINT(92 103)')),
+  ('r', 'q', 'z', GeomFromText('POINT(166 20)')),
+  ('s', 'a', 'j', GeomFromText('POINT(137 205)')),
+  ('z', 't', 't', GeomFromText('POINT(99 134)')),
+  ('o', 'm', 'j', GeomFromText('POINT(217 3)')),
+  ('n', 'h', 'j', GeomFromText('POINT(211 17)')),
+  ('v', 'v', 'a', GeomFromText('POINT(41 137)')),
+  ('q', 'o', 'j', GeomFromText('POINT(5 92)')),
+  ('z', 'y', 'e', GeomFromText('POINT(175 212)')),
+  ('j', 'z', 'h', GeomFromText('POINT(224 194)')),
+  ('a', 'g', 'm', GeomFromText('POINT(31 119)')),
+  ('p', 'c', 'f', GeomFromText('POINT(17 221)')),
+  ('t', 'h', 'k', GeomFromText('POINT(26 203)')),
+  ('u', 'w', 'p', GeomFromText('POINT(47 185)')),
+  ('z', 'a', 'c', GeomFromText('POINT(61 133)')),
+  ('u', 'k', 'a', GeomFromText('POINT(210 115)')),
+  ('k', 'f', 'h', GeomFromText('POINT(125 113)')),
+  ('t', 'v', 'y', GeomFromText('POINT(12 239)')),
+  ('u', 'v', 'd', GeomFromText('POINT(90 24)')),
+  ('m', 'y', 'w', GeomFromText('POINT(25 243)')),
+  ('d', 'n', 'g', GeomFromText('POINT(122 92)')),
+  ('z', 'm', 'f', GeomFromText('POINT(235 110)')),
+  ('q', 'd', 'f', GeomFromText('POINT(233 217)')),
+  ('a', 'v', 'u', GeomFromText('POINT(69 59)')),
+  ('x', 'k', 'p', GeomFromText('POINT(240 14)')),
+  ('i', 'v', 'r', GeomFromText('POINT(154 42)')),
+  ('w', 'h', 'l', GeomFromText('POINT(178 156)')),
+  ('d', 'h', 'n', GeomFromText('POINT(65 157)')),
+  ('c', 'k', 'z', GeomFromText('POINT(62 33)')),
+  ('e', 'l', 'w', GeomFromText('POINT(162 1)')),
+  ('r', 'f', 'i', GeomFromText('POINT(127 71)')),
+  ('q', 'm', 'c', GeomFromText('POINT(63 118)')),
+  ('c', 'h', 'u', GeomFromText('POINT(205 203)')),
+  ('d', 't', 'p', GeomFromText('POINT(234 87)')),
+  ('s', 'g', 'h', GeomFromText('POINT(149 34)')),
+  ('o', 'b', 'q', GeomFromText('POINT(159 179)')),
+  ('k', 'u', 'f', GeomFromText('POINT(202 254)')),
+  ('u', 'f', 'g', GeomFromText('POINT(70 15)')),
+  ('x', 's', 'b', GeomFromText('POINT(25 181)')),
+  ('s', 'c', 'g', GeomFromText('POINT(252 17)')),
+  ('a', 'c', 'f', GeomFromText('POINT(89 67)')),
+  ('r', 'e', 'q', GeomFromText('POINT(55 54)')),
+  ('f', 'i', 'k', GeomFromText('POINT(178 230)')),
+  ('p', 'e', 'l', GeomFromText('POINT(198 28)')),
+  ('w', 'o', 'd', GeomFromText('POINT(204 189)')),
+  ('c', 'a', 'g', GeomFromText('POINT(230 178)')),
+  ('r', 'o', 'e', GeomFromText('POINT(61 116)')),
+  ('w', 'a', 'a', GeomFromText('POINT(178 237)')),
+  ('v', 'd', 'e', GeomFromText('POINT(70 85)')),
+  ('k', 'c', 'e', GeomFromText('POINT(147 118)')),
+  ('d', 'q', 't', GeomFromText('POINT(218 77)')),
+  ('k', 'g', 'f', GeomFromText('POINT(192 113)')),
+  ('w', 'n', 'e', GeomFromText('POINT(92 124)')),
+  ('r', 'm', 'q', GeomFromText('POINT(130 65)')),
+  ('o', 'r', 'r', GeomFromText('POINT(174 233)')),
+  ('k', 'n', 't', GeomFromText('POINT(175 147)')),
+  ('q', 'm', 'r', GeomFromText('POINT(18 208)')),
+  ('l', 'd', 'i', GeomFromText('POINT(13 104)')),
+  ('w', 'o', 'y', GeomFromText('POINT(207 39)')),
+  ('p', 'u', 'o', GeomFromText('POINT(114 31)')),
+  ('y', 'a', 'p', GeomFromText('POINT(106 59)')),
+  ('a', 'x', 'z', GeomFromText('POINT(17 57)')),
+  ('v', 'h', 'x', GeomFromText('POINT(170 13)')),
+  ('t', 's', 'u', GeomFromText('POINT(84 18)')),
+  ('z', 'z', 'f', GeomFromText('POINT(250 197)')),
+  ('l', 'z', 't', GeomFromText('POINT(59 80)')),
+  ('j', 'g', 's', GeomFromText('POINT(54 26)')),
+  ('g', 'v', 'm', GeomFromText('POINT(89 98)')),
+  ('q', 'v', 'b', GeomFromText('POINT(39 240)')),
+  ('x', 'k', 'v', GeomFromText('POINT(246 207)')),
+  ('k', 'u', 'i', GeomFromText('POINT(105 111)')),
+  ('w', 'z', 's', GeomFromText('POINT(235 8)')),
+  ('d', 'd', 'd', GeomFromText('POINT(105 4)')),
+  ('c', 'z', 'q', GeomFromText('POINT(13 140)')),
+  ('m', 'k', 'i', GeomFromText('POINT(208 120)')),
+  ('g', 'a', 'g', GeomFromText('POINT(9 182)')),
+  ('z', 'j', 'r', GeomFromText('POINT(149 153)')),
+  ('h', 'f', 'g', GeomFromText('POINT(81 236)')),
+  ('m', 'e', 'q', GeomFromText('POINT(209 215)')),
+  ('c', 'h', 'y', GeomFromText('POINT(235 70)')),
+  ('i', 'e', 'g', GeomFromText('POINT(138 26)')),
+  ('m', 't', 'u', GeomFromText('POINT(119 237)')),
+  ('o', 'w', 's', GeomFromText('POINT(193 166)')),
+  ('f', 'm', 'q', GeomFromText('POINT(85 96)')),
+  ('x', 'l', 'x', GeomFromText('POINT(58 115)')),
+  ('x', 'q', 'u', GeomFromText('POINT(108 210)')),
+  ('b', 'h', 'i', GeomFromText('POINT(250 139)')),
+  ('y', 'd', 'x', GeomFromText('POINT(199 135)')),
+  ('w', 'h', 'p', GeomFromText('POINT(247 233)')),
+  ('p', 'z', 't', GeomFromText('POINT(148 249)')),
+  ('q', 'a', 'u', GeomFromText('POINT(174 78)')),
+  ('v', 't', 'm', GeomFromText('POINT(70 228)')),
+  ('t', 'n', 'f', GeomFromText('POINT(123 2)')),
+  ('x', 't', 'b', GeomFromText('POINT(35 50)')),
+  ('r', 'j', 'f', GeomFromText('POINT(200 51)')),
+  ('s', 'q', 'o', GeomFromText('POINT(23 184)')),
+  ('u', 'v', 'z', GeomFromText('POINT(7 113)')),
+  ('v', 'u', 'l', GeomFromText('POINT(145 190)')),
+  ('o', 'k', 'i', GeomFromText('POINT(161 122)')),
+  ('l', 'y', 'e', GeomFromText('POINT(17 232)')),
+  ('t', 'b', 'e', GeomFromText('POINT(120 50)')),
+  ('e', 's', 'u', GeomFromText('POINT(254 1)')),
+  ('d', 'd', 'u', GeomFromText('POINT(167 140)')),
+  ('o', 'b', 'x', GeomFromText('POINT(186 237)')),
+  ('m', 's', 's', GeomFromText('POINT(172 149)')),
+  ('t', 'y', 'a', GeomFromText('POINT(149 85)')),
+  ('x', 't', 'r', GeomFromText('POINT(10 165)')),
+  ('g', 'c', 'e', GeomFromText('POINT(95 165)')),
+  ('e', 'e', 'z', GeomFromText('POINT(98 65)')),
+  ('f', 'v', 'i', GeomFromText('POINT(149 144)')),
+  ('o', 'p', 'm', GeomFromText('POINT(233 67)')),
+  ('t', 'u', 'b', GeomFromText('POINT(109 215)')),
+  ('o', 'o', 'b', GeomFromText('POINT(130 48)')),
+  ('e', 'm', 'h', GeomFromText('POINT(88 189)')),
+  ('e', 'v', 'y', GeomFromText('POINT(55 29)')),
+  ('e', 't', 'm', GeomFromText('POINT(129 55)')),
+  ('p', 'p', 'i', GeomFromText('POINT(126 222)')),
+  ('c', 'i', 'c', GeomFromText('POINT(19 158)')),
+  ('c', 'b', 's', GeomFromText('POINT(13 19)')),
+  ('u', 'y', 'a', GeomFromText('POINT(114 5)')),
+  ('a', 'o', 'f', GeomFromText('POINT(227 232)')),
+  ('t', 'c', 'z', GeomFromText('POINT(63 62)')),
+  ('d', 'o', 'k', GeomFromText('POINT(48 228)')),
+  ('x', 'c', 'e', GeomFromText('POINT(204 2)')),
+  ('e', 'e', 'g', GeomFromText('POINT(125 43)')),
+  ('o', 'r', 'f', GeomFromText('POINT(171 140)'));
+UPDATE t1 set spatial_point=GeomFromText('POINT(163 157)') where  c1 like 'w%';
+UPDATE t1 set spatial_point=GeomFromText('POINT(53 151)') where  c1 like 'd%';
+UPDATE t1 set spatial_point=GeomFromText('POINT(96 183)') where  c1 like 'r%';
+UPDATE t1 set spatial_point=GeomFromText('POINT(57 91)') where  c1 like 'q%';
+UPDATE t1 set spatial_point=GeomFromText('POINT(202 110)') where  c1 like 'c%';
+UPDATE t1 set spatial_point=GeomFromText('POINT(120 137)') where  c1 like 'w%';
+UPDATE t1 set spatial_point=GeomFromText('POINT(207 147)') where  c1 like 'c%';
+UPDATE t1 set spatial_point=GeomFromText('POINT(31 125)') where  c1 like 'e%';
+UPDATE t1 set spatial_point=GeomFromText('POINT(27 36)') where  c1 like 'r%';
+INSERT INTO t1 (c2, c1, c3, spatial_point) VALUES
+  ('b', 'c', 'e', GeomFromText('POINT(41 137)')),
+  ('p', 'y', 'k', GeomFromText('POINT(50 22)')),
+  ('s', 'c', 'h', GeomFromText('POINT(208 173)')),
+  ('x', 'u', 'l', GeomFromText('POINT(199 175)')),
+  ('s', 'r', 'h', GeomFromText('POINT(85 192)')),
+  ('j', 'k', 'u', GeomFromText('POINT(18 25)')),
+  ('p', 'w', 'h', GeomFromText('POINT(152 197)')),
+  ('e', 'd', 'c', GeomFromText('POINT(229 3)')),
+  ('o', 'x', 'k', GeomFromText('POINT(187 155)')),
+  ('o', 'b', 'k', GeomFromText('POINT(208 150)')),
+  ('d', 'a', 'j', GeomFromText('POINT(70 87)')),
+  ('f', 'e', 'k', GeomFromText('POINT(156 96)')),
+  ('u', 'y', 'p', GeomFromText('POINT(239 193)')),
+  ('n', 'v', 'p', GeomFromText('POINT(223 98)')),
+  ('z', 'j', 'r', GeomFromText('POINT(87 89)')),
+  ('h', 'x', 'x', GeomFromText('POINT(92 0)')),
+  ('r', 'v', 'r', GeomFromText('POINT(159 139)')),
+  ('v', 'g', 'g', GeomFromText('POINT(16 229)')),
+  ('z', 'k', 'u', GeomFromText('POINT(99 52)')),
+  ('p', 'p', 'o', GeomFromText('POINT(105 125)')),
+  ('w', 'h', 'y', GeomFromText('POINT(105 154)')),
+  ('v', 'y', 'z', GeomFromText('POINT(134 238)')),
+  ('x', 'o', 'o', GeomFromText('POINT(178 88)')),
+  ('z', 'w', 'd', GeomFromText('POINT(123 60)')),
+  ('q', 'f', 'u', GeomFromText('POINT(64 90)')),
+  ('s', 'n', 't', GeomFromText('POINT(50 138)')),
+  ('v', 'p', 't', GeomFromText('POINT(114 91)')),
+  ('a', 'o', 'n', GeomFromText('POINT(78 43)')),
+  ('k', 'u', 'd', GeomFromText('POINT(185 161)')),
+  ('w', 'd', 'n', GeomFromText('POINT(25 92)')),
+  ('k', 'w', 'a', GeomFromText('POINT(59 238)')),
+  ('t', 'c', 'f', GeomFromText('POINT(65 87)')),
+  ('g', 's', 'p', GeomFromText('POINT(238 126)')),
+  ('d', 'n', 'y', GeomFromText('POINT(107 173)')),
+  ('l', 'a', 'w', GeomFromText('POINT(125 152)')),
+  ('m', 'd', 'j', GeomFromText('POINT(146 53)')),
+  ('q', 'm', 'c', GeomFromText('POINT(217 187)')),
+  ('i', 'r', 'r', GeomFromText('POINT(6 113)')),
+  ('e', 'j', 'b', GeomFromText('POINT(37 83)')),
+  ('w', 'w', 'h', GeomFromText('POINT(83 199)')),
+  ('k', 'b', 's', GeomFromText('POINT(170 64)')),
+  ('s', 'b', 'c', GeomFromText('POINT(163 130)')),
+  ('c', 'h', 'a', GeomFromText('POINT(141 3)')),
+  ('k', 'j', 'u', GeomFromText('POINT(143 76)')),
+  ('r', 'h', 'o', GeomFromText('POINT(243 92)')),
+  ('i', 'd', 'b', GeomFromText('POINT(205 13)')),
+  ('r', 'y', 'q', GeomFromText('POINT(138 8)')),
+  ('m', 'o', 'i', GeomFromText('POINT(36 45)')),
+  ('v', 'g', 'm', GeomFromText('POINT(0 40)')),
+  ('f', 'e', 'i', GeomFromText('POINT(76 6)')),
+  ('c', 'q', 'q', GeomFromText('POINT(115 248)')),
+  ('x', 'c', 'i', GeomFromText('POINT(29 74)')),
+  ('l', 's', 't', GeomFromText('POINT(83 18)')),
+  ('t', 't', 'a', GeomFromText('POINT(26 168)')),
+  ('u', 'n', 'x', GeomFromText('POINT(200 110)')),
+  ('j', 'b', 'd', GeomFromText('POINT(216 136)')),
+  ('s', 'p', 'w', GeomFromText('POINT(38 156)')),
+  ('f', 'b', 'v', GeomFromText('POINT(29 186)')),
+  ('v', 'e', 'r', GeomFromText('POINT(149 40)')),
+  ('v', 't', 'm', GeomFromText('POINT(184 24)')),
+  ('y', 'g', 'a', GeomFromText('POINT(219 105)')),
+  ('s', 'f', 'i', GeomFromText('POINT(114 130)')),
+  ('e', 'q', 'h', GeomFromText('POINT(203 135)')),
+  ('h', 'g', 'b', GeomFromText('POINT(9 208)')),
+  ('o', 'l', 'r', GeomFromText('POINT(245 79)')),
+  ('s', 's', 'v', GeomFromText('POINT(238 198)')),
+  ('w', 'w', 'z', GeomFromText('POINT(209 232)')),
+  ('v', 'd', 'n', GeomFromText('POINT(30 193)')),
+  ('q', 'w', 'k', GeomFromText('POINT(133 18)')),
+  ('o', 'h', 'o', GeomFromText('POINT(42 140)')),
+  ('f', 'f', 'h', GeomFromText('POINT(145 1)')),
+  ('u', 's', 'r', GeomFromText('POINT(70 62)')),
+  ('x', 'n', 'q', GeomFromText('POINT(33 86)')),
+  ('u', 'p', 'v', GeomFromText('POINT(232 220)')),
+  ('z', 'e', 'a', GeomFromText('POINT(130 69)')),
+  ('r', 'u', 'z', GeomFromText('POINT(243 241)')),
+  ('b', 'n', 't', GeomFromText('POINT(120 12)')),
+  ('u', 'f', 's', GeomFromText('POINT(190 212)')),
+  ('a', 'd', 'q', GeomFromText('POINT(235 191)')),
+  ('f', 'q', 'm', GeomFromText('POINT(176 2)')),
+  ('n', 'c', 's', GeomFromText('POINT(218 163)')),
+  ('e', 'm', 'h', GeomFromText('POINT(163 108)')),
+  ('c', 'f', 'l', GeomFromText('POINT(220 115)')),
+  ('c', 'v', 'q', GeomFromText('POINT(66 45)')),
+  ('w', 'v', 'x', GeomFromText('POINT(251 220)')),
+  ('f', 'w', 'z', GeomFromText('POINT(146 149)')),
+  ('h', 'n', 'h', GeomFromText('POINT(148 128)')),
+  ('y', 'k', 'v', GeomFromText('POINT(28 110)')),
+  ('c', 'x', 'q', GeomFromText('POINT(13 13)')),
+  ('e', 'd', 's', GeomFromText('POINT(91 190)')),
+  ('c', 'w', 'c', GeomFromText('POINT(10 231)')),
+  ('u', 'j', 'n', GeomFromText('POINT(250 21)')),
+  ('w', 'n', 'x', GeomFromText('POINT(141 69)')),
+  ('f', 'p', 'y', GeomFromText('POINT(228 246)')),
+  ('d', 'q', 'f', GeomFromText('POINT(194 22)')),
+  ('d', 'z', 'l', GeomFromText('POINT(233 181)')),
+  ('c', 'a', 'q', GeomFromText('POINT(183 96)')),
+  ('m', 'i', 'd', GeomFromText('POINT(117 226)')),
+  ('z', 'y', 'y', GeomFromText('POINT(62 81)')),
+  ('g', 'v', 'm', GeomFromText('POINT(66 158)'));
+SET @@RAND_SEED1=481064922, @@RAND_SEED2=438133497;
+DELETE FROM t1 ORDER BY RAND() LIMIT 10;
+SET @@RAND_SEED1=280535103, @@RAND_SEED2=444518646;
+DELETE FROM t1 ORDER BY RAND() LIMIT 10;
+SET @@RAND_SEED1=1072017234, @@RAND_SEED2=484203885;
+DELETE FROM t1 ORDER BY RAND() LIMIT 10;
+SET @@RAND_SEED1=358851897, @@RAND_SEED2=358495224;
+DELETE FROM t1 ORDER BY RAND() LIMIT 10;
+SET @@RAND_SEED1=509031459, @@RAND_SEED2=675962925;
+DELETE FROM t1 ORDER BY RAND() LIMIT 10;
+UPDATE t1 set spatial_point=GeomFromText('POINT(61 203)') where  c1 like 'y%';
+UPDATE t1 set spatial_point=GeomFromText('POINT(202 194)') where  c1 like 'f%';
+UPDATE t1 set spatial_point=GeomFromText('POINT(228 18)') where  c1 like 'h%';
+UPDATE t1 set spatial_point=GeomFromText('POINT(88 18)') where  c1 like 'l%';
+UPDATE t1 set spatial_point=GeomFromText('POINT(176 94)') where  c1 like 'e%';
+UPDATE t1 set spatial_point=GeomFromText('POINT(44 47)') where  c1 like 'g%';
+UPDATE t1 set spatial_point=GeomFromText('POINT(95 191)') where  c1 like 'b%';
+UPDATE t1 set spatial_point=GeomFromText('POINT(179 218)') where  c1 like 'y%';
+UPDATE t1 set spatial_point=GeomFromText('POINT(239 40)') where  c1 like 'g%';
+UPDATE t1 set spatial_point=GeomFromText('POINT(248 41)') where  c1 like 'q%';
+UPDATE t1 set spatial_point=GeomFromText('POINT(167 82)') where  c1 like 't%';
+UPDATE t1 set spatial_point=GeomFromText('POINT(13 104)') where  c1 like 'u%';
+UPDATE t1 set spatial_point=GeomFromText('POINT(139 84)') where  c1 like 'a%';
+UPDATE t1 set spatial_point=GeomFromText('POINT(145 108)') where  c1 like 'p%';
+UPDATE t1 set spatial_point=GeomFromText('POINT(147 57)') where  c1 like 't%';
+UPDATE t1 set spatial_point=GeomFromText('POINT(217 144)') where  c1 like 'n%';
+UPDATE t1 set spatial_point=GeomFromText('POINT(160 224)') where  c1 like 'w%';
+UPDATE t1 set spatial_point=GeomFromText('POINT(38 28)') where  c1 like 'j%';
+UPDATE t1 set spatial_point=GeomFromText('POINT(104 114)') where  c1 like 'q%';
+UPDATE t1 set spatial_point=GeomFromText('POINT(88 19)') where  c1 like 'c%';
+INSERT INTO t1 (c2, c1, c3, spatial_point) VALUES
+  ('f', 'x', 'p', GeomFromText('POINT(92 181)')),
+  ('s', 'i', 'c', GeomFromText('POINT(49 60)')),
+  ('c', 'c', 'i', GeomFromText('POINT(7 57)')),
+  ('n', 'g', 'k', GeomFromText('POINT(252 105)')),
+  ('g', 'b', 'm', GeomFromText('POINT(180 11)')),
+  ('u', 'l', 'r', GeomFromText('POINT(32 90)')),
+  ('c', 'x', 'e', GeomFromText('POINT(143 24)')),
+  ('x', 'u', 'a', GeomFromText('POINT(123 92)')),
+  ('s', 'b', 'h', GeomFromText('POINT(190 108)')),
+  ('c', 'x', 'b', GeomFromText('POINT(104 100)')),
+  ('i', 'd', 't', GeomFromText('POINT(214 104)')),
+  ('r', 'w', 'g', GeomFromText('POINT(29 67)')),
+  ('b', 'f', 'g', GeomFromText('POINT(149 46)')),
+  ('r', 'r', 'd', GeomFromText('POINT(242 196)')),
+  ('j', 'l', 'a', GeomFromText('POINT(90 196)')),
+  ('e', 't', 'b', GeomFromText('POINT(190 64)')),
+  ('l', 'x', 'w', GeomFromText('POINT(250 73)')),
+  ('q', 'y', 'r', GeomFromText('POINT(120 182)')),
+  ('s', 'j', 'a', GeomFromText('POINT(180 175)')),
+  ('n', 'i', 'y', GeomFromText('POINT(124 136)')),
+  ('s', 'x', 's', GeomFromText('POINT(176 209)')),
+  ('u', 'f', 's', GeomFromText('POINT(215 173)')),
+  ('m', 'j', 'x', GeomFromText('POINT(44 140)')),
+  ('v', 'g', 'x', GeomFromText('POINT(177 233)')),
+  ('u', 't', 'b', GeomFromText('POINT(136 197)')),
+  ('f', 'g', 'b', GeomFromText('POINT(10 8)')),
+  ('v', 'c', 'j', GeomFromText('POINT(13 81)')),
+  ('d', 's', 'q', GeomFromText('POINT(200 100)')),
+  ('a', 'p', 'j', GeomFromText('POINT(33 40)')),
+  ('i', 'c', 'g', GeomFromText('POINT(168 204)')),
+  ('k', 'h', 'i', GeomFromText('POINT(93 243)')),
+  ('s', 'b', 's', GeomFromText('POINT(157 13)')),
+  ('v', 'l', 'l', GeomFromText('POINT(103 6)')),
+  ('r', 'b', 'k', GeomFromText('POINT(244 137)')),
+  ('l', 'd', 'r', GeomFromText('POINT(162 254)')),
+  ('q', 'b', 'z', GeomFromText('POINT(136 246)')),
+  ('x', 'x', 'p', GeomFromText('POINT(120 37)')),
+  ('m', 'e', 'z', GeomFromText('POINT(203 167)')),
+  ('q', 'n', 'p', GeomFromText('POINT(94 119)')),
+  ('b', 'g', 'u', GeomFromText('POINT(93 248)')),
+  ('r', 'v', 'v', GeomFromText('POINT(53 88)')),
+  ('y', 'a', 'i', GeomFromText('POINT(98 219)')),
+  ('a', 's', 'g', GeomFromText('POINT(173 138)')),
+  ('c', 'a', 't', GeomFromText('POINT(235 135)')),
+  ('q', 'm', 'd', GeomFromText('POINT(224 208)')),
+  ('e', 'p', 'k', GeomFromText('POINT(161 238)')),
+  ('n', 'g', 'q', GeomFromText('POINT(35 204)')),
+  ('t', 't', 'x', GeomFromText('POINT(230 178)')),
+  ('w', 'f', 'a', GeomFromText('POINT(150 221)')),
+  ('z', 'm', 'z', GeomFromText('POINT(119 42)')),
+  ('l', 'j', 's', GeomFromText('POINT(97 96)')),
+  ('f', 'z', 'x', GeomFromText('POINT(208 65)')),
+  ('i', 'v', 'c', GeomFromText('POINT(145 79)')),
+  ('l', 'f', 'k', GeomFromText('POINT(83 234)')),
+  ('u', 'a', 's', GeomFromText('POINT(250 49)')),
+  ('o', 'k', 'p', GeomFromText('POINT(46 50)')),
+  ('d', 'e', 'z', GeomFromText('POINT(30 198)')),
+  ('r', 'r', 'l', GeomFromText('POINT(78 189)')),
+  ('y', 'l', 'f', GeomFromText('POINT(188 132)')),
+  ('d', 'q', 'm', GeomFromText('POINT(247 107)')),
+  ('p', 'j', 'n', GeomFromText('POINT(148 227)')),
+  ('b', 'o', 'i', GeomFromText('POINT(172 25)')),
+  ('e', 'v', 'd', GeomFromText('POINT(94 248)')),
+  ('q', 'd', 'f', GeomFromText('POINT(15 29)')),
+  ('w', 'b', 'b', GeomFromText('POINT(74 111)')),
+  ('g', 'q', 'f', GeomFromText('POINT(107 215)')),
+  ('o', 'h', 'r', GeomFromText('POINT(25 168)')),
+  ('u', 't', 'w', GeomFromText('POINT(251 188)')),
+  ('h', 's', 'w', GeomFromText('POINT(254 247)')),
+  ('f', 'f', 'b', GeomFromText('POINT(166 103)'));
+SET @@RAND_SEED1=866613816, @@RAND_SEED2=92289615;
+INSERT INTO t1 (c2, c1, c3, spatial_point) VALUES
+  ('l', 'c', 'l', GeomFromText('POINT(202 98)')),
+  ('k', 'c', 'b', GeomFromText('POINT(46 206)')),
+  ('r', 'y', 'm', GeomFromText('POINT(74 140)')),
+  ('y', 'z', 'd', GeomFromText('POINT(200 160)')),
+  ('s', 'y', 's', GeomFromText('POINT(156 205)')),
+  ('u', 'v', 'p', GeomFromText('POINT(86 82)')),
+  ('j', 's', 's', GeomFromText('POINT(91 233)')),
+  ('x', 'j', 'f', GeomFromText('POINT(3 14)')),
+  ('l', 'z', 'v', GeomFromText('POINT(123 156)')),
+  ('h', 'i', 'o', GeomFromText('POINT(145 229)')),
+  ('o', 'r', 'd', GeomFromText('POINT(15 22)')),
+  ('f', 'x', 't', GeomFromText('POINT(21 60)')),
+  ('t', 'g', 'h', GeomFromText('POINT(50 153)')),
+  ('g', 'u', 'b', GeomFromText('POINT(82 85)')),
+  ('v', 'a', 'p', GeomFromText('POINT(231 178)')),
+  ('n', 'v', 'o', GeomFromText('POINT(183 25)')),
+  ('j', 'n', 'm', GeomFromText('POINT(50 144)')),
+  ('e', 'f', 'i', GeomFromText('POINT(46 16)')),
+  ('d', 'w', 'a', GeomFromText('POINT(66 6)')),
+  ('f', 'x', 'a', GeomFromText('POINT(107 197)')),
+  ('m', 'o', 'a', GeomFromText('POINT(142 80)')),
+  ('q', 'l', 'g', GeomFromText('POINT(251 23)')),
+  ('c', 's', 's', GeomFromText('POINT(158 43)')),
+  ('y', 'd', 'o', GeomFromText('POINT(196 228)')),
+  ('d', 'p', 'l', GeomFromText('POINT(107 5)')),
+  ('h', 'a', 'b', GeomFromText('POINT(183 166)')),
+  ('m', 'w', 'p', GeomFromText('POINT(19 59)')),
+  ('b', 'y', 'o', GeomFromText('POINT(178 30)')),
+  ('x', 'w', 'i', GeomFromText('POINT(168 94)')),
+  ('t', 'k', 'z', GeomFromText('POINT(171 5)')),
+  ('r', 'm', 'a', GeomFromText('POINT(222 19)')),
+  ('u', 'v', 'e', GeomFromText('POINT(224 80)')),
+  ('q', 'r', 'k', GeomFromText('POINT(212 218)')),
+  ('d', 'p', 'j', GeomFromText('POINT(169 7)')),
+  ('d', 'r', 'v', GeomFromText('POINT(193 23)')),
+  ('n', 'y', 'y', GeomFromText('POINT(130 178)')),
+  ('m', 'z', 'r', GeomFromText('POINT(81 200)')),
+  ('j', 'e', 'w', GeomFromText('POINT(145 239)')),
+  ('v', 'h', 'x', GeomFromText('POINT(24 105)')),
+  ('z', 'm', 'a', GeomFromText('POINT(175 129)')),
+  ('b', 'c', 'v', GeomFromText('POINT(213 10)')),
+  ('t', 't', 'u', GeomFromText('POINT(2 129)')),
+  ('r', 's', 'v', GeomFromText('POINT(209 192)')),
+  ('x', 'p', 'g', GeomFromText('POINT(43 63)')),
+  ('t', 'e', 'u', GeomFromText('POINT(139 210)')),
+  ('l', 'e', 't', GeomFromText('POINT(245 148)')),
+  ('a', 'i', 'k', GeomFromText('POINT(167 195)')),
+  ('m', 'o', 'h', GeomFromText('POINT(206 120)')),
+  ('g', 'z', 's', GeomFromText('POINT(169 240)')),
+  ('z', 'u', 's', GeomFromText('POINT(202 120)')),
+  ('i', 'b', 'a', GeomFromText('POINT(216 18)')),
+  ('w', 'y', 'g', GeomFromText('POINT(119 236)')),
+  ('h', 'y', 'p', GeomFromText('POINT(161 24)'));
+UPDATE t1 set spatial_point=GeomFromText('POINT(33 100)') where  c1 like 't%';
+UPDATE t1 set spatial_point=GeomFromText('POINT(41 46)') where  c1 like 'f%';
+CHECK TABLE t1 EXTENDED;
+DROP TABLE t1;
+
 # End of 4.1 tests
 
 #
diff --git a/mysql-test/t/heap.test b/mysql-test/t/heap.test
index 624597cd8d7c8e83ff7e97fa23373b12a85af05f..b47a5fc2033165a8af5e5769087e276444dc72ab 100644
--- a/mysql-test/t/heap.test
+++ b/mysql-test/t/heap.test
@@ -471,3 +471,12 @@ SELECT COUNT(*) FROM t1 WHERE c=REPEAT('a',256);
 DROP TABLE t1;
 
 # End of 5.0 tests
+
+#
+# BUG#26080 - Memory Storage engine not working properly
+#
+CREATE TABLE t1(c1 VARCHAR(100), c2 INT) ENGINE=MEMORY;
+INSERT INTO t1 VALUES('', 0);
+ALTER TABLE t1 MODIFY c1 VARCHAR(101);
+SELECT c2 FROM t1;
+DROP TABLE t1;
diff --git a/mysql-test/t/merge.test b/mysql-test/t/merge.test
index d3639b07bdb2154dd43d5b5fb46b68f8d669505d..1fce643a5e39742cf5f8b42e114a47724ab848e6 100644
--- a/mysql-test/t/merge.test
+++ b/mysql-test/t/merge.test
@@ -434,6 +434,15 @@ CREATE TABLE tm1(a SMALLINT, b SMALLINT, KEY(a)) ENGINE=MERGE UNION=(t1);
 SELECT * FROM tm1;
 DROP TABLE t1, tm1;
 
+#
+# Bug#26464 - insert delayed + update + merge = corruption
+#
+CREATE TABLE t1(c1 INT) ENGINE=MyISAM;
+CREATE TABLE t2(c1 INT) ENGINE=MERGE UNION=(t1);
+--error 1031
+INSERT DELAYED INTO t2 VALUES(1);
+DROP TABLE t1, t2;
+
 # End of 4.1 tests
 
 #
diff --git a/storage/heap/ha_heap.cc b/storage/heap/ha_heap.cc
index cf11c9923eb012e56aba2b243cd7fe9de7d178af..f2caa7e6d182de1e6cd427d337ba566b742c00b0 100644
--- a/storage/heap/ha_heap.cc
+++ b/storage/heap/ha_heap.cc
@@ -703,9 +703,10 @@ bool ha_heap::check_if_incompatible_data(HA_CREATE_INFO *info,
 					 uint table_changes)
 {
   /* Check that auto_increment value was not changed */
-  if ((table_changes != IS_EQUAL_YES &&
-       info->used_fields & HA_CREATE_USED_AUTO) &&
-      info->auto_increment_value != 0)
+  if ((info->used_fields & HA_CREATE_USED_AUTO &&
+       info->auto_increment_value != 0) ||
+      table_changes == IS_EQUAL_NO ||
+      table_changes & IS_EQUAL_PACK_LENGTH) // Not implemented yet
     return COMPATIBLE_DATA_NO;
   return COMPATIBLE_DATA_YES;
 }
diff --git a/storage/myisam/mi_open.c b/storage/myisam/mi_open.c
index 5db5bc561d1bfe43603f95c1442c99377b9cd517..a06b21ee5b4fbac0fda308866838054db0889f08 100644
--- a/storage/myisam/mi_open.c
+++ b/storage/myisam/mi_open.c
@@ -506,24 +506,6 @@ MI_INFO *mi_open(const char *name, int mode, uint open_flags)
       share->data_file_type = DYNAMIC_RECORD;
     my_afree((gptr) disk_cache);
     mi_setup_functions(share);
-#ifdef HAVE_MMAP
-    if (open_flags & HA_OPEN_MMAP)
-    {
-      info.s= share;
-      if (mi_dynmap_file(&info, share->state.state.data_file_length))
-      {
-        /* purecov: begin inspected */
-        /* Ignore if mmap fails. Use file I/O instead. */
-        DBUG_PRINT("warning", ("mmap failed: errno: %d", errno));
-        /* purecov: end */
-      }
-      else
-      {
-        share->file_read= mi_mmap_pread;
-        share->file_write= mi_mmap_pwrite;
-      }
-    }
-#endif /* HAVE_MMAP */
     share->is_log_table= FALSE;
 #ifdef THREAD
     thr_lock_init(&share->lock);
@@ -554,6 +536,14 @@ MI_INFO *mi_open(const char *name, int mode, uint open_flags)
       }
     }
 #endif
+    /*
+      Memory mapping can only be requested after initializing intern_lock.
+    */
+    if (open_flags & HA_OPEN_MMAP)
+    {
+      info.s= share;
+      mi_extra(&info, HA_EXTRA_MMAP, 0);
+    }
   }
   else
   {
diff --git a/storage/myisam/rt_index.c b/storage/myisam/rt_index.c
index edb33ec10b9b005623852f191869bef444f4a448..cf144839dd1261d6b1a0d6bc15c4afefcda332b9 100644
--- a/storage/myisam/rt_index.c
+++ b/storage/myisam/rt_index.c
@@ -184,6 +184,7 @@ int rtree_find_first(MI_INFO *info, uint keynr, uchar *key, uint key_length,
   /*
     Save searched key, include data pointer.
     The data pointer is required if the search_flag contains MBR_DATA.
+    (minimum bounding rectangle)
   */
   memcpy(info->first_mbr_key, key, keyinfo->keylength);
   info->last_rkey_length = key_length;
@@ -538,16 +539,19 @@ static int rtree_insert_req(MI_INFO *info, MI_KEYDEF *keyinfo, uchar *key,
   uint nod_flag;
   uchar *page_buf;
   int res;
+  DBUG_ENTER("rtree_insert_req");
 
   if (!(page_buf = (uchar*)my_alloca((uint)keyinfo->block_length + 
                                      MI_MAX_KEY_BUFF)))
   {
     my_errno = HA_ERR_OUT_OF_MEM;
-    return -1;
+    DBUG_RETURN(-1); /* purecov: inspected */
   }
   if (!_mi_fetch_keypage(info, keyinfo, page, DFLT_INIT_HITS, page_buf, 0))
     goto err1;
   nod_flag = mi_test_if_nod(page_buf);
+  DBUG_PRINT("rtree", ("page: %lu  level: %d  ins_level: %d  nod_flag: %u",
+                       (ulong) page, level, ins_level, nod_flag));
 
   if ((ins_level == -1 && nod_flag) ||       /* key: go down to leaf */
       (ins_level > -1 && ins_level > level)) /* branch: go down to ins_level */
@@ -599,11 +603,11 @@ static int rtree_insert_req(MI_INFO *info, MI_KEYDEF *keyinfo, uchar *key,
 
 ok:
   my_afree((byte*)page_buf);
-  return res;
+  DBUG_RETURN(res);
 
 err1:
   my_afree((byte*)page_buf);
-  return -1;
+  DBUG_RETURN(-1); /* purecov: inspected */
 }
 
 
@@ -623,18 +627,19 @@ static int rtree_insert_level(MI_INFO *info, uint keynr, uchar *key,
   MI_KEYDEF *keyinfo = info->s->keyinfo + keynr;
   int res;
   my_off_t new_page;
-  
+  DBUG_ENTER("rtree_insert_level");
+
   if ((old_root = info->s->state.key_root[keynr]) == HA_OFFSET_ERROR)
   {
     if ((old_root = _mi_new(info, keyinfo, DFLT_INIT_HITS)) == HA_OFFSET_ERROR)
-      return -1;
+      DBUG_RETURN(-1);
     info->buff_used = 1;
     mi_putint(info->buff, 2, 0);
     res = rtree_add_key(info, keyinfo, key, key_length, info->buff, NULL);
     if (_mi_write_keypage(info, keyinfo, old_root, DFLT_INIT_HITS, info->buff))
-      return 1;
+      DBUG_RETURN(1);
     info->s->state.key_root[keynr] = old_root;
-    return res;
+    DBUG_RETURN(res);
   }
 
   switch ((res = rtree_insert_req(info, keyinfo, key, key_length, 
@@ -651,11 +656,12 @@ static int rtree_insert_level(MI_INFO *info, uint keynr, uchar *key,
       uchar *new_key;
       uint nod_flag = info->s->base.key_reflength;
 
+      DBUG_PRINT("rtree", ("root was split, grow a new root"));
       if (!(new_root_buf = (uchar*)my_alloca((uint)keyinfo->block_length + 
                                              MI_MAX_KEY_BUFF)))
       {
         my_errno = HA_ERR_OUT_OF_MEM;
-        return -1;
+        DBUG_RETURN(-1); /* purecov: inspected */
       }
 
       mi_putint(new_root_buf, 2, nod_flag);
@@ -681,12 +687,14 @@ static int rtree_insert_level(MI_INFO *info, uint keynr, uchar *key,
                             DFLT_INIT_HITS, new_root_buf))
         goto err1;
       info->s->state.key_root[keynr] = new_root;
+      DBUG_PRINT("rtree", ("new root page: %lu  level: %d  nod_flag: %u",
+                           (ulong) new_root, 0, mi_test_if_nod(new_root_buf)));
 
       my_afree((byte*)new_root_buf);
       break;
 err1:
       my_afree((byte*)new_root_buf);
-      return -1;
+      DBUG_RETURN(-1); /* purecov: inspected */
     }
     default:
     case -1: /* error */
@@ -694,7 +702,7 @@ static int rtree_insert_level(MI_INFO *info, uint keynr, uchar *key,
       break;
     }
   }
-  return res;
+  DBUG_RETURN(res);
 }
 
 
@@ -708,8 +716,10 @@ static int rtree_insert_level(MI_INFO *info, uint keynr, uchar *key,
 
 int rtree_insert(MI_INFO *info, uint keynr, uchar *key, uint key_length)
 {
-  return (!key_length ||
-	  (rtree_insert_level(info, keynr, key, key_length, -1) == -1)) ? -1 : 0;
+  DBUG_ENTER("rtree_insert");
+  DBUG_RETURN((!key_length ||
+               (rtree_insert_level(info, keynr, key, key_length, -1) == -1)) ?
+              -1 : 0);
 }
 
 
@@ -724,6 +734,8 @@ int rtree_insert(MI_INFO *info, uint keynr, uchar *key, uint key_length)
 static int rtree_fill_reinsert_list(stPageList *ReinsertList, my_off_t page, 
                                     int level)
 {
+  DBUG_ENTER("rtree_fill_reinsert_list");
+  DBUG_PRINT("rtree", ("page: %lu  level: %d", (ulong) page, level));
   if (ReinsertList->n_pages == ReinsertList->m_pages)
   {
     ReinsertList->m_pages += REINSERT_BUFFER_INC;
@@ -735,10 +747,10 @@ static int rtree_fill_reinsert_list(stPageList *ReinsertList, my_off_t page,
   ReinsertList->pages[ReinsertList->n_pages].offs = page;
   ReinsertList->pages[ReinsertList->n_pages].level = level;
   ReinsertList->n_pages++;
-  return 0;
+  DBUG_RETURN(0);
 
 err1:
-  return -1;
+  DBUG_RETURN(-1); /* purecov: inspected */
 }
 
 
@@ -762,15 +774,18 @@ static int rtree_delete_req(MI_INFO *info, MI_KEYDEF *keyinfo, uchar *key,
   uint nod_flag;
   uchar *page_buf;
   int res;
+  DBUG_ENTER("rtree_delete_req");
 
   if (!(page_buf = (uchar*)my_alloca((uint)keyinfo->block_length)))
   {
     my_errno = HA_ERR_OUT_OF_MEM;
-    return -1;
+    DBUG_RETURN(-1); /* purecov: inspected */
   }
   if (!_mi_fetch_keypage(info, keyinfo, page, DFLT_INIT_HITS, page_buf, 0))
     goto err1;
   nod_flag = mi_test_if_nod(page_buf);
+  DBUG_PRINT("rtree", ("page: %lu  level: %d  nod_flag: %u",
+                       (ulong) page, level, nod_flag));
 
   k = rt_PAGE_FIRST_KEY(page_buf, nod_flag);
   last = rt_PAGE_END(page_buf);
@@ -791,6 +806,7 @@ static int rtree_delete_req(MI_INFO *info, MI_KEYDEF *keyinfo, uchar *key,
             if (*page_size + key_length >= rt_PAGE_MIN_SIZE(keyinfo->block_length)) 
             { 
               /* OK */
+              /* Calculate a new key value (MBR) for the shrinked block. */
               if (rtree_set_key_mbr(info, keyinfo, k, key_length, 
                                   _mi_kpos(nod_flag, k)))
                 goto err1;
@@ -800,10 +816,23 @@ static int rtree_delete_req(MI_INFO *info, MI_KEYDEF *keyinfo, uchar *key,
             }
             else
             { 
-              /* too small: delete key & add it descendant to reinsert list */
+              /*
+                Too small: delete key & add it descendant to reinsert list.
+                Store position and level of the block so that it can be
+                accessed later for inserting the remaining keys.
+              */
+              DBUG_PRINT("rtree", ("too small. move block to reinsert list"));
               if (rtree_fill_reinsert_list(ReinsertList, _mi_kpos(nod_flag, k),
                                            level + 1))
                 goto err1;
+              /*
+                Delete the key that references the block. This makes the
+                block disappear from the index. Hence we need to insert
+                its remaining keys later. Note: if the block is a branch
+                block, we do not only remove this block, but the whole
+                subtree. So we need to re-insert its keys on the same
+                level later to reintegrate the subtrees.
+              */
               rtree_delete_key(info, page_buf, k, key_length, nod_flag);
               if (_mi_write_keypage(info, keyinfo, page,
                                     DFLT_INIT_HITS, page_buf))
@@ -863,11 +892,11 @@ static int rtree_delete_req(MI_INFO *info, MI_KEYDEF *keyinfo, uchar *key,
 
 ok:
   my_afree((byte*)page_buf);
-  return res;
+  DBUG_RETURN(res);
 
 err1:
   my_afree((byte*)page_buf);
-  return -1;
+  DBUG_RETURN(-1); /* purecov: inspected */
 }
 
 
@@ -885,12 +914,15 @@ int rtree_delete(MI_INFO *info, uint keynr, uchar *key, uint key_length)
   stPageList ReinsertList;
   my_off_t old_root;
   MI_KEYDEF *keyinfo = info->s->keyinfo + keynr;
+  DBUG_ENTER("rtree_delete");
 
   if ((old_root = info->s->state.key_root[keynr]) == HA_OFFSET_ERROR)
   {
     my_errno= HA_ERR_END_OF_FILE;
-    return -1;
+    DBUG_RETURN(-1); /* purecov: inspected */
   }
+  DBUG_PRINT("rtree", ("starting deletion at root page: %lu",
+                       (ulong) old_root));
 
   ReinsertList.pages = NULL;
   ReinsertList.n_pages = 0;
@@ -899,12 +931,12 @@ int rtree_delete(MI_INFO *info, uint keynr, uchar *key, uint key_length)
   switch (rtree_delete_req(info, keyinfo, key, key_length, old_root, 
                                  &page_size, &ReinsertList, 0))
   {
-    case 2:
+    case 2: /* empty */
     {
       info->s->state.key_root[keynr] = HA_OFFSET_ERROR;
-      return 0;
+      DBUG_RETURN(0);
     }
-    case 0:
+    case 0: /* deleted */
     {
       uint nod_flag;
       ulong i;
@@ -923,16 +955,34 @@ int rtree_delete(MI_INFO *info, uint keynr, uchar *key, uint key_length)
                                DFLT_INIT_HITS, page_buf, 0))
           goto err1;
         nod_flag = mi_test_if_nod(page_buf);
+        DBUG_PRINT("rtree", ("reinserting keys from "
+                             "page: %lu  level: %d  nod_flag: %u",
+                             (ulong) ReinsertList.pages[i].offs,
+                             ReinsertList.pages[i].level, nod_flag));
+
         k = rt_PAGE_FIRST_KEY(page_buf, nod_flag);
         last = rt_PAGE_END(page_buf);
         for (; k < last; k = rt_PAGE_NEXT_KEY(k, key_length, nod_flag))
         {
-          if (rtree_insert_level(info, keynr, k, key_length, 
-                                 ReinsertList.pages[i].level) == -1)
+          int res;
+          if ((res= rtree_insert_level(info, keynr, k, key_length,
+                                       ReinsertList.pages[i].level)) == -1)
           {
             my_afree((byte*)page_buf);
             goto err1;
           }
+          if (res)
+          {
+            ulong j;
+            DBUG_PRINT("rtree", ("root has been split, adjust levels"));
+            for (j= i; j < ReinsertList.n_pages; j++)
+            {
+              ReinsertList.pages[j].level++;
+              DBUG_PRINT("rtree", ("keys from page: %lu  now level: %d",
+                                   (ulong) ReinsertList.pages[i].offs,
+                                   ReinsertList.pages[i].level));
+            }
+          }
         }
         my_afree((byte*)page_buf);
         if (_mi_dispose(info, keyinfo, ReinsertList.pages[i].offs,
@@ -959,20 +1009,20 @@ int rtree_delete(MI_INFO *info, uint keynr, uchar *key, uint key_length)
         info->s->state.key_root[keynr] = new_root;
       }
       info->update= HA_STATE_DELETED;
-      return 0;
+      DBUG_RETURN(0);
 
 err1:
-      return -1;
+      DBUG_RETURN(-1); /* purecov: inspected */
     }
     case 1: /* not found */
     {
       my_errno = HA_ERR_KEY_NOT_FOUND;
-      return -1;
+      DBUG_RETURN(-1); /* purecov: inspected */
     }
     default:
     case -1: /* error */
     {
-      return -1;
+      DBUG_RETURN(-1); /* purecov: inspected */
     }
   }
 }
diff --git a/storage/myisam/rt_key.c b/storage/myisam/rt_key.c
index cb6a82c51f62c566de5e3c3bb77f0e26a495d86e..fe59af3c605b52b08336174baee08c93dc0d380a 100644
--- a/storage/myisam/rt_key.c
+++ b/storage/myisam/rt_key.c
@@ -34,6 +34,7 @@ int rtree_add_key(MI_INFO *info, MI_KEYDEF *keyinfo, uchar *key,
 {
   uint page_size = mi_getint(page_buf);
   uint nod_flag = mi_test_if_nod(page_buf);
+  DBUG_ENTER("rtree_add_key");
 
   if (page_size + key_length + info->s->base.rec_reflength <=
       keyinfo->block_length)
@@ -42,22 +43,26 @@ int rtree_add_key(MI_INFO *info, MI_KEYDEF *keyinfo, uchar *key,
     if (nod_flag)
     {
       /* save key */
+      DBUG_ASSERT(_mi_kpos(nod_flag, key) < info->state->key_file_length);
       memcpy(rt_PAGE_END(page_buf), key - nod_flag, key_length + nod_flag); 
       page_size += key_length + nod_flag;
     }
     else
     {
       /* save key */
+      DBUG_ASSERT(_mi_dpos(info, nod_flag, key + key_length +
+                           info->s->base.rec_reflength) <
+                  info->state->data_file_length + info->s->base.pack_reclength);
       memcpy(rt_PAGE_END(page_buf), key, key_length + 
                                          info->s->base.rec_reflength);
       page_size += key_length + info->s->base.rec_reflength;
     }
     mi_putint(page_buf, page_size, nod_flag);
-    return 0;
+    DBUG_RETURN(0);
   }
 
-  return (rtree_split_page(info, keyinfo, page_buf, key, key_length,
-			   new_page) ? -1 : 1);
+  DBUG_RETURN((rtree_split_page(info, keyinfo, page_buf, key, key_length,
+                                new_page) ? -1 : 1));
 }
 
 /*
@@ -89,11 +94,13 @@ int rtree_delete_key(MI_INFO *info, uchar *page_buf, uchar *key,
 int rtree_set_key_mbr(MI_INFO *info, MI_KEYDEF *keyinfo, uchar *key, 
 		      uint key_length, my_off_t child_page)
 {
+  DBUG_ENTER("rtree_set_key_mbr");
+
   if (!_mi_fetch_keypage(info, keyinfo, child_page,
                          DFLT_INIT_HITS, info->buff, 0))
-    return -1;
+    DBUG_RETURN(-1); /* purecov: inspected */
 
-  return rtree_page_mbr(info, keyinfo->seg, info->buff, key, key_length);
+  DBUG_RETURN(rtree_page_mbr(info, keyinfo->seg, info->buff, key, key_length));
 }
 
 #endif /*HAVE_RTREE_KEYS*/
diff --git a/storage/myisam/rt_split.c b/storage/myisam/rt_split.c
index 9f25ee608d8903f3fa7b7828ae135d49aff3cc5a..0f6dc87295843284c6f34ba85693f63e4dc47405 100644
--- a/storage/myisam/rt_split.c
+++ b/storage/myisam/rt_split.c
@@ -264,13 +264,15 @@ int rtree_split_page(MI_INFO *info, MI_KEYDEF *keyinfo, uchar *page, uchar *key,
   uint full_length= key_length + (nod_flag ? nod_flag : 
                                   info->s->base.rec_reflength);
   int max_keys= (mi_getint(page)-2) / (full_length);
+  DBUG_ENTER("rtree_split_page");
+  DBUG_PRINT("rtree", ("splitting block"));
 
   n_dim = keyinfo->keysegs / 2;
   
   if (!(coord_buf= (double*) my_alloca(n_dim * 2 * sizeof(double) *
                                        (max_keys + 1 + 4) +
                                        sizeof(SplitStruct) * (max_keys + 1))))
-    return -1;
+    DBUG_RETURN(-1); /* purecov: inspected */
 
   task= (SplitStruct *)(coord_buf + n_dim * 2 * (max_keys + 1 + 4));
 
@@ -341,12 +343,13 @@ int rtree_split_page(MI_INFO *info, MI_KEYDEF *keyinfo, uchar *page, uchar *key,
   else
     err_code= _mi_write_keypage(info, keyinfo, *new_page_offs,
                                 DFLT_INIT_HITS, new_page);
+  DBUG_PRINT("rtree", ("split new block: %lu", (ulong) *new_page_offs));
 
   my_afree((byte*)new_page);
 
 split_err:
   my_afree((byte*) coord_buf);
-  return err_code;
+  DBUG_RETURN(err_code);
 }
 
 #endif /*HAVE_RTREE_KEYS*/
diff --git a/storage/myisammrg/ha_myisammrg.h b/storage/myisammrg/ha_myisammrg.h
index ffa55673ad1933acf3551cbeb6b6b45349fa3ca3..04379f6cf70e6ad9a205e71a7f31f85f09b1023f 100644
--- a/storage/myisammrg/ha_myisammrg.h
+++ b/storage/myisammrg/ha_myisammrg.h
@@ -36,8 +36,8 @@ class ha_myisammrg: public handler
   {
     return (HA_REC_NOT_IN_SEQ | HA_AUTO_PART_KEY | HA_NO_TRANSACTIONS |
 	    HA_NULL_IN_KEY | HA_CAN_INDEX_BLOBS | HA_FILE_BASED |
-            HA_CAN_INSERT_DELAYED | HA_ANY_INDEX_MAY_BE_UNIQUE |
-            HA_CAN_BIT_FIELD | HA_NO_COPY_ON_ALTER);
+            HA_ANY_INDEX_MAY_BE_UNIQUE | HA_CAN_BIT_FIELD |
+            HA_NO_COPY_ON_ALTER);
   }
   ulong index_flags(uint inx, uint part, bool all_parts) const
   {