summaryrefslogtreecommitdiffstats
path: root/mysql-test/main/invisible_field_debug.test
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-04 18:00:34 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-04 18:00:34 +0000
commit3f619478f796eddbba6e39502fe941b285dd97b1 (patch)
treee2c7b5777f728320e5b5542b6213fd3591ba51e2 /mysql-test/main/invisible_field_debug.test
parentInitial commit. (diff)
downloadmariadb-3f619478f796eddbba6e39502fe941b285dd97b1.tar.xz
mariadb-3f619478f796eddbba6e39502fe941b285dd97b1.zip
Adding upstream version 1:10.11.6.upstream/1%10.11.6upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'mysql-test/main/invisible_field_debug.test')
-rw-r--r--mysql-test/main/invisible_field_debug.test292
1 files changed, 292 insertions, 0 deletions
diff --git a/mysql-test/main/invisible_field_debug.test b/mysql-test/main/invisible_field_debug.test
new file mode 100644
index 00000000..b8134811
--- /dev/null
+++ b/mysql-test/main/invisible_field_debug.test
@@ -0,0 +1,292 @@
+--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;