Commit 31a78529 authored by Sergei Golubchik's avatar Sergei Golubchik

virtual columns:

 * move a capability from a virtual handler method to table_flags()
 * rephrase error messages to avoid hard-coded English parts
 * admit in test cases that they need xtradb, not innodb

mysql-test/suite/vcol/t/rpl_vcol.test:
  this test needs xtradb, it will fail with innodb
mysql-test/suite/vcol/t/vcol_blocked_sql_funcs_innodb.test:
  this test needs xtradb, it will fail with innodb
mysql-test/suite/vcol/t/vcol_column_def_options_innodb.test:
  this test needs xtradb, it will fail with innodb
mysql-test/suite/vcol/t/vcol_handler_innodb.test:
  this test needs xtradb, it will fail with innodb
mysql-test/suite/vcol/t/vcol_ins_upd_innodb.test:
  this test needs xtradb, it will fail with innodb
mysql-test/suite/vcol/t/vcol_keys_innodb.test:
  this test needs xtradb, it will fail with innodb
mysql-test/suite/vcol/t/vcol_non_stored_columns_innodb.test:
  this test needs xtradb, it will fail with innodb
mysql-test/suite/vcol/t/vcol_partition_innodb.test:
  this test needs xtradb, it will fail with innodb
mysql-test/suite/vcol/t/vcol_select_innodb.test:
  this test needs xtradb, it will fail with innodb
mysql-test/suite/vcol/t/vcol_supported_sql_funcs_innodb.test:
  this test needs xtradb, it will fail with innodb
mysql-test/suite/vcol/t/vcol_trigger_sp_innodb.test:
  this test needs xtradb, it will fail with innodb
mysql-test/suite/vcol/t/vcol_view_innodb.test:
  this test needs xtradb, it will fail with innodb
sql/ha_partition.h:
  check_if_supported_virtual_columns() -> HA_CAN_VIRTUAL_COLUMNS
sql/handler.h:
  check_if_supported_virtual_columns() -> HA_CAN_VIRTUAL_COLUMNS
sql/share/errmsg.txt:
  no hard-coded english parts in the error messages (ER_UNSUPPORTED_ACTION_ON_VIRTUAL_COLUMN)
sql/sql_table.cc:
  no hard-coded english parts in the error messages
sql/table.cc:
  * check_if_supported_virtual_columns() -> HA_CAN_VIRTUAL_COLUMNS
  * no "csv workaround" is needed
  * no hard-coded english parts in the error messages
storage/maria/ha_maria.cc:
  check_if_supported_virtual_columns() -> HA_CAN_VIRTUAL_COLUMNS
storage/maria/ha_maria.h:
  check_if_supported_virtual_columns() -> HA_CAN_VIRTUAL_COLUMNS
storage/myisam/ha_myisam.cc:
  check_if_supported_virtual_columns() -> HA_CAN_VIRTUAL_COLUMNS
storage/myisam/ha_myisam.h:
  check_if_supported_virtual_columns() -> HA_CAN_VIRTUAL_COLUMNS
storage/xtradb/handler/ha_innodb.cc:
  check_if_supported_virtual_columns() -> HA_CAN_VIRTUAL_COLUMNS
storage/xtradb/handler/ha_innodb.h:
  check_if_supported_virtual_columns() -> HA_CAN_VIRTUAL_COLUMNS
