Bug#38909 CREATE_OPTIONS in information_schema produces wrong results
table->partition_info is unitialized when we open frm file only. The fix is check share->partition_info_len which is set on frm opening stage.
This commit is contained in:
parent
3fa2673f19
commit
6c0b87f55e
@ -145,3 +145,9 @@ table_schema = "test" AND table_name = "t1";
|
|||||||
PARTITION_DESCRIPTION
|
PARTITION_DESCRIPTION
|
||||||
10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53
|
10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
drop table if exists t1;
|
||||||
|
create table t1 (f1 int key) partition by key(f1) partitions 2;
|
||||||
|
select create_options from information_schema.tables where table_schema="test";
|
||||||
|
create_options
|
||||||
|
partitioned
|
||||||
|
drop table t1;
|
||||||
|
@ -121,3 +121,13 @@ SHOW CREATE TABLE t1;
|
|||||||
SELECT PARTITION_DESCRIPTION FROM information_schema.partitions WHERE
|
SELECT PARTITION_DESCRIPTION FROM information_schema.partitions WHERE
|
||||||
table_schema = "test" AND table_name = "t1";
|
table_schema = "test" AND table_name = "t1";
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug#38909 CREATE_OPTIONS in information_schema produces wrong results
|
||||||
|
#
|
||||||
|
--disable_warnings
|
||||||
|
drop table if exists t1;
|
||||||
|
--enable_warnings
|
||||||
|
create table t1 (f1 int key) partition by key(f1) partitions 2;
|
||||||
|
select create_options from information_schema.tables where table_schema="test";
|
||||||
|
drop table t1;
|
||||||
|
@ -3511,6 +3511,7 @@ static int get_schema_tables_record(THD *thd, TABLE_LIST *tables,
|
|||||||
TABLE_SHARE *share= show_table->s;
|
TABLE_SHARE *share= show_table->s;
|
||||||
handler *file= show_table->file;
|
handler *file= show_table->file;
|
||||||
handlerton *tmp_db_type= share->db_type();
|
handlerton *tmp_db_type= share->db_type();
|
||||||
|
bool is_partitioned= FALSE;
|
||||||
if (share->tmp_table == SYSTEM_TMP_TABLE)
|
if (share->tmp_table == SYSTEM_TMP_TABLE)
|
||||||
table->field[3]->store(STRING_WITH_LEN("SYSTEM VIEW"), cs);
|
table->field[3]->store(STRING_WITH_LEN("SYSTEM VIEW"), cs);
|
||||||
else if (share->tmp_table)
|
else if (share->tmp_table)
|
||||||
@ -3527,7 +3528,10 @@ static int get_schema_tables_record(THD *thd, TABLE_LIST *tables,
|
|||||||
#ifdef WITH_PARTITION_STORAGE_ENGINE
|
#ifdef WITH_PARTITION_STORAGE_ENGINE
|
||||||
if (share->db_type() == partition_hton &&
|
if (share->db_type() == partition_hton &&
|
||||||
share->partition_info_len)
|
share->partition_info_len)
|
||||||
|
{
|
||||||
tmp_db_type= share->default_part_db_type;
|
tmp_db_type= share->default_part_db_type;
|
||||||
|
is_partitioned= TRUE;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
tmp_buff= (char *) ha_resolve_storage_engine_name(tmp_db_type);
|
tmp_buff= (char *) ha_resolve_storage_engine_name(tmp_db_type);
|
||||||
table->field[4]->store(tmp_buff, strlen(tmp_buff), cs);
|
table->field[4]->store(tmp_buff, strlen(tmp_buff), cs);
|
||||||
@ -3572,9 +3576,7 @@ static int get_schema_tables_record(THD *thd, TABLE_LIST *tables,
|
|||||||
NullS);
|
NullS);
|
||||||
}
|
}
|
||||||
#ifdef WITH_PARTITION_STORAGE_ENGINE
|
#ifdef WITH_PARTITION_STORAGE_ENGINE
|
||||||
if (show_table->s->db_type() == partition_hton &&
|
if (is_partitioned)
|
||||||
show_table->part_info != NULL &&
|
|
||||||
show_table->part_info->no_parts > 0)
|
|
||||||
ptr= strmov(ptr, " partitioned");
|
ptr= strmov(ptr, " partitioned");
|
||||||
#endif
|
#endif
|
||||||
if (share->transactional != HA_CHOICE_UNDEF)
|
if (share->transactional != HA_CHOICE_UNDEF)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user