diff --git a/myisam/mi_create.c b/myisam/mi_create.c
index da9e0887b00cc312226b3e17955abaf5cda7c15c..5e363a4e6709687f69949dc4a101aea91f6d2d05 100644
--- a/myisam/mi_create.c
+++ b/myisam/mi_create.c
@@ -158,6 +158,10 @@ int mi_create(const char *name,uint keys,MI_KEYDEF *keydefs,
       rec--;
       if (rec->type == (int) FIELD_SKIP_ZERO && rec->length == 1)
       {
+        /*
+          NOTE1: here we change a field type FIELD_SKIP_ZERO ->
+          FIELD_NORMAL
+        */
 	rec->type=(int) FIELD_NORMAL;
 	packed--;
 	min_pack_length++;
diff --git a/myisam/rt_index.c b/myisam/rt_index.c
index 1806476dc39fe3e125a91ec6c758771cbff3cc77..238432006a4a2a409477bb9c58f6d3a5f45a7220 100644
--- a/myisam/rt_index.c
+++ b/myisam/rt_index.c
@@ -186,6 +186,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;
@@ -540,16 +541,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 */
@@ -601,11 +605,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 */
 }
 
 
@@ -625,20 +629,21 @@ 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)
   {
     int res;
 
     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, 
@@ -655,11 +660,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);
@@ -685,12 +691,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 */
@@ -698,7 +706,7 @@ err1:
       break;
     }
   }
-  return res;
+  DBUG_RETURN(res);
 }
 
 
@@ -712,8 +720,10 @@ err1:
 
 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);
 }
 
 
@@ -728,6 +738,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;
@@ -739,10 +751,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 */
 }
 
 
@@ -766,15 +778,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);
@@ -795,6 +810,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;
@@ -804,10 +820,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))
@@ -867,11 +896,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 */
 }
 
 
