Commit e09e304b authored by Aleksey Midenkov's avatar Aleksey Midenkov

MDEV-16857 system-invisible row_end is displayed in SHOW INDEX

Skip system-invisible keypart in get_schema_stat_record().
parent f9194d02
......@@ -580,3 +580,22 @@ t2 CREATE TEMPORARY TABLE `t2` (
) ENGINE=DEFAULT_ENGINE DEFAULT CHARSET=latin1
drop temporary table t2;
drop table t1;
#
# MDEV-16857 system-invisible row_end is displayed in SHOW INDEX
#
create or replace table t1 (id int primary key, x int) with system versioning;
select table_schema, table_name, non_unique, index_schema, index_name, seq_in_index, column_name
from information_schema.statistics where table_name = 't1';
table_schema table_name non_unique index_schema index_name seq_in_index column_name
test t1 0 test PRIMARY 1 id
show index from t1;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
t1 0 PRIMARY 1 id # # # # # #
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`id` int(11) NOT NULL,
`x` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=DEFAULT_ENGINE DEFAULT CHARSET=latin1 WITH SYSTEM VERSIONING
drop table t1;
......@@ -439,3 +439,15 @@ show create table t1;
show create table t2;
drop temporary table t2;
drop table t1;
--echo #
--echo # MDEV-16857 system-invisible row_end is displayed in SHOW INDEX
--echo #
create or replace table t1 (id int primary key, x int) with system versioning;
select table_schema, table_name, non_unique, index_schema, index_name, seq_in_index, column_name
from information_schema.statistics where table_name = 't1';
--replace_column 6 # 7 # 8 # 9 # 10 # 11 #
show index from t1;
--replace_result $default_engine DEFAULT_ENGINE
show create table t1;
drop table t1;
......@@ -6676,6 +6676,16 @@ static int get_schema_stat_record(THD *thd, TABLE_LIST *tables,
LEX_CSTRING unknown= {STRING_WITH_LEN("?unknown field?") };
for (uint j=0 ; j < key_info->user_defined_key_parts ; j++,key_part++)
{
if (key_part->field->invisible >= INVISIBLE_SYSTEM &&
DBUG_EVALUATE_IF("test_completely_invisible", 0, 1))
{
/*
NOTE: we will get SEQ_IN_INDEX gap inside the result if this key_part
is not last (currently not possible). Though nothing is wrong with
that probably.
*/
continue;
}
restore_record(table, s->default_values);
table->field[0]->store(STRING_WITH_LEN("def"), cs);
table->field[1]->store(db_name->str, db_name->length, cs);
......
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