#
# MDEV-7113 difference between check_vcol_func_processor and check_partition_func_processor
#

# the following functions must not be supported in persistent columns.
# but for compatibility reasons it won't be done in a GA version,
# we'll only fix most critical issues (inconsistent results, crashes)

connect (con1, localhost, root);

set lc_time_names = 'es_MX';
set time_zone='+10:00';
set div_precision_increment=20;

create table t1 (a int, b int, v decimal(20,19) as (a/3));
create table t2 (a int, b int, v int as (a+@a)); drop table t2;
--error ER_GENERATED_COLUMN_FUNCTION_IS_NOT_ALLOWED
create table t2 (a int, b int, v int as (a+@a) PERSISTENT);
create table t3_ok (a int, b int, v int as (a+@@error_count));
--error ER_GENERATED_COLUMN_FUNCTION_IS_NOT_ALLOWED
create table t3 (a int, b int, v int as (a+@@error_count) PERSISTENT);
create table t4 (a int, b int, v int as (@a:=a)); drop table t4;
--error ER_GENERATED_COLUMN_FUNCTION_IS_NOT_ALLOWED
create table t4 (a int, b int, v int as (@a:=a) PERSISTENT);
create table t8 (a int, b int, v varchar(100) as (from_unixtime(a)));

insert t1 (a,b) values (1,2);
insert t8 (a,b) values (1234567890,2);

select * from t1;
select * from t8;

disconnect con1;
connection default;
set time_zone='+1:00';
flush tables;

select * from t1;
select * from t8;

drop table t1, t3_ok, t8;

--echo #
--echo # Bug#33141966 - INCONSISTENT BEHAVIOR IF A COLUMN OF TYPE SERIAL IS SET AS GENERATED
--echo #
--error ER_PARSE_ERROR
create table t1 (a int, b serial as (a+1));

--echo #
--echo # End of 10.2 tests
--echo #

--error ER_GENERATED_COLUMN_FUNCTION_IS_NOT_ALLOWED
create table t1 (a int, b real as (rand()), c real as (b) stored);
--error ER_GENERATED_COLUMN_FUNCTION_IS_NOT_ALLOWED
create table t1 (a int, b real as (rand()), c real as (b) unique);
--error ER_GENERATED_COLUMN_FUNCTION_IS_NOT_ALLOWED
create table t1 (a int auto_increment primary key,
                 b int as (a+1), c int as (b+1) stored);
--error ER_GENERATED_COLUMN_FUNCTION_IS_NOT_ALLOWED
create table t1 (a int auto_increment primary key,
                 b int as (a+1), c int as (b+1) unique);

--echo #
--echo # End of 10.3 tests
--echo #

--echo #
--echo # MDEV-29155 CREATE OR REPLACE with self-referencing CHECK hangs forever, cannot be killed
--echo #
create table t1 (a int);
create table t2 (b int)
# create or replace table t (b int);
--error ER_SUBQUERIES_NOT_SUPPORTED
create table t3 (c int, check(exists(select a from t1) or exists(select b from t2)));
--error ER_SUBQUERIES_NOT_SUPPORTED
create table t3 (c int, check(exists(select c from t3)));
create table t3 (d int);
--error ER_SUBQUERIES_NOT_SUPPORTED
create or replace table t3 (c int, check(exists(select a from t1) or exists(select b from t2)));
drop table t3;
create table t3 (d int);
--error ER_SUBQUERIES_NOT_SUPPORTED
create or replace table t3 (c int, check(exists(select c from t3)));
drop table t3;
create table t3 (c int);
--error ER_SUBQUERIES_NOT_SUPPORTED
alter table t3 add check(exists(select a from t1) or exists(select b from t2));
--error ER_SUBQUERIES_NOT_SUPPORTED
alter table t3 add check(exists(select c from t3));
--error ER_GENERATED_COLUMN_FUNCTION_IS_NOT_ALLOWED
create table t3 (c int default (select a from t1));
--error ER_GENERATED_COLUMN_FUNCTION_IS_NOT_ALLOWED
create table t3 (c int, d int generated always as (select a from t1 limit 1));
drop tables t1, t2, t3;

--echo #
--echo # End of 10.4 tests
--echo #