@@ -889,12 +918,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;
@@ -903,12 +935,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;
@@ -928,16 +960,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,
@@ -964,20 +1014,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/myisam/rt_key.c b/myisam/rt_key.c
index e2a402fbefd6806eeb67bb5062b093d4d03d47e8..b969ac30569cb446ef50a5c4ab5274e16dfac7d6 100644
--- a/myisam/rt_key.c
+++ b/myisam/rt_key.c
@@ -35,6 +35,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)
@@ -43,22 +44,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));
 }
 
 /*
@@ -90,11 +95,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/myisam/rt_split.c b/myisam/rt_split.c
index 87da22a93c764523c2bff3622cf4ac054537d92e..d400274064bf07bd83c334f44ff332e82ecbe115 100644
--- a/myisam/rt_split.c
+++ b/myisam/rt_split.c
@@ -268,13 +268,15 @@ int rtree_split_page(MI_INFO *info, MI_KEYDEF *keyinfo, uchar *page, uchar *key,
                                    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));
 
@@ -346,12 +348,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/mysql-test/r/gis-rtree.result b/mysql-test/r/gis-rtree.result
index bdb3de4de75f651e87ca1987da7ab4d3be24baf9..762dda4e501d126e98cc286e13ddee1c519a906a 100644
--- a/mysql-test/r/gis-rtree.result
+++ b/mysql-test/r/gis-rtree.result
@@ -868,3 +868,555 @@ 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;
diff --git a/mysql-test/r/merge.result b/mysql-test/r/merge.result
index eb333cdadb7cdf38649edacd3da84f045ccd2d4f..00d8aa3d586eb86ef5ec1b668ea5641e698e409f 100644
--- a/mysql-test/r/merge.result
+++ b/mysql-test/r/merge.result
@@ -801,3 +801,21 @@ 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(c1 VARCHAR(1));
+CREATE TABLE m1 LIKE t1;
+ALTER TABLE m1 ENGINE=MERGE UNION=(t1);
+SELECT * FROM m1;
+c1
+DROP TABLE t1, m1;
+CREATE TABLE t1(c1 VARCHAR(4), c2 TINYINT, c3 TINYINT, c4 TINYINT,
+c5 TINYINT, c6 TINYINT, c7 TINYINT, c8 TINYINT, c9 TINYINT);
+CREATE TABLE m1 LIKE t1;
+ALTER TABLE m1 ENGINE=MERGE UNION=(t1);
+SELECT * FROM m1;
+c1	c2	c3	c4	c5	c6	c7	c8	c9
+DROP TABLE t1, m1;
diff --git a/mysql-test/t/gis-rtree.test b/mysql-test/t/gis-rtree.test
index cdd8d1f3f0f23e4e014378d3d7b06e32ac7ffd0b..f28a718cc11b9fd4164cb5bbd8039e77277e95b4 100644
--- a/mysql-test/t/gis-rtree.test
+++ b/mysql-test/t/gis-rtree.test
@@ -242,4 +242,560 @@ 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/merge.test b/mysql-test/t/merge.test
index 700a807e62ca47692ca8c5a781d9f276d175e1e0..032e80ecc932abd20b65fc4a64444b2cd295fead 100644
--- a/mysql-test/t/merge.test
+++ b/mysql-test/t/merge.test
@@ -428,4 +428,30 @@ 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;
+
+#
+# BUG#26881 - Large MERGE tables report incorrect specification when no
+#             differences in tables
+#
+CREATE TABLE t1(c1 VARCHAR(1));
+CREATE TABLE m1 LIKE t1;
+ALTER TABLE m1 ENGINE=MERGE UNION=(t1);
+SELECT * FROM m1;
+DROP TABLE t1, m1;
+
+CREATE TABLE t1(c1 VARCHAR(4), c2 TINYINT, c3 TINYINT, c4 TINYINT,
+                c5 TINYINT, c6 TINYINT, c7 TINYINT, c8 TINYINT, c9 TINYINT);
+CREATE TABLE m1 LIKE t1;
+ALTER TABLE m1 ENGINE=MERGE UNION=(t1);
+SELECT * FROM m1;
+DROP TABLE t1, m1;
+
 # End of 4.1 tests
diff --git a/sql/ha_myisam.cc b/sql/ha_myisam.cc
index 2cec03a51db0620943a0d8b81410bbef62f952e5..c6802ffe53cb0e6265177d5dedb113c99b769cd9 100644
--- a/sql/ha_myisam.cc
+++ b/sql/ha_myisam.cc
@@ -304,6 +304,12 @@ int table2myisam(TABLE *table_arg, MI_KEYDEF **keydef_out,
   RETURN VALUE
     0 - Equal definitions.
     1 - Different definitions.
+
+  TODO
+    - compare FULLTEXT keys;
+    - compare SPATIAL keys;
+    - compare FIELD_SKIP_ZERO which is converted to FIELD_NORMAL correctly
+      (should be corretly detected in table2myisam).
 */
 
 int check_definition(MI_KEYDEF *t1_keyinfo, MI_COLUMNDEF *t1_recinfo,
@@ -329,6 +335,28 @@ int check_definition(MI_KEYDEF *t1_keyinfo, MI_COLUMNDEF *t1_recinfo,
   {
     HA_KEYSEG *t1_keysegs= t1_keyinfo[i].seg;
     HA_KEYSEG *t2_keysegs= t2_keyinfo[i].seg;
+    if (t1_keyinfo[i].flag & HA_FULLTEXT && t2_keyinfo[i].flag & HA_FULLTEXT)
+      continue;
+    else if (t1_keyinfo[i].flag & HA_FULLTEXT ||
+             t2_keyinfo[i].flag & HA_FULLTEXT)
+    {
+       DBUG_PRINT("error", ("Key %d has different definition", i));
+       DBUG_PRINT("error", ("t1_fulltext= %d, t2_fulltext=%d",
+                            test(t1_keyinfo[i].flag & HA_FULLTEXT),
+                            test(t2_keyinfo[i].flag & HA_FULLTEXT)));
+       DBUG_RETURN(1);
+    }
+    if (t1_keyinfo[i].flag & HA_SPATIAL && t2_keyinfo[i].flag & HA_SPATIAL)
+      continue;
+    else if (t1_keyinfo[i].flag & HA_SPATIAL ||
+             t2_keyinfo[i].flag & HA_SPATIAL)
+    {
+       DBUG_PRINT("error", ("Key %d has different definition", i));
+       DBUG_PRINT("error", ("t1_spatial= %d, t2_spatial=%d",
+                            test(t1_keyinfo[i].flag & HA_SPATIAL),
+                            test(t2_keyinfo[i].flag & HA_SPATIAL)));
+       DBUG_RETURN(1);
+    }
     if (t1_keyinfo[i].keysegs != t2_keyinfo[i].keysegs ||
         t1_keyinfo[i].key_alg != t2_keyinfo[i].key_alg)
     {
@@ -365,7 +393,14 @@ int check_definition(MI_KEYDEF *t1_keyinfo, MI_COLUMNDEF *t1_recinfo,
   {
     MI_COLUMNDEF *t1_rec= &t1_recinfo[i];
     MI_COLUMNDEF *t2_rec= &t2_recinfo[i];
-    if (t1_rec->type != t2_rec->type ||
+    /*
+      FIELD_SKIP_ZERO can be changed to FIELD_NORMAL in mi_create,
+      see NOTE1 in mi_create.c
+    */
+    if ((t1_rec->type != t2_rec->type &&
+         !(t1_rec->type == (int) FIELD_SKIP_ZERO &&
+           t1_rec->length == 1 &&
+           t2_rec->type == (int) FIELD_NORMAL)) ||
         t1_rec->length != t2_rec->length ||
         t1_rec->null_bit != t2_rec->null_bit)
     {
diff --git a/sql/ha_myisammrg.h b/sql/ha_myisammrg.h
index 84eaae0459003da04619548c523283e7e473317d..84af55b262ed1ae83b297f16d8c32b0601d0c531 100644
--- a/sql/ha_myisammrg.h
+++ b/sql/ha_myisammrg.h
@@ -37,7 +37,7 @@ class ha_myisammrg: public handler
   {
     return (HA_REC_NOT_IN_SEQ | HA_AUTO_PART_KEY | HA_READ_RND_SAME |
 	    HA_NULL_IN_KEY | HA_CAN_INDEX_BLOBS | HA_FILE_BASED |
-            HA_CAN_INSERT_DELAYED | HA_ANY_INDEX_MAY_BE_UNIQUE);
+            HA_ANY_INDEX_MAY_BE_UNIQUE);
   }
   ulong index_flags(uint inx, uint part, bool all_parts) const
   {
diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc
index d537da7080b372ef237628b1919c216cbf2be8cb..66b68cfc2f15070a65db1983538938e0663761a6 100644
--- a/sql/sql_parse.cc
+++ b/sql/sql_parse.cc
@@ -4653,8 +4653,14 @@ bool add_field_to_list(THD *thd, char *field_name, enum_field_types type,
 	new_field->length++;
     }
     break;
-  case FIELD_TYPE_STRING:
   case FIELD_TYPE_VAR_STRING:
+    if (new_field->length < 4)
+    {
+      new_field->sql_type= FIELD_TYPE_STRING;
+      break;
+    }
+    /* fall through */
+  case FIELD_TYPE_STRING:
     if (new_field->length <= MAX_FIELD_CHARLENGTH || default_value)
       break;
     /* Convert long CHAR() and VARCHAR columns to TEXT or BLOB */