parent fda18d8f
disable_query_log; if (!`SELECT count(*) FROM information_schema.plugins WHERE
--require r/true.require plugin_name = 'innodb' AND plugin_status = 'active' AND
SELECT (plugin_description LIKE '%xtradb%') AS `TRUE` FROM information_schema.plugins WHERE LOWER(plugin_name) = 'innodb' AND LOWER(plugin_status) = 'active'; plugin_description LIKE '%xtradb%'`){
enable_query_log; skip Need XtraDB engine;
}
--loose-innodb
--plugin-load=$HA_XTRADB_SO
...@@ -248,13 +248,13 @@ set global slow_query_log='OFF'; ...@@ -248,13 +248,13 @@ set global slow_query_log='OFF';
set @save_storage_engine= @@session.storage_engine; set @save_storage_engine= @@session.storage_engine;
set storage_engine= MEMORY; set storage_engine= MEMORY;
alter table mysql.slow_log engine=ndb; alter table mysql.slow_log engine=ndb;
ERROR HY000: This storage engine cannot be used for log tables" ERROR HY000: This storage engine cannot be used for log tables
alter table mysql.slow_log engine=innodb; alter table mysql.slow_log engine=innodb;
ERROR HY000: This storage engine cannot be used for log tables" ERROR HY000: This storage engine cannot be used for log tables
alter table mysql.slow_log engine=archive; alter table mysql.slow_log engine=archive;
ERROR HY000: This storage engine cannot be used for log tables" ERROR HY000: This storage engine cannot be used for log tables
alter table mysql.slow_log engine=blackhole; alter table mysql.slow_log engine=blackhole;
ERROR HY000: This storage engine cannot be used for log tables" ERROR HY000: This storage engine cannot be used for log tables
set storage_engine= @save_storage_engine; set storage_engine= @save_storage_engine;
drop table mysql.slow_log; drop table mysql.slow_log;
drop table mysql.general_log; drop table mysql.general_log;
......
...@@ -75,9 +75,9 @@ SET SQL_MODE='IGNORE_BAD_TABLE_OPTIONS'; ...@@ -75,9 +75,9 @@ SET SQL_MODE='IGNORE_BAD_TABLE_OPTIONS';
#illegal value fixed #illegal value fixed
CREATE TABLE t1 (a int) ENGINE=example ULL=10000000000000000000 one_or_two='ttt' YESNO=SSS; CREATE TABLE t1 (a int) ENGINE=example ULL=10000000000000000000 one_or_two='ttt' YESNO=SSS;
Warnings: Warnings:
Warning 1652 Incorrect value '10000000000000000000' for option 'ULL' Warning 1653 Incorrect value '10000000000000000000' for option 'ULL'
Warning 1652 Incorrect value 'ttt' for option 'one_or_two' Warning 1653 Incorrect value 'ttt' for option 'one_or_two'
Warning 1652 Incorrect value 'SSS' for option 'YESNO' Warning 1653 Incorrect value 'SSS' for option 'YESNO'
show create table t1; show create table t1;
Table Create Table Table Create Table
t1 CREATE TABLE `t1` ( t1 CREATE TABLE `t1` (
......
...@@ -3,9 +3,9 @@ SET @OLD_SQL_MODE=@@SQL_MODE; ...@@ -3,9 +3,9 @@ SET @OLD_SQL_MODE=@@SQL_MODE;
SET SQL_MODE='IGNORE_BAD_TABLE_OPTIONS'; SET SQL_MODE='IGNORE_BAD_TABLE_OPTIONS';
create table t1 (a int fkey=vvv, key akey (a) dff=vvv) tkey1='1v1'; create table t1 (a int fkey=vvv, key akey (a) dff=vvv) tkey1='1v1';
Warnings: Warnings:
Warning 1651 Unknown option 'fkey' Warning 1652 Unknown option 'fkey'
Warning 1651 Unknown option 'dff' Warning 1652 Unknown option 'dff'
Warning 1651 Unknown option 'tkey1' Warning 1652 Unknown option 'tkey1'
show create table t1; show create table t1;
Table Create Table Table Create Table
t1 CREATE TABLE `t1` ( t1 CREATE TABLE `t1` (
...@@ -16,10 +16,10 @@ drop table t1; ...@@ -16,10 +16,10 @@ drop table t1;
#reassiginig options in the same line #reassiginig options in the same line
create table t1 (a int fkey=vvv, key akey (a) dff=vvv) tkey1=1v1 TKEY1=DEFAULT tkey1=1v2 tkey2=2v1; create table t1 (a int fkey=vvv, key akey (a) dff=vvv) tkey1=1v1 TKEY1=DEFAULT tkey1=1v2 tkey2=2v1;
Warnings: Warnings:
Warning 1651 Unknown option 'fkey' Warning 1652 Unknown option 'fkey'
Warning 1651 Unknown option 'dff' Warning 1652 Unknown option 'dff'
Warning 1651 Unknown option 'tkey1' Warning 1652 Unknown option 'tkey1'
Warning 1651 Unknown option 'tkey2' Warning 1652 Unknown option 'tkey2'
show create table t1; show create table t1;
Table Create Table Table Create Table
t1 CREATE TABLE `t1` ( t1 CREATE TABLE `t1` (
...@@ -29,7 +29,7 @@ t1 CREATE TABLE `t1` ( ...@@ -29,7 +29,7 @@ t1 CREATE TABLE `t1` (
#add option #add option
alter table t1 tkey4=4v1; alter table t1 tkey4=4v1;
Warnings: Warnings:
Warning 1651 Unknown option 'tkey4' Warning 1652 Unknown option 'tkey4'
show create table t1; show create table t1;
Table Create Table Table Create Table
t1 CREATE TABLE `t1` ( t1 CREATE TABLE `t1` (
...@@ -39,8 +39,8 @@ t1 CREATE TABLE `t1` ( ...@@ -39,8 +39,8 @@ t1 CREATE TABLE `t1` (
#remove options #remove options
alter table t1 tkey3=DEFAULT tkey4=DEFAULT; alter table t1 tkey3=DEFAULT tkey4=DEFAULT;
Warnings: Warnings:
Warning 1651 Unknown option 'tkey3' Warning 1652 Unknown option 'tkey3'
Warning 1651 Unknown option 'tkey4' Warning 1652 Unknown option 'tkey4'
show create table t1; show create table t1;
Table Create Table Table Create Table
t1 CREATE TABLE `t1` ( t1 CREATE TABLE `t1` (
...@@ -50,11 +50,11 @@ t1 CREATE TABLE `t1` ( ...@@ -50,11 +50,11 @@ t1 CREATE TABLE `t1` (
drop table t1; drop table t1;
create table t1 (a int fkey1=v1, key akey (a) kkey1=v1) tkey1=1v1 tkey1=1v2 TKEY1=DEFAULT tkey2=2v1 tkey3=3v1; create table t1 (a int fkey1=v1, key akey (a) kkey1=v1) tkey1=1v1 tkey1=1v2 TKEY1=DEFAULT tkey2=2v1 tkey3=3v1;
Warnings: Warnings:
Warning 1651 Unknown option 'fkey1' Warning 1652 Unknown option 'fkey1'
Warning 1651 Unknown option 'kkey1' Warning 1652 Unknown option 'kkey1'
Warning 1651 Unknown option 'TKEY1' Warning 1652 Unknown option 'TKEY1'
Warning 1651 Unknown option 'tkey2' Warning 1652 Unknown option 'tkey2'
Warning 1651 Unknown option 'tkey3' Warning 1652 Unknown option 'tkey3'
show create table t1; show create table t1;
Table Create Table Table Create Table
t1 CREATE TABLE `t1` ( t1 CREATE TABLE `t1` (
...@@ -64,7 +64,7 @@ t1 CREATE TABLE `t1` ( ...@@ -64,7 +64,7 @@ t1 CREATE TABLE `t1` (
#change field with option with the same value #change field with option with the same value
alter table t1 change a a int `FKEY1`='v1'; alter table t1 change a a int `FKEY1`='v1';
Warnings: Warnings:
Warning 1651 Unknown option 'FKEY1' Warning 1652 Unknown option 'FKEY1'
show create table t1; show create table t1;
Table Create Table Table Create Table
t1 CREATE TABLE `t1` ( t1 CREATE TABLE `t1` (
...@@ -74,7 +74,7 @@ t1 CREATE TABLE `t1` ( ...@@ -74,7 +74,7 @@ t1 CREATE TABLE `t1` (
#change field with option with a different value #change field with option with a different value
alter table t1 change a a int fkey1=v2; alter table t1 change a a int fkey1=v2;
Warnings: Warnings:
Warning 1651 Unknown option 'fkey1' Warning 1652 Unknown option 'fkey1'
show create table t1; show create table t1;
Table Create Table Table Create Table
t1 CREATE TABLE `t1` ( t1 CREATE TABLE `t1` (
...@@ -93,7 +93,7 @@ t1 CREATE TABLE `t1` ( ...@@ -93,7 +93,7 @@ t1 CREATE TABLE `t1` (
#new key with options #new key with options
alter table t1 add key bkey (b) kkey2=v1; alter table t1 add key bkey (b) kkey2=v1;
Warnings: Warnings:
Warning 1651 Unknown option 'kkey2' Warning 1652 Unknown option 'kkey2'
show create table t1; show create table t1;
Table Create Table Table Create Table
t1 CREATE TABLE `t1` ( t1 CREATE TABLE `t1` (
...@@ -105,8 +105,8 @@ t1 CREATE TABLE `t1` ( ...@@ -105,8 +105,8 @@ t1 CREATE TABLE `t1` (
#new column with options #new column with options
alter table t1 add column c int fkey1=v1 fkey2=v2; alter table t1 add column c int fkey1=v1 fkey2=v2;
Warnings: Warnings:
Warning 1651 Unknown option 'fkey1' Warning 1652 Unknown option 'fkey1'
Warning 1651 Unknown option 'fkey2' Warning 1652 Unknown option 'fkey2'
show create table t1; show create table t1;
Table Create Table Table Create Table
t1 CREATE TABLE `t1` ( t1 CREATE TABLE `t1` (
...@@ -141,7 +141,7 @@ t1 CREATE TABLE `t1` ( ...@@ -141,7 +141,7 @@ t1 CREATE TABLE `t1` (
#add column with options after delete #add column with options after delete
alter table t1 add column b int fkey2=v1; alter table t1 add column b int fkey2=v1;
Warnings: Warnings:
Warning 1651 Unknown option 'fkey2' Warning 1652 Unknown option 'fkey2'
show create table t1; show create table t1;
Table Create Table Table Create Table
t1 CREATE TABLE `t1` ( t1 CREATE TABLE `t1` (
...@@ -154,7 +154,7 @@ t1 CREATE TABLE `t1` ( ...@@ -154,7 +154,7 @@ t1 CREATE TABLE `t1` (
#add key #add key
alter table t1 add key bkey (b) kkey2=v2; alter table t1 add key bkey (b) kkey2=v2;
Warnings: Warnings:
Warning 1651 Unknown option 'kkey2' Warning 1652 Unknown option 'kkey2'
show create table t1; show create table t1;
Table Create Table Table Create Table
t1 CREATE TABLE `t1` ( t1 CREATE TABLE `t1` (
...@@ -168,7 +168,7 @@ t1 CREATE TABLE `t1` ( ...@@ -168,7 +168,7 @@ t1 CREATE TABLE `t1` (
drop table t1; drop table t1;
create table t1 (a int) tkey1=100; create table t1 (a int) tkey1=100;
Warnings: Warnings:
Warning 1651 Unknown option 'tkey1' Warning 1652 Unknown option 'tkey1'
show create table t1; show create table t1;
Table Create Table Table Create Table
t1 CREATE TABLE `t1` ( t1 CREATE TABLE `t1` (
......
...@@ -13,9 +13,9 @@ ...@@ -13,9 +13,9 @@
# Change: Syntax changed # Change: Syntax changed
################################################################################ ################################################################################
--error ER_UNSUPPORTED_ACTION_ON_VIRTUAL_COLUMN --error ER_UNSUPPORTED_ENGINE_FOR_VIRTUAL_COLUMNS
create table t1 (a int, b int as (a+1)); create table t1 (a int, b int as (a+1));
create table t1 (a int); create table t1 (a int not null);
--error ER_UNSUPPORTED_ACTION_ON_VIRTUAL_COLUMN --error ER_UNSUPPORTED_ENGINE_FOR_VIRTUAL_COLUMNS
alter table t1 add column b int as (a+1); alter table t1 add column b int as (a+1);
drop table t1; drop table t1;
SET @@session.storage_engine = 'archive'; SET @@session.storage_engine = 'archive';
create table t1 (a int, b int as (a+1)); create table t1 (a int, b int as (a+1));
ERROR HY000: 'Specified storage engine' is not yet supported for computed columns ERROR HY000: ARCHIVE storage engine does not support computed columns
create table t1 (a int); create table t1 (a int not null);
alter table t1 add column b int as (a+1); alter table t1 add column b int as (a+1);
ERROR HY000: 'Specified storage engine' is not yet supported for computed columns ERROR HY000: ARCHIVE storage engine does not support computed columns
drop table t1; drop table t1;
SET @@session.storage_engine = 'blackhole'; SET @@session.storage_engine = 'blackhole';
create table t1 (a int, b int as (a+1)); create table t1 (a int, b int as (a+1));
ERROR HY000: 'Specified storage engine' is not yet supported for computed columns ERROR HY000: BLACKHOLE storage engine does not support computed columns
create table t1 (a int); create table t1 (a int not null);
alter table t1 add column b int as (a+1); alter table t1 add column b int as (a+1);
ERROR HY000: 'Specified storage engine' is not yet supported for computed columns ERROR HY000: BLACKHOLE storage engine does not support computed columns
drop table t1; drop table t1;
SET @@session.storage_engine = 'CSV'; SET @@session.storage_engine = 'CSV';
create table t1 (a int, b int as (a+1)); create table t1 (a int, b int as (a+1));
ERROR HY000: 'Specified storage engine' is not yet supported for computed columns ERROR HY000: CSV storage engine does not support computed columns
create table t1 (a int not null); create table t1 (a int not null);
alter table t1 add column b int as (a+1); alter table t1 add column b int as (a+1);
ERROR HY000: 'Specified storage engine' is not yet supported for computed columns ERROR HY000: CSV storage engine does not support computed columns
drop table t1; drop table t1;
SET @@session.storage_engine = 'memory'; SET @@session.storage_engine = 'memory';
create table t1 (a int, b int as (a+1)); create table t1 (a int, b int as (a+1));
ERROR HY000: 'Specified storage engine' is not yet supported for computed columns ERROR HY000: MEMORY storage engine does not support computed columns
create table t1 (a int); create table t1 (a int not null);
alter table t1 add column b int as (a+1); alter table t1 add column b int as (a+1);
ERROR HY000: 'Specified storage engine' is not yet supported for computed columns ERROR HY000: MEMORY storage engine does not support computed columns
drop table t1; drop table t1;
...@@ -4,5 +4,5 @@ create table t2 (a int, b int as (a % 10)); ...@@ -4,5 +4,5 @@ create table t2 (a int, b int as (a % 10));
insert into t1 values (1,default); insert into t1 values (1,default);
insert into t2 values (2,default); insert into t2 values (2,default);
create table t3 (a int, b int as (a % 10)) engine=MERGE UNION=(t1,t2); create table t3 (a int, b int as (a % 10)) engine=MERGE UNION=(t1,t2);
ERROR HY000: 'Specified storage engine' is not yet supported for computed columns ERROR HY000: MRG_MYISAM storage engine does not support computed columns
drop table t1,t2; drop table t1,t2;
...@@ -76,7 +76,7 @@ drop table t1; ...@@ -76,7 +76,7 @@ drop table t1;
# Case 7. ALTER. Modify virtual stored -> virtual non-stored # Case 7. ALTER. Modify virtual stored -> virtual non-stored
create table t1 (a int, b int as (a % 2) persistent); create table t1 (a int, b int as (a % 2) persistent);
alter table t1 modify b int as (a % 2); alter table t1 modify b int as (a % 2);
ERROR HY000: 'Changing the STORED status' is not yet supported for computed columns ERROR HY000: This is not yet supported for computed columns
show create table t1; show create table t1;
Table Create Table Table Create Table
t1 CREATE TABLE `t1` ( t1 CREATE TABLE `t1` (
...@@ -87,7 +87,7 @@ drop table t1; ...@@ -87,7 +87,7 @@ drop table t1;
# Case 8. ALTER. Modify virtual non-stored -> virtual stored # Case 8. ALTER. Modify virtual non-stored -> virtual stored
create table t1 (a int, b int as (a % 2)); create table t1 (a int, b int as (a % 2));
alter table t1 modify b int as (a % 2) persistent; alter table t1 modify b int as (a % 2) persistent;
ERROR HY000: 'Changing the STORED status' is not yet supported for computed columns ERROR HY000: This is not yet supported for computed columns
show create table t1; show create table t1;
Table Create Table Table Create Table
t1 CREATE TABLE `t1` ( t1 CREATE TABLE `t1` (
......
...@@ -76,7 +76,7 @@ drop table t1; ...@@ -76,7 +76,7 @@ drop table t1;
# Case 7. ALTER. Modify virtual stored -> virtual non-stored # Case 7. ALTER. Modify virtual stored -> virtual non-stored
create table t1 (a int, b int as (a % 2) persistent); create table t1 (a int, b int as (a % 2) persistent);
alter table t1 modify b int as (a % 2); alter table t1 modify b int as (a % 2);
ERROR HY000: 'Changing the STORED status' is not yet supported for computed columns ERROR HY000: This is not yet supported for computed columns
show create table t1; show create table t1;
Table Create Table Table Create Table
t1 CREATE TABLE `t1` ( t1 CREATE TABLE `t1` (
...@@ -87,7 +87,7 @@ drop table t1; ...@@ -87,7 +87,7 @@ drop table t1;
# Case 8. ALTER. Modify virtual non-stored -> virtual stored # Case 8. ALTER. Modify virtual non-stored -> virtual stored
create table t1 (a int, b int as (a % 2)); create table t1 (a int, b int as (a % 2));
alter table t1 modify b int as (a % 2) persistent; alter table t1 modify b int as (a % 2) persistent;
ERROR HY000: 'Changing the STORED status' is not yet supported for computed columns ERROR HY000: This is not yet supported for computed columns
show create table t1; show create table t1;
Table Create Table Table Create Table
t1 CREATE TABLE `t1` ( t1 CREATE TABLE `t1` (
......
...@@ -27,7 +27,7 @@ ...@@ -27,7 +27,7 @@
##### Storage engine to be tested ##### Storage engine to be tested
# Set the session storage engine # Set the session storage engine
--source include/have_innodb.inc --source include/have_xtradb.inc
SET @@session.storage_engine = 'InnoDB'; SET @@session.storage_engine = 'InnoDB';
#------------------------------------------------------------------------------# #------------------------------------------------------------------------------#
......
...@@ -32,7 +32,7 @@ ...@@ -32,7 +32,7 @@
##### Storage engine to be tested ##### Storage engine to be tested
# Set the session storage engine # Set the session storage engine
--source include/have_innodb.inc --source include/have_xtradb.inc
eval SET @@session.storage_engine = 'InnoDB'; eval SET @@session.storage_engine = 'InnoDB';
let $skip_full_text_checks = 1; let $skip_full_text_checks = 1;
......
...@@ -33,7 +33,7 @@ ...@@ -33,7 +33,7 @@
##### Storage engine to be tested ##### Storage engine to be tested
# Set the session storage engine # Set the session storage engine
--source include/have_innodb.inc --source include/have_xtradb.inc
eval SET @@session.storage_engine = 'InnoDB'; eval SET @@session.storage_engine = 'InnoDB';
##### Workarounds for known open engine specific bugs ##### Workarounds for known open engine specific bugs
......
...@@ -41,13 +41,7 @@ SET @@session.storage_engine = 'CSV'; ...@@ -41,13 +41,7 @@ SET @@session.storage_engine = 'CSV';
# Execute the tests to be applied to all storage engines # Execute the tests to be applied to all storage engines
#------------------------------------------------------------------------------# #------------------------------------------------------------------------------#
# Execute storage engine specific tests --source suite/vcol/inc/vcol_unsupported_storage_engines.inc
--error ER_UNSUPPORTED_ACTION_ON_VIRTUAL_COLUMN
create table t1 (a int, b int as (a+1));
create table t1 (a int not null);
--error ER_UNSUPPORTED_ACTION_ON_VIRTUAL_COLUMN
alter table t1 add column b int as (a+1);
drop table t1;
#------------------------------------------------------------------------------# #------------------------------------------------------------------------------#
# Cleanup # Cleanup
......
...@@ -33,7 +33,7 @@ ...@@ -33,7 +33,7 @@
##### Storage engine to be tested ##### Storage engine to be tested
# Set the session storage engine # Set the session storage engine
--source include/have_innodb.inc --source include/have_xtradb.inc
eval SET @@session.storage_engine = 'InnoDB'; eval SET @@session.storage_engine = 'InnoDB';
##### Workarounds for known open engine specific bugs ##### Workarounds for known open engine specific bugs
......
...@@ -33,7 +33,7 @@ ...@@ -33,7 +33,7 @@
##### Storage engine to be tested ##### Storage engine to be tested
# Set the session storage engine # Set the session storage engine
--source include/have_innodb.inc --source include/have_xtradb.inc
eval SET @@session.storage_engine = 'InnoDB'; eval SET @@session.storage_engine = 'InnoDB';
##### Workarounds for known open engine specific bugs ##### Workarounds for known open engine specific bugs
......
...@@ -33,7 +33,7 @@ ...@@ -33,7 +33,7 @@
##### Storage engine to be tested ##### Storage engine to be tested
# Set the session storage engine # Set the session storage engine
--source include/have_innodb.inc --source include/have_xtradb.inc
eval SET @@session.storage_engine = 'InnoDB'; eval SET @@session.storage_engine = 'InnoDB';
##### Workarounds for known open engine specific bugs ##### Workarounds for known open engine specific bugs
......
...@@ -48,7 +48,7 @@ create table t1 (a int, b int as (a % 10)); ...@@ -48,7 +48,7 @@ create table t1 (a int, b int as (a % 10));
create table t2 (a int, b int as (a % 10)); create table t2 (a int, b int as (a % 10));
insert into t1 values (1,default); insert into t1 values (1,default);
insert into t2 values (2,default); insert into t2 values (2,default);
--error ER_UNSUPPORTED_ACTION_ON_VIRTUAL_COLUMN --error ER_UNSUPPORTED_ENGINE_FOR_VIRTUAL_COLUMNS
create table t3 (a int, b int as (a % 10)) engine=MERGE UNION=(t1,t2); create table t3 (a int, b int as (a % 10)) engine=MERGE UNION=(t1,t2);
drop table t1,t2; drop table t1,t2;
......
...@@ -35,7 +35,7 @@ ...@@ -35,7 +35,7 @@
##### Storage engine to be tested ##### Storage engine to be tested
# Set the session storage engine # Set the session storage engine
--source include/have_innodb.inc --source include/have_xtradb.inc
eval SET @@session.storage_engine = 'InnoDB'; eval SET @@session.storage_engine = 'InnoDB';
##### Workarounds for known open engine specific bugs ##### Workarounds for known open engine specific bugs
......
...@@ -34,7 +34,7 @@ ...@@ -34,7 +34,7 @@
##### Storage engine to be tested ##### Storage engine to be tested
# Set the session storage engine # Set the session storage engine
--source include/have_innodb.inc --source include/have_xtradb.inc
eval SET @@session.storage_engine = 'InnoDB'; eval SET @@session.storage_engine = 'InnoDB';
##### Workarounds for known open engine specific bugs ##### Workarounds for known open engine specific bugs
......
...@@ -33,7 +33,7 @@ ...@@ -33,7 +33,7 @@
##### Storage engine to be tested ##### Storage engine to be tested
# Set the session storage engine # Set the session storage engine
--source include/have_innodb.inc --source include/have_xtradb.inc
eval SET @@session.storage_engine = 'InnoDB'; eval SET @@session.storage_engine = 'InnoDB';
##### Workarounds for known open engine specific bugs ##### Workarounds for known open engine specific bugs
......
...@@ -32,7 +32,7 @@ ...@@ -32,7 +32,7 @@
##### Storage engine to be tested ##### Storage engine to be tested
# Set the session storage engine # Set the session storage engine
--source include/have_innodb.inc --source include/have_xtradb.inc
SET @@session.storage_engine = 'InnoDB'; SET @@session.storage_engine = 'InnoDB';
##### Workarounds for known open engine specific bugs ##### Workarounds for known open engine specific bugs
......
...@@ -34,7 +34,7 @@ ...@@ -34,7 +34,7 @@
##### Storage engine to be tested ##### Storage engine to be tested
# Set the session storage engine # Set the session storage engine
--source include/have_innodb.inc --source include/have_xtradb.inc
eval SET @@session.storage_engine = 'InnoDB'; eval SET @@session.storage_engine = 'InnoDB';
##### Workarounds for known open engine specific bugs ##### Workarounds for known open engine specific bugs
......
...@@ -33,7 +33,7 @@ ...@@ -33,7 +33,7 @@
##### Storage engine to be tested ##### Storage engine to be tested
# Set the session storage engine # Set the session storage engine
--source include/have_innodb.inc --source include/have_xtradb.inc
eval SET @@session.storage_engine = 'InnoDB'; eval SET @@session.storage_engine = 'InnoDB';
##### Workarounds for known open engine specific bugs ##### Workarounds for known open engine specific bugs
......
...@@ -253,7 +253,6 @@ class ha_partition :public handler ...@@ -253,7 +253,6 @@ class ha_partition :public handler
DBUG_RETURN(0); DBUG_RETURN(0);
} }
virtual void change_table_ptr(TABLE *table_arg, TABLE_SHARE *share); virtual void change_table_ptr(TABLE *table_arg, TABLE_SHARE *share);
bool check_if_supported_virtual_columns(void) { return TRUE;}
virtual bool check_if_incompatible_data(HA_CREATE_INFO *create_info, virtual bool check_if_incompatible_data(HA_CREATE_INFO *create_info,
uint table_changes); uint table_changes);
private: private:
......
...@@ -137,6 +137,7 @@ ...@@ -137,6 +137,7 @@
#define HA_BINLOG_STMT_CAPABLE (LL(1) << 35) #define HA_BINLOG_STMT_CAPABLE (LL(1) << 35)
/* Has automatic checksums and uses the new checksum format */ /* Has automatic checksums and uses the new checksum format */
#define HA_HAS_NEW_CHECKSUM (LL(1) << 36) #define HA_HAS_NEW_CHECKSUM (LL(1) << 36)
#define HA_CAN_VIRTUAL_COLUMNS (LL(1) << 37)
/* /*
Set of all binlog flags. Currently only contain the capabilities Set of all binlog flags. Currently only contain the capabilities
...@@ -1955,17 +1956,6 @@ class handler :public Sql_alloc ...@@ -1955,17 +1956,6 @@ class handler :public Sql_alloc
LEX_STRING *engine_name() { return hton_name(ht); } LEX_STRING *engine_name() { return hton_name(ht); }
/*
@brief
Check whether the engine supports virtual columns
@retval
FALSE if the engine does not support virtual columns
@retval
TRUE if the engine supports virtual columns
*/
virtual bool check_if_supported_virtual_columns(void) { return FALSE;}
protected: protected:
/* deprecated, don't use in new engines */ /* deprecated, don't use in new engines */
inline void ha_statistic_increment(ulong SSV::*offset) const { } inline void ha_statistic_increment(ulong SSV::*offset) const { }
......
...@@ -6017,7 +6017,7 @@ ER_ONLY_INTEGERS_ALLOWED ...@@ -6017,7 +6017,7 @@ ER_ONLY_INTEGERS_ALLOWED
eng "Only integers allowed as number here" eng "Only integers allowed as number here"
ger "An dieser Stelle sind nur Ganzzahlen zulssig" ger "An dieser Stelle sind nur Ganzzahlen zulssig"
ER_UNSUPORTED_LOG_ENGINE ER_UNSUPORTED_LOG_ENGINE
eng "This storage engine cannot be used for log tables"" eng "This storage engine cannot be used for log tables"
ger "Diese Speicher-Engine kann fr Logtabellen nicht verwendet werden" ger "Diese Speicher-Engine kann fr Logtabellen nicht verwendet werden"
ER_BAD_LOG_STATEMENT ER_BAD_LOG_STATEMENT
eng "You cannot '%s' a log table if logging is enabled" eng "You cannot '%s' a log table if logging is enabled"
...@@ -6236,13 +6236,15 @@ ER_WARNING_NON_DEFAULT_VALUE_FOR_VIRTUAL_COLUMN ...@@ -6236,13 +6236,15 @@ ER_WARNING_NON_DEFAULT_VALUE_FOR_VIRTUAL_COLUMN
eng "The value specified for computed column '%s' in table '%s' ignored" eng "The value specified for computed column '%s' in table '%s' ignored"
ER_UNSUPPORTED_ACTION_ON_VIRTUAL_COLUMN ER_UNSUPPORTED_ACTION_ON_VIRTUAL_COLUMN
eng "'%s' is not yet supported for computed columns" eng "This is not yet supported for computed columns"
ER_CONST_EXPR_IN_VCOL ER_CONST_EXPR_IN_VCOL
eng "Constant expression in computed column function is not allowed" eng "Constant expression in computed column function is not allowed"
ER_ROW_EXPR_FOR_VCOL ER_ROW_EXPR_FOR_VCOL
eng "Expression for computed column cannot return a row" eng "Expression for computed column cannot return a row"
ER_UNSUPPORTED_ENGINE_FOR_VIRTUAL_COLUMNS
eng "%s storage engine does not support computed columns"
ER_UNKNOWN_OPTION ER_UNKNOWN_OPTION
eng "Unknown option '%-.64s'" eng "Unknown option '%-.64s'"
ER_BAD_OPTION_VALUE ER_BAD_OPTION_VALUE
......
...@@ -6280,9 +6280,7 @@ mysql_prepare_alter_table(THD *thd, TABLE *table, ...@@ -6280,9 +6280,7 @@ mysql_prepare_alter_table(THD *thd, TABLE *table,
def->field=field; def->field=field;
if (field->stored_in_db != def->stored_in_db) if (field->stored_in_db != def->stored_in_db)
{ {
my_error(ER_UNSUPPORTED_ACTION_ON_VIRTUAL_COLUMN, my_error(ER_UNSUPPORTED_ACTION_ON_VIRTUAL_COLUMN, MYF(0));
MYF(0),
"Changing the STORED status");
goto err; goto err;
} }
if (!def->after) if (!def->after)
......
...@@ -2337,14 +2337,11 @@ int open_table_from_share(THD *thd, TABLE_SHARE *share, const char *alias, ...@@ -2337,14 +2337,11 @@ int open_table_from_share(THD *thd, TABLE_SHARE *share, const char *alias,
/* Check virtual columns against table's storage engine. */ /* Check virtual columns against table's storage engine. */
if (share->vfields && if (share->vfields &&
((outparam->file && !(outparam->file &&
!outparam->file->check_if_supported_virtual_columns()) || (outparam->file->ha_table_flags() & HA_CAN_VIRTUAL_COLUMNS)))
(!outparam->file && share->db_type() && {
share->db_type()->db_type == DB_TYPE_CSV_DB))) // Workaround for CSV my_error(ER_UNSUPPORTED_ENGINE_FOR_VIRTUAL_COLUMNS, MYF(0),
{ plugin_name(share->db_plugin)->str);
my_error(ER_UNSUPPORTED_ACTION_ON_VIRTUAL_COLUMN,
MYF(0),
"Specified storage engine");
error_reported= TRUE; error_reported= TRUE;
goto err; goto err;
} }
......
...@@ -821,7 +821,7 @@ int_table_flags(HA_NULL_IN_KEY | HA_CAN_FULLTEXT | HA_CAN_SQL_HANDLER | ...@@ -821,7 +821,7 @@ int_table_flags(HA_NULL_IN_KEY | HA_CAN_FULLTEXT | HA_CAN_SQL_HANDLER |
HA_BINLOG_ROW_CAPABLE | HA_BINLOG_STMT_CAPABLE | HA_BINLOG_ROW_CAPABLE | HA_BINLOG_STMT_CAPABLE |
HA_DUPLICATE_POS | HA_CAN_INDEX_BLOBS | HA_AUTO_PART_KEY | HA_DUPLICATE_POS | HA_CAN_INDEX_BLOBS | HA_AUTO_PART_KEY |
HA_FILE_BASED | HA_CAN_GEOMETRY | CANNOT_ROLLBACK_FLAG | HA_FILE_BASED | HA_CAN_GEOMETRY | CANNOT_ROLLBACK_FLAG |
HA_CAN_BIT_FIELD | HA_CAN_RTREEKEYS | HA_CAN_BIT_FIELD | HA_CAN_RTREEKEYS | HA_CAN_VIRTUAL_COLUMNS |
HA_HAS_RECORDS | HA_STATS_RECORDS_IS_EXACT), HA_HAS_RECORDS | HA_STATS_RECORDS_IS_EXACT),
can_enable_indexes(1), bulk_insert_single_undo(BULK_INSERT_NONE) can_enable_indexes(1), bulk_insert_single_undo(BULK_INSERT_NONE)
{} {}
......
...@@ -143,7 +143,6 @@ class ha_maria :public handler ...@@ -143,7 +143,6 @@ class ha_maria :public handler
int assign_to_keycache(THD * thd, HA_CHECK_OPT * check_opt); int assign_to_keycache(THD * thd, HA_CHECK_OPT * check_opt);
int preload_keys(THD * thd, HA_CHECK_OPT * check_opt); int preload_keys(THD * thd, HA_CHECK_OPT * check_opt);
bool check_if_incompatible_data(HA_CREATE_INFO * info, uint table_changes); bool check_if_incompatible_data(HA_CREATE_INFO * info, uint table_changes);
bool check_if_supported_virtual_columns(void) { return TRUE;}
#ifdef HAVE_REPLICATION #ifdef HAVE_REPLICATION
int dump(THD * thd, int fd); int dump(THD * thd, int fd);
int net_read_dump(NET * net); int net_read_dump(NET * net);
......
...@@ -545,6 +545,7 @@ ha_myisam::ha_myisam(handlerton *hton, TABLE_SHARE *table_arg) ...@@ -545,6 +545,7 @@ ha_myisam::ha_myisam(handlerton *hton, TABLE_SHARE *table_arg)
:handler(hton, table_arg), file(0), :handler(hton, table_arg), file(0),
int_table_flags(HA_NULL_IN_KEY | HA_CAN_FULLTEXT | HA_CAN_SQL_HANDLER | int_table_flags(HA_NULL_IN_KEY | HA_CAN_FULLTEXT | HA_CAN_SQL_HANDLER |
HA_BINLOG_ROW_CAPABLE | HA_BINLOG_STMT_CAPABLE | HA_BINLOG_ROW_CAPABLE | HA_BINLOG_STMT_CAPABLE |
HA_CAN_VIRTUAL_COLUMNS |
HA_DUPLICATE_POS | HA_CAN_INDEX_BLOBS | HA_AUTO_PART_KEY | HA_DUPLICATE_POS | HA_CAN_INDEX_BLOBS | HA_AUTO_PART_KEY |
HA_FILE_BASED | HA_CAN_GEOMETRY | HA_NO_TRANSACTIONS | HA_FILE_BASED | HA_CAN_GEOMETRY | HA_NO_TRANSACTIONS |
HA_CAN_INSERT_DELAYED | HA_CAN_BIT_FIELD | HA_CAN_RTREEKEYS | HA_CAN_INSERT_DELAYED | HA_CAN_BIT_FIELD | HA_CAN_RTREEKEYS |
......
...@@ -133,7 +133,6 @@ class ha_myisam: public handler ...@@ -133,7 +133,6 @@ class ha_myisam: public handler
int assign_to_keycache(THD* thd, HA_CHECK_OPT* check_opt); int assign_to_keycache(THD* thd, HA_CHECK_OPT* check_opt);
int preload_keys(THD* thd, HA_CHECK_OPT* check_opt); int preload_keys(THD* thd, HA_CHECK_OPT* check_opt);
bool check_if_incompatible_data(HA_CREATE_INFO *info, uint table_changes); bool check_if_incompatible_data(HA_CREATE_INFO *info, uint table_changes);
bool check_if_supported_virtual_columns(void) { return TRUE;}
#ifdef HAVE_REPLICATION #ifdef HAVE_REPLICATION
int dump(THD* thd, int fd); int dump(THD* thd, int fd);
int net_read_dump(NET* net); int net_read_dump(NET* net);
......
...@@ -1471,7 +1471,7 @@ UNIV_INTERN ...@@ -1471,7 +1471,7 @@ UNIV_INTERN
ha_innobase::ha_innobase(handlerton *hton, TABLE_SHARE *table_arg) ha_innobase::ha_innobase(handlerton *hton, TABLE_SHARE *table_arg)
:handler(hton, table_arg), :handler(hton, table_arg),
int_table_flags(HA_REC_NOT_IN_SEQ | int_table_flags(HA_REC_NOT_IN_SEQ |
HA_NULL_IN_KEY | HA_NULL_IN_KEY | HA_CAN_VIRTUAL_COLUMNS |
HA_CAN_INDEX_BLOBS | HA_CAN_INDEX_BLOBS |
HA_CAN_SQL_HANDLER | HA_CAN_SQL_HANDLER |
HA_PRIMARY_KEY_REQUIRED_FOR_POSITION | HA_PRIMARY_KEY_REQUIRED_FOR_POSITION |
......
...@@ -222,7 +222,6 @@ class ha_innobase: public handler ...@@ -222,7 +222,6 @@ class ha_innobase: public handler
/** @} */ /** @} */
bool check_if_incompatible_data(HA_CREATE_INFO *info, bool check_if_incompatible_data(HA_CREATE_INFO *info,
uint table_changes); uint table_changes);
bool check_if_supported_virtual_columns(void) { return TRUE; }
}; };
/* Some accessor functions which the InnoDB plugin needs, but which /* Some accessor functions which the InnoDB plugin needs, but which
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment