mariadb/mysql-test/main/invisible_field_debug.test
Aleksey Midenkov d324c03d0c Vanilla cleanups and refactorings
Dead code cleanup:

part_info->num_parts usage was wrong and working incorrectly in
mysql_drop_partitions() because num_parts is already updated in
prep_alter_part_table(). We don't have to update part_info->partitions
because part_info is destroyed at alter_partition_lock_handling().

Cleanups:

- DBUG_EVALUATE_IF() macro replaced by shorter form DBUG_IF();
- Typo in ER_KEY_COLUMN_DOES_NOT_EXITS.

Refactorings:

- Splitted write_log_replace_delete_frm() into write_log_delete_frm()
  and write_log_replace_frm();
- partition_info via DDL_LOG_STATE;
- set_part_info_exec_log_entry() removed.

DBUG_EVALUATE removed

DBUG_EVALUTATE was only added for consistency together with
DBUG_EVALUATE_IF. It is not used anywhere in the code.

DBUG_SUICIDE() fix on release build

On release DBUG_SUICIDE() was statement. It was wrong as
DBUG_SUICIDE() is used in expression context.
2021-10-26 17:07:46 +02:00

292 lines
8.2 KiB
Text

--source include/have_debug.inc
##TEST for invisible coloumn level 2
set @old_debug= @@debug_dbug;
create table t_tmp(a int, b int);
set debug_dbug= "+d,test_pseudo_invisible";
create table t1(a int);
set debug_dbug=@old_debug;
insert into t1 values(1);
desc t1;
show create table t1;
select a , invisible from t1;
##field should not be resolved in fill_record
--error ER_BAD_FIELD_ERROR
insert into t1(a, invisible) values(99,99);
--error ER_BAD_FIELD_ERROR
select default(invisible) from t1;
--error ER_BAD_FIELD_ERROR
insert into t1(invisible) values(99);
insert into t_tmp select a, invisible from t1;
--error ER_WRONG_VALUE_COUNT_ON_ROW
insert into t1 select * from t_tmp;
--error ER_BAD_FIELD_ERROR
insert into t1(a,invisible) select * from t_tmp;
select a , invisible from t1;
insert into t1 values (5), (invisible+1);
select a , invisible from t1;
delete from t1 where a > 1;
##Update
update t1 set a = invisible where a=1;
select a , invisible from t1;
update t1 set a = (select invisible+100 from t1 limit 1) where a=(select a from t1 limit 1);
select a , invisible from t1;
--error ER_BAD_FIELD_ERROR
update t1 set invisible = 23 where a=(select a from t1 limit 1);
--error ER_BAD_FIELD_ERROR
update t1 set invisible = 101 where a=(select a from t1 limit 1);
--error ER_BAD_FIELD_ERROR
update t1 set invisible = (select invisible+100 from t1 limit 1) where a=(select invisible from t1 limit 1);
select a , invisible from t1;
##if changed then error
set @a=12;
--error ER_BAD_FIELD_ERROR
update t1 set invisible = (select @a from dual) where a=(select a from t1 limit 1);
select a , invisible from t1;
--error ER_BAD_FIELD_ERROR
update t1 set invisible = (select invisible+100 from t1 limit 1) where a=(select a from t1 limit 1);
select a , invisible from t1;
##set
set @a=(select invisible from t1 limit 1);
select @a from dual;
--error ER_BAD_FIELD_ERROR
alter table t1 add constraint a check (invisible > 2);
set debug_dbug= "+d,test_pseudo_invisible";
--error ER_BAD_FIELD_ERROR
create table t2(a int, b int as (invisible +2) virtual);
create table t2(a int , b int);
insert into t2 values(2,2);
insert into t2 select a, invisible from t1;
set debug_dbug=@old_debug;
select * from t1;
select invisible ,a from t1;
drop table t1,t2,t_tmp;
##TEST for invisible coloumn level 3
set debug_dbug= "+d,test_completely_invisible";
create table t1(a int);
set debug_dbug=@old_debug;
desc t1;
show create table t1;
insert into t1 values(1);
select * from t1;
--error ER_BAD_FIELD_ERROR
select invisible ,a from t1;
set debug_dbug= "+d,test_completely_invisible";
select invisible ,a from t1;
set debug_dbug=@old_debug;
create table t2 (invisible int);
--error ER_BAD_FIELD_ERROR
select * from t1 join t2 using (invisible);
--error ER_BAD_FIELD_ERROR
select * from t2 join t1 using (invisible);
insert t2 values (8),(9);
select * from t1 natural join t2;
select * from t2 natural join t1;
drop table t1, t2;
##TEST for Alter table for invisibleness level 2
set debug_dbug= "+d,test_pseudo_invisible";
create table t1(a int);
set debug_dbug=@old_debug;
desc t1;
insert into t1 values(1);
select * from t1;
select invisible ,a from t1;
## Alter should not be possible
--error ER_BAD_FIELD_ERROR
ALTER table t1 change invisible b int;
select * from t1;
select invisible ,a from t1;
--error ER_BAD_FIELD_ERROR
ALTER table t1 modify invisible char;
select * from t1;
select invisible ,a from t1;
--error ER_CANT_DROP_FIELD_OR_KEY
ALTER table t1 drop invisible;
select * from t1;
select invisible ,a from t1;
--error ER_DUP_FIELDNAME
ALTER table t1 add invisible int;
select * from t1;
select invisible ,a from t1;
ALTER table t1 add invisible2 int default 2;
select * from t1;
select invisible ,a from t1;
--error ER_BAD_FIELD_ERROR
create trigger trg before insert on t1 for each row set new.invisible=1;
create trigger trg before insert on t1 for each row set @a:=new.invisible;
drop table t1;
##TEST for Alter table for invisibleness level 3
set debug_dbug= "+d,test_completely_invisible";
create table t1(a int);
set debug_dbug=@old_debug;
--error ER_BAD_FIELD_ERROR
create trigger trg before insert on t1 for each row set new.invisible=1;
--error ER_BAD_FIELD_ERROR
create trigger trg before insert on t1 for each row set @a:=new.invisible;
set debug_dbug= "+d,test_completely_invisible";
desc t1;
insert into t1 values(1);
select * from t1;
select invisible ,a from t1;
## Alter should not be possible
--error ER_BAD_FIELD_ERROR
ALTER table t1 change invisible b int;
select * from t1;
select invisible ,a from t1;
--error ER_BAD_FIELD_ERROR
ALTER table t1 modify invisible char;
select * from t1;
select invisible ,a from t1;
--error ER_CANT_DROP_FIELD_OR_KEY
ALTER table t1 drop invisible;
select * from t1;
select invisible ,a from t1;
ALTER table t1 add invisible int;
select * from t1;
select invisible1, invisible ,a from t1;
ALTER table t1 add hid int default 2;
select * from t1;
select invisible ,a from t1;
drop table t1;
set debug_dbug=@old_debug;
## Test Index on USER_DEFINED_INVISIBLE
Create table t1( a int default(99) invisible, b int);
insert into t1 values(1);
insert into t1 values(2);
insert into t1 values(3);
insert into t1 values(4);
select * from t1 order by b;
alter table t1 add index(a);
alter table t1 add index(a,b);
show index from t1;
drop table t1;
## Test Index on PSEUDO_invisible_INVISIBLE
set debug_dbug= "+d,test_pseudo_invisible";
Create table t1( a int default(99) invisible, b int);
--error ER_KEY_COLUMN_DOES_NOT_EXIST
Create table t2( a int default(99) invisible, b int, unique(invisible));
set debug_dbug=@old_debug;
insert into t1 values(1);
insert into t1 values(2);
insert into t1 values(3);
insert into t1 values(4);
select * from t1 order by b;
select invisible, a, b from t1 order by b;
--error ER_KEY_COLUMN_DOES_NOT_EXIST
alter table t1 add index(invisible);
--error ER_KEY_COLUMN_DOES_NOT_EXIST
alter table t1 add index(b,invisible);
show index from t1;
drop table t1;
## Test Index on COMPLETELY_INVISIBLE
set debug_dbug= "+d,test_completely_invisible";
Create table t1( a int default(99) invisible, b int);
--error ER_KEY_COLUMN_DOES_NOT_EXIST
Create table t2( a int default(99) invisible, b int, unique(invisible));
insert into t1 values(1);
insert into t1 values(2);
insert into t1 values(3);
insert into t1 values(4);
select * from t1 order by b;
select invisible, a, b from t1 order by b;
set debug_dbug=@old_debug;
--error ER_KEY_COLUMN_DOES_NOT_EXIST
alter table t1 add index(invisible);
--error ER_KEY_COLUMN_DOES_NOT_EXIST
alter table t1 add index(b,invisible);
show index from t1;
drop table t1;
## Sytem Generated index on invisible column
set debug_dbug= "+d,test_completely_invisible,test_invisible_index";
## index name will be invisible
Create table t1( a int default(99) , b int,c int, index(b));
set debug_dbug=@old_debug;
Show index from t1;
select * from INFORMATION_SCHEMA.STATISTICS where TABLE_SCHEMA ='test' and table_name='t1';
show create table t1;
insert into t1 values(1,1,1);
insert into t1 values(2,2,2);
insert into t1 values(3,3,3);
insert into t1 values(4,4,4);
insert into t1 values(5,5,5);
insert into t1 values(6,6,6);
insert into t1 values(7,7,7);
set debug_dbug= "+d,test_completely_invisible,test_invisible_index";
select invisible, a ,b from t1 order by b;
explain select * from t1 where invisible =9;
alter table t1 add x int default 3;
select invisible, a ,b from t1;
set debug_dbug=@old_debug;
Show index from t1;
## Sytem Generated Index modification
--error ER_KEY_COLUMN_DOES_NOT_EXIST
create index a1 on t1(invisible);
set debug_dbug= "+d,test_completely_invisible,test_invisible_index";
## index does not exist for user
--error ER_CANT_DROP_FIELD_OR_KEY
drop index invisible on t1;
explain select * from t1 where invisible =9;
## index name will be changed
create index invisible on t1(c);
explain select * from t1 where invisible =9;
show indexes in t1;
drop table t1;
set @old_debug= @@debug_dbug;
## MDEV 15127
CREATE TABLE t1 (i INT );
SET debug_dbug="+d,test_completely_invisible,test_invisible_index";
CREATE TABLE t2 LIKE t1;
SET debug_dbug= DEFAULT;
DROP TABLE t1, t2;
--echo #
--echo # MDEV-20210
--echo # If you have an INVISIBLE VIRTUAL column, SHOW CREATE TABLE doesn't list it as INVISIBLE
--echo #
CREATE TABLE t1 (i INT, v int GENERATED ALWAYS AS (1) VIRTUAL INVISIBLE);
SHOW CREATE TABLE t1;
DROP TABLE t1;