1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-27 18:02:13 +03:00

Fixed LP bug #725050.

The bug in the function print_keyuse() caused crashes if
hash join could be used. It happened because the function
ignored the fact that KEYUSE structures could be created
for hash joins as well.
This commit is contained in:
Igor Babaev
2011-02-27 22:37:46 -08:00
parent 1b03a028fc
commit 0f0360e21f
3 changed files with 42 additions and 2 deletions

View File

@ -231,14 +231,18 @@ void print_keyuse(KEYUSE *keyuse)
char buff[256];
char buf2[64];
const char *fieldname;
JOIN_TAB *join_tab= keyuse->table->reginfo.join_tab;
KEY *key_info= join_tab->get_keyinfo_by_key_no(keyuse->key);
String str(buff,(uint32) sizeof(buff), system_charset_info);
str.length(0);
keyuse->val->print(&str, QT_ORDINARY);
str.append('\0');
if (keyuse->keypart == FT_KEYPART)
if (keyuse->is_for_hash_join())
fieldname= keyuse->table->field[keyuse->keypart]->field_name;
else if (keyuse->keypart == FT_KEYPART)
fieldname= "FT_KEYPART";
else
fieldname= keyuse->table->key_info[keyuse->key].key_part[keyuse->keypart].field->field_name;
fieldname= key_info->key_part[keyuse->keypart].field->field_name;
longlong2str(keyuse->used_tables, buf2, 16, 0);
DBUG_LOCK_FILE;
fprintf(DBUG_FILE, "KEYUSE: %s.%s=%s optimize: %u used_tables: %s "