Details
-
Bug
-
Status: Open (View Workflow)
-
Major
-
Resolution: Unresolved
-
11.2(EOL)
-
None
Description
Probably affects other versions too. It iterates the access to spider_share->key_hint in the else branch, but not the if branch:
int spider_mbase_share::convert_key_hint_str() |
{
|
spider_string *tmp_key_hint;
|
int roop_count; |
TABLE_SHARE *table_share = spider_share->table_share;
|
DBUG_ENTER("spider_mbase_share::convert_key_hint_str"); |
if (spider_share->access_charset->cset != system_charset_info->cset) |
{
|
/* need conversion */ |
for (roop_count = 0, tmp_key_hint = key_hint; |
roop_count < (int) table_share->keys; roop_count++, tmp_key_hint++) |
{
|
tmp_key_hint->length(0);
|
if (tmp_key_hint->append(spider_share->key_hint->ptr(), |
spider_share->key_hint->length(), system_charset_info))
|
DBUG_RETURN(HA_ERR_OUT_OF_MEM);
|
}
|
} else { |
for (roop_count = 0, tmp_key_hint = key_hint; |
roop_count < (int) table_share->keys; roop_count++, tmp_key_hint++) |
{
|
if (tmp_key_hint->copy(spider_share->key_hint[roop_count])) |
DBUG_RETURN(HA_ERR_OUT_OF_MEM);
|
}
|
}
|
DBUG_RETURN(0);
|
}
|
So something like the following would not use the key hint
--echo #
|
--echo # tmp
|
--echo #
|
--disable_query_log
|
--disable_result_log
|
--source ../../t/test_init.inc
|
--enable_result_log
|
--enable_query_log
|
|
evalp CREATE SERVER srv FOREIGN DATA WRAPPER mysql |
OPTIONS (SOCKET "$MASTER_1_MYSOCK", DATABASE 'test',user 'root'); |
|
create table t2 (c int, d int, key (c), key (d)); |
show create table t2; |
create table t1 (c int, d int, key (c), key (d)) ENGINE=Spider |
COMMENT='WRAPPER "mysql", srv "srv",TABLE "t2", idx001 "f d"'; |
show create table t1; |
/* 13 */ insert into t1 values (42, 23), (37, 93); |
select max(d) from t1; |
|
drop table t1, t2; |
|
drop server srv; |
|
--disable_query_log
|
--disable_result_log
|
--source ../../t/test_deinit.inc
|
--enable_result_log
|
--enable_query_log
|
--echo #
|
--echo # end of test tmp
|
--echo # |
Attachments
Issue Links
- relates to
-
MDEV-32001 Spider hint key does not really check the idx number
-
- Open
-