FLUSH STATUS;
create table t1(abc int primary key, xyz int invisible);
SHOW STATUS LIKE 'Feature_invisible_columns';
Variable_name Value
Feature_invisible_columns 1
desc t1;
Field Type Null Key Default Extra
abc int(11) NO PRI NULL
xyz int(11) YES NULL INVISIBLE
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`abc` int(11) NOT NULL,
`xyz` int(11) DEFAULT NULL INVISIBLE,
PRIMARY KEY (`abc`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
select TABLE_CATALOG,TABLE_SCHEMA,TABLE_NAME,COLUMN_NAME,EXTRA from INFORMATION_SCHEMA.COLUMNS where TABLE_SCHEMA='test'and TABLE_NAME='t1';
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME EXTRA
def test t1 abc
def test t1 xyz INVISIBLE
drop table t1;
create table t1(a1 int invisible); ERROR42000: A table must have at least 1 column
create table t1(a1 blob,invisible(a1)); ERROR42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '(a1))' at line 1
create table t1(a1 int primary key invisible ,a2 int unique invisible , a3 blob,a4 int not null invisible unique); ERROR HY000: Invisible column `a1` must have a default value
create table t1(abc int not null invisible); ERROR42000: A table must have at least 1 column
MDEV-14849 CREATE + ALTER with user-invisible columns produce invalid table definition
create orreplace table t1 (pk int auto_increment primary key invisible, i int);
alter table t1 modify pk int invisible; ERROR HY000: Invisible column `pk` must have a default value
drop table t1;
create table t1(a int invisible, b int);
insert into t1 values(1);
insert into t1(a) values(2);
insert into t1(b) values(3);
insert into t1(a,b) values(5,5);
select * from t1;
b 1
NULL 3 5
select a,b from t1;
a b
NULL 1 2 NULL
NULL 3 55
delete from t1;
insert into t1 values(1),(2),(3),(4);
select * from t1;
b 1 2 3 4
select a from t1;
a
NULL
NULL
NULL
NULL
drop table t1;
#more complex case of invisible
create table t1(a int , b int invisible , c int invisible auto_increment unique, d blob , e int unique, f int);
desc t1;
Field Type Null Key Default Extra
a int(11) YES NULL
b int(11) YES NULL INVISIBLE
c int(11) NO PRI NULL auto_increment, INVISIBLE
d blob YES NULL
e int(11) YES UNI NULL
f int(11) YES NULL
insert into t1 values(1,'d blob',1,1),(1,'d blob',11,1),(1,'d blob',2,1),(1,'d blob',3,1),(1,'d blob',41,1);
select * from t1;
a d e f 1 d blob 11 1 d blob 111 1 d blob 21 1 d blob 31 1 d blob 411
select a,b,c,d,e,f from t1;
a b c d e f 1 NULL 1 d blob 11 1 NULL 2 d blob 111 1 NULL 3 d blob 21 1 NULL 4 d blob 31 1 NULL 5 d blob 411
drop table t1;
#more complex case of invisible with sql_mode=NO_AUTO_VALUE_ON_ZERO set sql_mode='NO_AUTO_VALUE_ON_ZERO';
create table t1(a int , b int invisible , c int invisible auto_increment unique, d blob , e int unique, f int);
desc t1;
Field Type Null Key Default Extra
a int(11) YES NULL
b int(11) YES NULL INVISIBLE
c int(11) NO PRI NULL auto_increment, INVISIBLE
d blob YES NULL
e int(11) YES UNI NULL
f int(11) YES NULL
insert into t1 values(1,'d blob',1,1),(1,'d blob',11,1),(1,'d blob',2,1),(1,'d blob',3,1),(1,'d blob',41,1);
select * from t1;
a d e f 1 d blob 11 1 d blob 111 1 d blob 21 1 d blob 31 1 d blob 411
select a,b,c,d,e,f from t1;
a b c d e f 1 NULL 1 d blob 11 1 NULL 2 d blob 111 1 NULL 3 d blob 21 1 NULL 4 d blob 31 1 NULL 5 d blob 411
drop table t1; set sql_mode='';
create table sdsdsd(a int , b int, invisible(a,b)); ERROR42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '(a,b))' at line 1
create table t1(a int,abc int as (a mod 3) virtual invisible);
desc t1;
Field Type Null Key Default Extra
a int(11) YES NULL
abc int(11) YES NULL VIRTUAL GENERATED, INVISIBLE
insert into t1 values(1,default); ERROR21S01: Column count doesn't match value count at row 1
insert into t1 values(1),(22),(233);
select * from t1;
a 1 22 233
select a,abc from t1;
a abc 11 221 2332
drop table t1;
create table t1(abc int primary key invisible auto_increment, a int);
desc t1;
Field Type Null Key Default Extra
abc int(11) NO PRI NULL auto_increment, INVISIBLE
a int(11) YES NULL
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`abc` int(11) NOT NULL AUTO_INCREMENT INVISIBLE,
`a` int(11) DEFAULT NULL,
PRIMARY KEY (`abc`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
insert into t1 values(1);
insert into t1 values(2);
insert into t1 values(3);
select * from t1;
a 1 2 3
select abc,a from t1;
abc a 11 22 33
delete from t1;
insert into t1 values(1),(2),(3),(4),(6);
select abc,a from t1;
abc a 41 52 63 74 86
drop table t1;
create table t1(abc int);
alter table t1 change abc ss int invisible; ERROR42000: A table must have at least 1 column
alter table t1 add column xyz int;
alter table t1 modify column abc int ;
desc t1;
Field Type Null Key Default Extra
abc int(11) YES NULL
xyz int(11) YES NULL
insert into t1 values(22); ERROR21S01: Column count doesn't match value count at row 1
alter table t1 modify column abc int invisible;
desc t1;
Field Type Null Key Default Extra
abc int(11) YES NULL INVISIBLE
xyz int(11) YES NULL
insert into t1 values(12);
drop table t1;
#some test on copy table structure with table data;
#table with invisible fields and unique keys;
create table t1(a int , b int invisible , c int invisible auto_increment unique, d blob , e int unique, f int);
desc t1;
Field Type Null Key Default Extra
a int(11) YES NULL
b int(11) YES NULL INVISIBLE
c int(11) NO PRI NULL auto_increment, INVISIBLE
d blob YES NULL
e int(11) YES UNI NULL
f int(11) YES NULL
insert into t1 values(1,'d blob',1,1),(1,'d blob',11,1),(1,'d blob',2,1),(1,'d blob',3,1),(1,'d blob',41,1);
select * from t1;
a d e f 1 d blob 11 1 d blob 111 1 d blob 21 1 d blob 31 1 d blob 411
select a,b,c,d,e,f from t1;
a b c d e f 1 NULL 1 d blob 11 1 NULL 2 d blob 111 1 NULL 3 d blob 21 1 NULL 4 d blob 31 1 NULL 5 d blob 411
#this won't copy invisible fields and keys;
create table t2 as select * from t1;
desc t2;
Field Type Null Key Default Extra
a int(11) YES NULL
d blob YES NULL
e int(11) YES NULL
f int(11) YES NULL
select * from t2;
a d e f 1 d blob 11 1 d blob 111 1 d blob 21 1 d blob 31 1 d blob 411
select a,b,c,d,e,f from t2; ERROR42S22: Unknown column 'b' in 'SELECT'
drop table t2;
#now this will copy invisible fields
create table t2 as select a,b,c,d,e,f from t1;
desc t2;
Field Type Null Key Default Extra
a int(11) YES NULL
b int(11) YES NULL
c int(11) NO 0
d blob YES NULL
e int(11) YES NULL
f int(11) YES NULL
select * from t2;
a b c d e f 1 NULL 1 d blob 11 1 NULL 2 d blob 111 1 NULL 3 d blob 21 1 NULL 4 d blob 31 1 NULL 5 d blob 411
select a,b,c,d,e,f from t2;
a b c d e f 1 NULL 1 d blob 11 1 NULL 2 d blob 111 1 NULL 3 d blob 21 1 NULL 4 d blob 31 1 NULL 5 d blob 411
drop table t2,t1;
#some test related to copy of data from one table to another;
create table t1(a int , b int invisible , c int invisible auto_increment unique, d blob , e int unique, f int);
insert into t1 values(1,'d blob',1,1),(1,'d blob',11,1),(1,'d blob',2,1),(1,'d blob',3,1),(1,'d blob',41,1);
select a,b,c,d,e,f from t1;
a b c d e f 1 NULL 1 d blob 11 1 NULL 2 d blob 111 1 NULL 3 d blob 21 1 NULL 4 d blob 31 1 NULL 5 d blob 411
create table t2(a int , b int invisible , c int invisible , d blob , e int unique, f int);
insert into t2 select * from t1;
select a,b,c,d,e,f from t2;
a b c d e f 1 NULL NULL d blob 11 1 NULL NULL d blob 111 1 NULL NULL d blob 21 1 NULL NULL d blob 31 1 NULL NULL d blob 411
truncate t2;
insert into t2 (a,b,c,d,e,f) select a,b,c,d,e,f from t1;
select a,b,c,d,e,f from t2;
a b c d e f 1 NULL 1 d blob 11 1 NULL 2 d blob 111 1 NULL 3 d blob 21 1 NULL 4 d blob 31 1 NULL 5 d blob 411
truncate t2;
drop table t1,t2;
#some test related to creating view on table with invisible column;
create table t1(a int , b int invisible , c int invisible auto_increment unique, d blob , e int unique, f int);
insert into t1 values(1,'d blob',1,1),(1,'d blob',11,1),(1,'d blob',2,1),(1,'d blob',3,1),(1,'d blob',41,1);
create view v as select * from t1;
desc v;
Field Type Null Key Default Extra
a int(11) YES NULL
d blob YES NULL
e int(11) YES NULL
f int(11) YES NULL
select * from v;
a d e f 1 d blob 11 1 d blob 111 1 d blob 21 1 d blob 31 1 d blob 411
#v does not have invisible column;
select a,b,c,d,e,f from v; ERROR42S22: Unknown column 'b' in 'SELECT'
insert into v values(1,21,32,4);
select * from v;
a d e f 1 d blob 11 1 d blob 111 1 d blob 21 1 d blob 31 1 d blob 411 121324
insert into v(a,b,c,d,e,f) values(1,12,3,4,5,6); ERROR42S22: Unknown column 'b' in 'INSERT INTO'
drop view v;
create view v as select a,b,c,d,e,f from t1;
desc v;
Field Type Null Key Default Extra
a int(11) YES NULL
b int(11) YES NULL
c int(11) NO 0
d blob YES NULL
e int(11) YES NULL
f int(11) YES NULL
select * from v;
a b c d e f 1 NULL 1 d blob 11 1 NULL 2 d blob 111 1 NULL 3 d blob 21 1 NULL 4 d blob 31 1 NULL 5 d blob 411 1 NULL 621324
#v does have invisible column but they aren't invisible anymore.
select a,b,c,d,e,f from v;
a b c d e f 1 NULL 1 d blob 11 1 NULL 2 d blob 111 1 NULL 3 d blob 21 1 NULL 4 d blob 31 1 NULL 5 d blob 411 1 NULL 621324
insert into v values(1,26,33,4,45,66);
select a,b,c,d,e,f from v;
a b c d e f 1 NULL 1 d blob 11 1 NULL 2 d blob 111 1 NULL 3 d blob 21 1 NULL 4 d blob 31 1 NULL 5 d blob 411 1 NULL 621324 1263344566
insert into v(a,b,c,d,e,f) values(1,32,31,41,5,6);
select a,b,c,d,e,f from v;
a b c d e f 1 NULL 1 d blob 11 1 NULL 2 d blob 111 1 NULL 3 d blob 21 1 NULL 4 d blob 31 1 NULL 5 d blob 411 1 NULL 621324 1263344566 132314156
drop view v;
drop table t1;
#now invisible column in where and some join query
create table t1 (a int unique , b int invisible unique, c int unique invisible);
insert into t1(a,b,c) values(1,1,1);
insert into t1(a,b,c) values(2,2,2);
insert into t1(a,b,c) values(3,3,3);
insert into t1(a,b,c) values(4,4,4);
insert into t1(a,b,c) values(21,21,26);
insert into t1(a,b,c) values(31,31,35);
insert into t1(a,b,c) values(41,41,45);
insert into t1(a,b,c) values(22,22,24);
insert into t1(a,b,c) values(32,32,33);
insert into t1(a,b,c) values(42,42,43);
explain select * from t1 where b=3;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 const b b 5 const 1
select * from t1 where b=3;
a 3
explain select * from t1 where c=3;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 const c c 5 const 1
select * from t1 where c=3;
a 3
create table t2 as select a,b,c from t1;
desc t2;
Field Type Null Key Default Extra
a int(11) YES NULL
b int(11) YES NULL
c int(11) YES NULL
explain select * from t1,t2 where t1.b = t2.c and t1.c = t2.b;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t2 ALL NULL NULL NULL NULL 10 Using where 1 SIMPLE t1 eq_ref b,c b 5 test.t2.c 1 Using where
select * from t1,t2 where t1.b = t2.c and t1.c = t2.b;
a a b c 1111 2222 3333 4444
drop table t1,t2;
#Unhide invisible columns
create table t1 (a int primary key, b int invisible, c int invisible unique);
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) NOT NULL,
`b` int(11) DEFAULT NULL INVISIBLE,
`c` int(11) DEFAULT NULL INVISIBLE,
PRIMARY KEY (`a`),
UNIQUE KEY `c` (`c`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
desc t1;
Field Type Null Key Default Extra
a int(11) NO PRI NULL
b int(11) YES NULL INVISIBLE
c int(11) YES UNI NULL INVISIBLE
alter table t1 modify column b int;
desc t1;
Field Type Null Key Default Extra
a int(11) NO PRI NULL
b int(11) YES NULL
c int(11) YES UNI NULL INVISIBLE
alter table t1 change column c d int;
desc t1;
Field Type Null Key Default Extra
a int(11) NO PRI NULL
b int(11) YES NULL
d int(11) YES UNI NULL
drop table t1;
SHOW STATUS LIKE 'Feature_invisible_columns';
Variable_name Value
Feature_invisible_columns 54
#invisible is non reserved
create table t1(a int unique , invisible int invisible, c int );
desc t1;
Field Type Null Key Default Extra
a int(11) YES UNI NULL
invisible int(11) YES NULL INVISIBLE
c int(11) YES NULL
alter table t1 change column invisible hid int invisible;
desc t1;
Field Type Null Key Default Extra
a int(11) YES UNI NULL
hid int(11) YES NULL INVISIBLE
c int(11) YES NULL
drop table t1;
CREATE TABLE t1 (b int);
INSERT t1 values(1);
INSERT t1 values(2);
INSERT t1 values(3);
INSERT t1 values(4);
INSERT t1 values(5);
CREATE TABLE t2 (a int invisible) SELECT * FROM t1;
select * from t2 order by b;
b 1 2 3 4 5
select a,b from t2 order by b;
a b
NULL 1
NULL 2
NULL 3
NULL 4
NULL 5
CREATE TABLE t3 (b int, a int invisible) SELECT * FROM t1;
select * from t3 order by b;
b 1 2 3 4 5
select a,b from t3 order by b;
a b
NULL 1
NULL 2
NULL 3
NULL 4
NULL 5
CREATE TABLE t4 (b int invisible) SELECT * FROM t1; ERROR42000: A table must have at least 1 column
CREATE TABLE t5 (a int invisible) SELECT b as a FROM t1; ERROR42000: A table must have at least 1 column
drop table t1,t2,t3;
create table t1 (a int , b int invisible default 3, c int , d int invisible default 6);
CREATE PROCEDURE
insert_t1(a int, b int)
MODIFIES SQL DATA
insert into t1 values(a,b);
//
call insert_t1(1,1);
call insert_t1(2,2);
select * from t1 order by a;
a c 11 22
select a,b,c,d from t1 order by a;
a b c d 1316 2326
DROP PROCEDURE insert_t1;
delete from t1;
prepare insert_1 from "insert into t1 values(@a,@c)";
prepare insert_2 from "insert into t1(a,b,c) values(@a,@b,@c)"; set @a=1, @c=1;
execute insert_1; set @a=2,@b=2, @c=2;
execute insert_2;
select a,b,c,d from t1 order by a;
a b c d 1316 2226
drop table t1;
create table t1(a int default 5 invisible, b int);
create table t2(a int default (b+11) invisible, b int);
insert into t1 values(1);
select a,b from t1;
a b 51
insert into t2 values(1);
select a,b from t2;
a b 121
drop table t1,t2;
create table t1 (a int invisible, b int, c int);
create table t2 (a int, b int, d int);
insert t1 (a,b,c) values (0,2,3), (10, 20, 30);
insert t2 (a,b,d) values (1,2,4), (10, 30, 40);
select * from t1 join t2 using (a);
b c b d 20303040
select * from t1 natural join t2;
b c a d 2314
drop table t1, t2;
CREATE TABLE t1 (c CHAR(3), t TIMESTAMP invisible);
INSERT INTO t1 (c,t) VALUES ('foo','2000-01-01 00:00:00');
CREATE TRIGGER tr BEFORE INSERT ON t1 FOR EACH ROW SET @a= 1;
INSERT INTO t1 SELECT * FROM t1;
DROP TABLE t1;
create orreplace table t1 (a int, b int invisible);
insert into t1 values (1),(2);
select * from t1 into outfile 'f';
load data infile 'f' into table t1;
select a,b from t1;
a b 1 NULL 2 NULL 1 NULL 2 NULL
load data infile 'f' into table t1 (a,@v) SET b=@v;
select a,b from t1;
a b 1 NULL 2 NULL 1 NULL 2 NULL 1 NULL 2 NULL
load data infile 'f' into table t1 (a,@v) SET b=a;
select a,b from t1;
a b 1 NULL 2 NULL 1 NULL 2 NULL 1 NULL 2 NULL 11 22
truncate table t1;
insert into t1(a,b) values (1,1),(2,2);
select a,b from t1 into outfile 'a';
load data infile 'a' into table t1(a,b);
select a,b from t1;
a b 11 22 11 22
load data infile 'a' into table t1 (a,@v) SET b=@v;
select a,b from t1;
a b 11 22 11 22 11 22
load data infile 'a' into table t1 (a,@v) SET b=@v+2;
select a,b from t1;
a b 11 22 11 22 11 22 13 24
drop table t1;
#
# MDEV-23467 SIGSEGV in fill_record/fill_record_n_invoke_before_triggers on INSERT DELAYED
#
create table t1 (a int, b int invisible);
insert delayed into t1 values (1);
drop table t1;
#
# MDEV-25891 Computed default for INVISIBLE column is ignored in INSERT
#
create table t1(
a int,
x int default (a),
y int default (a) invisible,
z int default (33) invisible);
insert into t1 values (1, default);
insert into t1 (a) values (2);
select a, x, y, z from t1;
a x y z 11133 22233
drop table t1;
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.1 Sekunden
(vorverarbeitet am 2026-10-08)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.