summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <holyfoot@mysql.com>2006-05-03 16:42:39 +0500
committerunknown <holyfoot@mysql.com>2006-05-03 16:42:39 +0500
commit83c8e2c910a9f07c473aaa2d254f0571d574aa89 (patch)
treec59d637e1d3d7b81ff0e680ba83046ad4f19773e
parent0a9c02f106239afcdb6da40d9ddfb3cec1d42049 (diff)
parentf01b0ac2212a8e8c4192842ddba123198353c591 (diff)
downloadmariadb-git-83c8e2c910a9f07c473aaa2d254f0571d574aa89.tar.gz
merging
sql/handler.h: Auto merged sql/sql_table.cc: Auto merged
-rw-r--r--mysql-test/r/innodb.result2
-rw-r--r--mysql-test/t/innodb.test12
-rw-r--r--sql/ha_myisam.cc2
-rw-r--r--sql/handler.h1
-rw-r--r--sql/share/errmsg.txt2
-rw-r--r--sql/sql_table.cc6
6 files changed, 24 insertions, 1 deletions
diff --git a/mysql-test/r/innodb.result b/mysql-test/r/innodb.result
index d32cd405ce8..77046cc1fd1 100644
--- a/mysql-test/r/innodb.result
+++ b/mysql-test/r/innodb.result
@@ -3278,3 +3278,5 @@ SELECT p0.a FROM t2 p0 WHERE BINARY p0.b = 'customer_over';
a
1
drop table t2, t1;
+create table t1 (g geometry not null, spatial gk(g)) engine=innodb;
+ERROR HY000: The used table type doesn't support SPATIAL indexes
diff --git a/mysql-test/t/innodb.test b/mysql-test/t/innodb.test
index 3ba5ca5b4a2..703e3b311b9 100644
--- a/mysql-test/t/innodb.test
+++ b/mysql-test/t/innodb.test
@@ -2190,3 +2190,15 @@ SELECT DISTINCT p0.a FROM t2 p0 WHERE BINARY p0.b = 'customer_over';
SELECT p0.a FROM t2 p0 WHERE BINARY p0.b = 'customer_over';
drop table t2, t1;
+create table t2(a date, key(a)) engine=innodb;
+insert into t1 values('2005-10-01');
+insert into t2 values('2005-10-01');
+select * from t1, t2
+ where t2.a between t1.a - interval 2 day and t1.a + interval 2 day;
+drop table t1, t2;
+
+#
+# Bug #15680 (SPATIAL key in innodb)
+#
+--error ER_TABLE_CANT_HANDLE_SPKEYS
+create table t1 (g geometry not null, spatial gk(g)) engine=innodb;
diff --git a/sql/ha_myisam.cc b/sql/ha_myisam.cc
index ff6431fa0f3..128cc191434 100644
--- a/sql/ha_myisam.cc
+++ b/sql/ha_myisam.cc
@@ -165,7 +165,7 @@ ha_myisam::ha_myisam(TABLE *table_arg)
int_table_flags(HA_NULL_IN_KEY | HA_CAN_FULLTEXT | HA_CAN_SQL_HANDLER |
HA_DUPP_POS | HA_CAN_INDEX_BLOBS | HA_AUTO_PART_KEY |
HA_FILE_BASED | HA_CAN_GEOMETRY | HA_READ_RND_SAME |
- HA_CAN_INSERT_DELAYED | HA_CAN_BIT_FIELD),
+ HA_CAN_INSERT_DELAYED | HA_CAN_BIT_FIELD | HA_CAN_RTREEKEYS),
can_enable_indexes(1)
{}
diff --git a/sql/handler.h b/sql/handler.h
index e531a3f1077..eee15fc3576 100644
--- a/sql/handler.h
+++ b/sql/handler.h
@@ -80,6 +80,7 @@
*/
#define HA_CAN_INSERT_DELAYED (1 << 14)
#define HA_PRIMARY_KEY_IN_READ_INDEX (1 << 15)
+#define HA_CAN_RTREEKEYS (1 << 17)
#define HA_NOT_DELETE_WITH_CACHE (1 << 18)
#define HA_NO_PREFIX_CHAR_KEYS (1 << 20)
#define HA_CAN_FULLTEXT (1 << 21)
diff --git a/sql/share/errmsg.txt b/sql/share/errmsg.txt
index 7665a7425cd..2892c5c8b01 100644
--- a/sql/share/errmsg.txt
+++ b/sql/share/errmsg.txt
@@ -5617,3 +5617,5 @@ ER_VIEW_RECURSIVE
eng "`%-.64s`.`%-.64s` contains view recursion"
ER_NON_GROUPING_FIELD_USED 42000
eng "non-grouping field '%-.64s' is used in %-.64s clause"
+ER_TABLE_CANT_HANDLE_SPKEYS
+ eng "The used table type doesn't support SPATIAL indexes"
diff --git a/sql/sql_table.cc b/sql/sql_table.cc
index d93e79cdfde..f6de9e34785 100644
--- a/sql/sql_table.cc
+++ b/sql/sql_table.cc
@@ -1159,6 +1159,12 @@ static int mysql_prepare_table(THD *thd, HA_CREATE_INFO *create_info,
/* TODO: Add proper checks if handler supports key_type and algorithm */
if (key_info->flags & HA_SPATIAL)
{
+ if (!(file->table_flags() & HA_CAN_RTREEKEYS))
+ {
+ my_message(ER_TABLE_CANT_HANDLE_SPKEYS, ER(ER_TABLE_CANT_HANDLE_SPKEYS),
+ MYF(0));
+ DBUG_RETURN(-1);
+ }
if (key_info->key_parts != 1)
{
my_error(ER_WRONG_ARGUMENTS, MYF(0), "SPATIAL INDEX");