diff options
Diffstat (limited to 'sql/table.cc')
-rw-r--r-- | sql/table.cc | 23 |
1 files changed, 11 insertions, 12 deletions
diff --git a/sql/table.cc b/sql/table.cc index 8505b15459b..7f80b95c954 100644 --- a/sql/table.cc +++ b/sql/table.cc @@ -363,25 +363,24 @@ int open_table_def(THD *thd, TABLE_SHARE *share, uint db_flags) error= open_binary_frm(thd, share, head, file); *root_ptr= old_root; - if (share->db.length == 5 && - !my_strcasecmp(system_charset_info, share->db.str, "mysql")) + if (share->db.length == 5 && !(lower_case_table_names ? + my_strcasecmp(system_charset_info, share->db.str, "mysql") : + strcmp(share->db.str, "mysql"))) { /* We can't mark all tables in 'mysql' database as system since we don't allow to lock such tables for writing with any other tables (even with other system tables) and some privilege tables need this. */ - if (!my_strcasecmp(system_charset_info, share->table_name.str, "proc")) + if (!(lower_case_table_names ? + my_strcasecmp(system_charset_info, share->table_name.str, "proc") : + strcmp(share->table_name.str, "proc"))) share->system_table= 1; else { - if (!my_strcasecmp(system_charset_info, share->table_name.str, - "general_log")) - share->log_table= QUERY_LOG_GENERAL; - else - if (!my_strcasecmp(system_charset_info, share->table_name.str, - "slow_log")) - share->log_table= QUERY_LOG_SLOW; + share->log_table= check_if_log_table(share->db.length, share->db.str, + share->table_name.length, + share->table_name.str, 0); } } error_given= 1; @@ -480,7 +479,7 @@ static int open_binary_frm(THD *thd, TABLE_SHARE *share, uchar *head, sql_print_warning("'%s' had no or invalid character set, " "and default character set is multi-byte, " "so character column sizes may have changed", - share->path); + share->path.str); } share->table_charset= default_charset_info; } @@ -1182,7 +1181,7 @@ static int open_binary_frm(THD *thd, TABLE_SHARE *share, uchar *head, as we need to test for NULL = NULL. */ if (field->real_maybe_null()) - key_part->key_part_flag|= HA_PART_KEY_SEG; + key_part->key_part_flag|= HA_NULL_PART; } keyinfo->usable_key_parts= usable_parts; // Filesort |