summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xBitKeeper/triggers/post-commit6
-rw-r--r--mysql-test/r/maria-gis-rtree.result15
-rw-r--r--storage/maria/ma_rt_index.c17
3 files changed, 27 insertions, 11 deletions
diff --git a/BitKeeper/triggers/post-commit b/BitKeeper/triggers/post-commit
index abc9de5cb4e..e3cd589f50b 100755
--- a/BitKeeper/triggers/post-commit
+++ b/BitKeeper/triggers/post-commit
@@ -8,7 +8,7 @@ else
COMMITTER=$USER
fi
FROM=$COMMITTER@mysql.com
-COMMITS=commits@lists.mysql.com
+COMMITS=maria@lists.mysql.com
DOCS=docs-commit@mysql.com
LIMIT=10000
VERSION="maria"
@@ -73,11 +73,11 @@ else
fi
#++
-# commits@ or dev-private@ mail
+# maria@ or dev-private@ mail
#--
LIST="commits"
-TO="commits@lists.mysql.com"
+TO="maria@lists.mysql.com"
if [ -f .tree-is-private ]
then
LIST="dev-private"
diff --git a/mysql-test/r/maria-gis-rtree.result b/mysql-test/r/maria-gis-rtree.result
index 749a5cc4a71..0c929fe1313 100644
--- a/mysql-test/r/maria-gis-rtree.result
+++ b/mysql-test/r/maria-gis-rtree.result
@@ -172,6 +172,16 @@ id select_type table type possible_keys key key_len ref rows Extra
SELECT fid, AsText(g) FROM t1 WHERE Within(g, GeomFromText('Polygon((140 140,160 140,160 160,140 160,140 140))'));
fid AsText(g)
1 LINESTRING(150 150,150 150)
+2 LINESTRING(149 149,151 151)
+3 LINESTRING(148 148,152 152)
+4 LINESTRING(147 147,153 153)
+5 LINESTRING(146 146,154 154)
+6 LINESTRING(145 145,155 155)
+7 LINESTRING(144 144,156 156)
+8 LINESTRING(143 143,157 157)
+9 LINESTRING(142 142,158 158)
+10 LINESTRING(141 141,159 159)
+11 LINESTRING(140 140,160 160)
DROP TABLE t1;
CREATE TABLE t2 (
fid INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
@@ -297,6 +307,9 @@ SELECT fid, AsText(g) FROM t2 WHERE Within(g,
GeomFromText('Polygon((40 40,60 40,60 60,40 60,40 40))'));
fid AsText(g)
45 LINESTRING(51 51,60 60)
+46 LINESTRING(51 41,60 50)
+55 LINESTRING(41 51,50 60)
+56 LINESTRING(41 41,50 50)
DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point(10 * 10 - 9, 10 * 10 - 9), Point(10 * 10, 10 * 10)))));
SELECT count(*) FROM t2;
count(*)
@@ -1469,7 +1482,7 @@ INSERT INTO t1 VALUES (2, GEOMFROMTEXT('LINESTRING(1102218.456 1,2000000 2)'));
SELECT COUNT(*) FROM t1 WHERE
MBRINTERSECTS(b, GEOMFROMTEXT('LINESTRING(1 1,1102219 2)') );
COUNT(*)
-1
+2
SELECT COUNT(*) FROM t1 IGNORE INDEX (b) WHERE
MBRINTERSECTS(b, GEOMFROMTEXT('LINESTRING(1 1,1102219 2)') );
COUNT(*)
diff --git a/storage/maria/ma_rt_index.c b/storage/maria/ma_rt_index.c
index 1608900d8f3..4f80d6a5a76 100644
--- a/storage/maria/ma_rt_index.c
+++ b/storage/maria/ma_rt_index.c
@@ -128,9 +128,10 @@ static int maria_rtree_find_req(MARIA_HA *info, MARIA_KEYDEF *keyinfo,
if (after_key < last)
{
- info->int_keypos= info->buff;
- info->int_maxpos= info->buff + (last - after_key);
- memcpy(info->buff, after_key, last - after_key);
+ uchar *keyread_buff= info->keyread_buff;
+ info->int_keypos= keyread_buff;
+ info->int_maxpos= keyread_buff + (last - after_key);
+ memcpy(keyread_buff, after_key, last - after_key);
info->keyread_buff_used= 0;
}
else
@@ -346,9 +347,10 @@ static int maria_rtree_get_req(MARIA_HA *info, MARIA_KEYDEF *keyinfo,
if (after_key < last)
{
+ uchar *keyread_buff= info->keyread_buff;
info->int_keypos= (uchar*) saved_key;
- memcpy(info->buff, page_buf, keyinfo->block_length);
- info->int_maxpos= rt_PAGE_END(share, info->buff);
+ memcpy(keyread_buff, page_buf, keyinfo->block_length);
+ info->int_maxpos= rt_PAGE_END(share, keyread_buff);
info->keyread_buff_used= 0;
}
else
@@ -415,12 +417,13 @@ int maria_rtree_get_next(MARIA_HA *info, uint keynr, uint key_length)
{
my_off_t root;
MARIA_KEYDEF *keyinfo= info->s->keyinfo + keynr;
+ uchar *keyread_buff= info->keyread_buff;
if (!info->keyread_buff_used)
{
uint k_len= keyinfo->keylength - info->s->base.rec_reflength;
/* rt_PAGE_NEXT_KEY(info->int_keypos) */
- uchar *key= info->buff + *(int*)info->int_keypos + k_len +
+ uchar *key= keyread_buff + *(int*)info->int_keypos + k_len +
info->s->base.rec_reflength;
/* rt_PAGE_NEXT_KEY(key) */
uchar *after_key= key + k_len + info->s->base.rec_reflength;
@@ -429,7 +432,7 @@ int maria_rtree_get_next(MARIA_HA *info, uint keynr, uint key_length)
info->lastkey_length= k_len + info->s->base.rec_reflength;
memcpy(info->lastkey, key, k_len + info->s->base.rec_reflength);
- *(int*)info->int_keypos= key - info->buff;
+ *(int*)info->int_keypos= key - keyread_buff;
if (after_key >= info->int_maxpos)
{
info->keyread_buff_used= 1;