Commit 4f37a861 authored by Alexander Barkov's avatar Alexander Barkov

The fix for MDEV-8723 unintentionally broke vcol_supported_sql_funcs_myisam

and vcol_supported_sql_funcs_innodb. Moving the test for using CHARSET(),
COLLATION(), COERCIBILITY() in virtual column from
vcol_supported_sql_funcs_xxx to vcol_blocked_sql_funcs_xxx,
as these functions are not supported in virtual columns any longer.
Discussed with Sanja on IRC.
parent aa1002a3
......@@ -102,6 +102,18 @@ if (!$skip_full_text_checks)
-- error ER_VIRTUAL_COLUMN_FUNCTION_IS_NOT_ALLOWED
create table t1 (a varchar(1024), b varchar(1024) as (benchmark(a,3)));
--echo # CHARSET()
-- error ER_CONST_EXPR_IN_VCOL
create table t1 (a varchar(64), b varchar(64) as (charset(a)));
--echo # COERCIBILITY()
-- error ER_CONST_EXPR_IN_VCOL
create table t1 (a varchar(64), b int as (coercibility(a)));
--echo # COLLATION()
-- error ER_CONST_EXPR_IN_VCOL
create table t1 (a varchar(64), b varchar(64) as (collation(a)));
--echo # CONNECTION_ID()
-- error ER_VIRTUAL_COLUMN_FUNCTION_IS_NOT_ALLOWED
create table t1 (a int as (connection_id()));
......
......@@ -1142,24 +1142,6 @@ let $values1 = 5,default;
let $rows = 1;
--source suite/vcol/inc/vcol_supported_sql_funcs.inc
--echo # CHARSET()
let $cols = a varchar(1024), b varchar(1024) as (charset(a));
let $values1 = 'abc',default;
let $rows = 1;
--source suite/vcol/inc/vcol_supported_sql_funcs.inc
--echo # COERCIBILITY()
let $cols = a varchar(1024), b int as (coercibility(a));
let $values1 = 'abc',default;
let $rows = 1;
--source suite/vcol/inc/vcol_supported_sql_funcs.inc
--echo # COLLATION()
let $cols = a varchar(1024), b varchar(1024) as (collation(a));
let $values1 = 'abc',default;
let $rows = 1;
--source suite/vcol/inc/vcol_supported_sql_funcs.inc
--echo # COMPRESS(), UNCOMPRESS()
let $cols = a varchar(1024), b varchar(1024) as (uncompress(compress(a)));
let $values1 = 'MySQL',default;
......
......@@ -61,6 +61,15 @@ ERROR HY000: Function or expression is not allowed for column 'b'
# BENCHMARK()
create table t1 (a varchar(1024), b varchar(1024) as (benchmark(a,3)));
ERROR HY000: Function or expression is not allowed for column 'b'
# CHARSET()
create table t1 (a varchar(64), b varchar(64) as (charset(a)));
ERROR HY000: Constant expression in computed column function is not allowed
# COERCIBILITY()
create table t1 (a varchar(64), b int as (coercibility(a)));
ERROR HY000: Constant expression in computed column function is not allowed
# COLLATION()
create table t1 (a varchar(64), b varchar(64) as (collation(a)));
ERROR HY000: Constant expression in computed column function is not allowed
# CONNECTION_ID()
create table t1 (a int as (connection_id()));
ERROR HY000: Function or expression is not allowed for column 'a'
......
......@@ -63,6 +63,15 @@ ERROR HY000: Function or expression is not allowed for column 'b'
# BENCHMARK()
create table t1 (a varchar(1024), b varchar(1024) as (benchmark(a,3)));
ERROR HY000: Function or expression is not allowed for column 'b'
# CHARSET()
create table t1 (a varchar(64), b varchar(64) as (charset(a)));
ERROR HY000: Constant expression in computed column function is not allowed
# COERCIBILITY()
create table t1 (a varchar(64), b int as (coercibility(a)));
ERROR HY000: Constant expression in computed column function is not allowed
# COLLATION()
create table t1 (a varchar(64), b varchar(64) as (collation(a)));
ERROR HY000: Constant expression in computed column function is not allowed
# CONNECTION_ID()
create table t1 (a int as (connection_id()));
ERROR HY000: Function or expression is not allowed for column 'a'
......
......@@ -2756,51 +2756,6 @@ a b
5 2
drop table t1;
set sql_warnings = 0;
# CHARSET()
set sql_warnings = 1;
create table t1 (a varchar(1024), b varchar(1024) as (charset(a)));
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` varchar(1024) DEFAULT NULL,
`b` varchar(1024) AS (charset(a)) VIRTUAL
) ENGINE=InnoDB DEFAULT CHARSET=latin1
insert into t1 values ('abc',default);
select * from t1;
a b
abc latin1
drop table t1;
set sql_warnings = 0;
# COERCIBILITY()
set sql_warnings = 1;
create table t1 (a varchar(1024), b int as (coercibility(a)));
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` varchar(1024) DEFAULT NULL,
`b` int(11) AS (coercibility(a)) VIRTUAL
) ENGINE=InnoDB DEFAULT CHARSET=latin1
insert into t1 values ('abc',default);
select * from t1;
a b
abc 2
drop table t1;
set sql_warnings = 0;
# COLLATION()
set sql_warnings = 1;
create table t1 (a varchar(1024), b varchar(1024) as (collation(a)));
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` varchar(1024) DEFAULT NULL,
`b` varchar(1024) AS (collation(a)) VIRTUAL
) ENGINE=InnoDB DEFAULT CHARSET=latin1
insert into t1 values ('abc',default);
select * from t1;
a b
abc latin1_swedish_ci
drop table t1;
set sql_warnings = 0;
# COMPRESS(), UNCOMPRESS()
set sql_warnings = 1;
create table t1 (a varchar(1024), b varchar(1024) as (uncompress(compress(a))));
......
......@@ -2756,51 +2756,6 @@ a b
5 2
drop table t1;
set sql_warnings = 0;
# CHARSET()
set sql_warnings = 1;
create table t1 (a varchar(1024), b varchar(1024) as (charset(a)));
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` varchar(1024) DEFAULT NULL,
`b` varchar(1024) AS (charset(a)) VIRTUAL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
insert into t1 values ('abc',default);
select * from t1;
a b
abc latin1
drop table t1;
set sql_warnings = 0;
# COERCIBILITY()
set sql_warnings = 1;
create table t1 (a varchar(1024), b int as (coercibility(a)));
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` varchar(1024) DEFAULT NULL,
`b` int(11) AS (coercibility(a)) VIRTUAL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
insert into t1 values ('abc',default);
select * from t1;
a b
abc 2
drop table t1;
set sql_warnings = 0;
# COLLATION()
set sql_warnings = 1;
create table t1 (a varchar(1024), b varchar(1024) as (collation(a)));
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` varchar(1024) DEFAULT NULL,
`b` varchar(1024) AS (collation(a)) VIRTUAL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
insert into t1 values ('abc',default);
select * from t1;
a b
abc latin1_swedish_ci
drop table t1;
set sql_warnings = 0;
# COMPRESS(), UNCOMPRESS()
set sql_warnings = 1;
create table t1 (a varchar(1024), b varchar(1024) as (uncompress(compress(a))));
......
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