summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergei Golubchik <serg@mariadb.org>2016-11-29 22:10:13 +0100
committerSergei Golubchik <serg@mariadb.org>2016-12-12 20:44:46 +0100
commita9a362d3fd52010f601eae99af7e168b370da9d2 (patch)
treeb88450f78aaaa4b13bebabea8e12db4f5b2e35c7
parent9d7c3cbe18baaa79462870025fc3e7ebf80861f2 (diff)
downloadmariadb-git-a9a362d3fd52010f601eae99af7e168b370da9d2.tar.gz
Aria: test for ER_KEY_BASED_ON_GENERATED_VIRTUAL_COLUMN
Aria supports virtual columns, but does not support indexes on virtual columns. Let's issue an appropriate error in this case.
-rw-r--r--mysql-test/suite/vcol/r/vcol_handler_aria.result (renamed from mysql-test/suite/vcol/r/vcol_handler_maria.result)0
-rw-r--r--mysql-test/suite/vcol/r/vcol_keys_aria.result2
-rw-r--r--mysql-test/suite/vcol/t/vcol_handler_aria.test (renamed from mysql-test/suite/vcol/t/vcol_handler_maria.test)0
-rw-r--r--mysql-test/suite/vcol/t/vcol_keys_aria.test3
-rw-r--r--storage/maria/ha_maria.cc8
5 files changed, 13 insertions, 0 deletions
diff --git a/mysql-test/suite/vcol/r/vcol_handler_maria.result b/mysql-test/suite/vcol/r/vcol_handler_aria.result
index df36d0fbbf3..df36d0fbbf3 100644
--- a/mysql-test/suite/vcol/r/vcol_handler_maria.result
+++ b/mysql-test/suite/vcol/r/vcol_handler_aria.result
diff --git a/mysql-test/suite/vcol/r/vcol_keys_aria.result b/mysql-test/suite/vcol/r/vcol_keys_aria.result
new file mode 100644
index 00000000000..ef8cb3c7b30
--- /dev/null
+++ b/mysql-test/suite/vcol/r/vcol_keys_aria.result
@@ -0,0 +1,2 @@
+create table t1 (a int, b int as (a+1), c int, index(b)) engine=aria;
+ERROR HY000: Key/Index cannot be defined on a virtual generated column
diff --git a/mysql-test/suite/vcol/t/vcol_handler_maria.test b/mysql-test/suite/vcol/t/vcol_handler_aria.test
index 9b69e600767..9b69e600767 100644
--- a/mysql-test/suite/vcol/t/vcol_handler_maria.test
+++ b/mysql-test/suite/vcol/t/vcol_handler_aria.test
diff --git a/mysql-test/suite/vcol/t/vcol_keys_aria.test b/mysql-test/suite/vcol/t/vcol_keys_aria.test
new file mode 100644
index 00000000000..b7ac0d26550
--- /dev/null
+++ b/mysql-test/suite/vcol/t/vcol_keys_aria.test
@@ -0,0 +1,3 @@
+--source include/have_maria.inc
+--error ER_KEY_BASED_ON_GENERATED_VIRTUAL_COLUMN
+create table t1 (a int, b int as (a+1), c int, index(b)) engine=aria;
diff --git a/storage/maria/ha_maria.cc b/storage/maria/ha_maria.cc
index fc8a39119e3..59323a27ae2 100644
--- a/storage/maria/ha_maria.cc
+++ b/storage/maria/ha_maria.cc
@@ -522,6 +522,14 @@ static int table2maria(TABLE *table_arg, data_file_type row_type,
for (j= 0; j < pos->user_defined_key_parts; j++)
{
Field *field= pos->key_part[j].field;
+
+ if (!table_arg->field[field->field_index]->stored_in_db())
+ {
+ my_free(*recinfo_out);
+ my_error(ER_KEY_BASED_ON_GENERATED_VIRTUAL_COLUMN, MYF(0));
+ DBUG_RETURN(HA_ERR_UNSUPPORTED);
+ }
+
type= field->key_type();
keydef[i].seg[j].flag= pos->key_part[j].key_part_flag;