From a470fd7ba487de1a9a3b44085fa8c3db697d2878 Mon Sep 17 00:00:00 2001 From: Mattias Jonsson Date: Fri, 3 Oct 2008 20:08:40 +0200 Subject: [PATCH] Bug#37719: Crash if rename Archive table to same name with different case and then select Problem was that the archive share was using a case insensitive charset when comparing table names Solution was to use a case sensitive char set when the table names are case sensitive mysql-test/suite/parts/r/partition_mgm_lc0_archive.result: Bug#37719: Crash if rename Archive table to same name with different case and then select Updated to correct result. storage/archive/ha_archive.cc: Bug#37719: Crash if rename Archive table to same name with different case and then select system_charset_info is case insensitive, table_alias_charset depends on the filesystem/lower_case_table_names variable. since there could be two tables that used the same share, unpredicted things could happen. --- .../parts/r/partition_mgm_lc0_archive.result | 66 ------------------- storage/archive/ha_archive.cc | 2 +- 2 files changed, 1 insertion(+), 67 deletions(-) diff --git a/mysql-test/suite/parts/r/partition_mgm_lc0_archive.result b/mysql-test/suite/parts/r/partition_mgm_lc0_archive.result index 2bb6e7421b1..5350d11c7a1 100644 --- a/mysql-test/suite/parts/r/partition_mgm_lc0_archive.result +++ b/mysql-test/suite/parts/r/partition_mgm_lc0_archive.result @@ -157,22 +157,10 @@ tablea SELECT * FROM tablea; a 1 -1 10 -10 -11 -12 2 -2 -3 -4 -5 -6 -7 7 8 -8 -9 9 SHOW CREATE TABLE tablea; Table Create Table @@ -185,7 +173,6 @@ ALTER TABLE TableA REMOVE PARTITIONING; SELECT * FROM TableA; a 1 -1 10 11 12 @@ -195,10 +182,7 @@ a 5 6 7 -7 8 -8 -9 9 SHOW CREATE TABLE TableA; Table Create Table @@ -372,22 +356,10 @@ tablea SELECT * FROM tablea; a 1 -1 10 -10 -11 -12 2 -2 -3 -4 -5 -6 -7 7 8 -8 -9 9 SHOW CREATE TABLE tablea; Table Create Table @@ -400,21 +372,16 @@ ALTER TABLE TableA REMOVE PARTITIONING; SELECT * FROM TableA; a 1 -1 -10 10 11 12 2 -2 3 4 5 6 7 8 -8 -9 9 SHOW CREATE TABLE TableA; Table Create Table @@ -580,22 +547,10 @@ tablea SELECT * FROM tablea; a 1 -1 10 -10 -11 -12 2 -2 -3 -4 -5 -6 -7 7 8 -8 -9 9 SHOW CREATE TABLE tablea; Table Create Table @@ -608,22 +563,16 @@ ALTER TABLE TableA REMOVE PARTITIONING; SELECT * FROM TableA; a 1 -1 -10 10 11 12 2 -2 3 4 5 6 7 -7 8 -8 -9 9 SHOW CREATE TABLE TableA; Table Create Table @@ -783,19 +732,10 @@ tablea SELECT * FROM tablea; a 1 -1 10 -12 2 -3 -4 -5 -6 -7 7 8 -8 -9 9 SHOW CREATE TABLE tablea; Table Create Table @@ -808,19 +748,13 @@ ALTER TABLE TableA REMOVE PARTITIONING; SELECT * FROM TableA; a 1 -1 -10 12 -2 3 4 5 6 7 -7 8 -8 -9 9 SHOW CREATE TABLE TableA; Table Create Table diff --git a/storage/archive/ha_archive.cc b/storage/archive/ha_archive.cc index 967e315d4a4..7edfca53751 100644 --- a/storage/archive/ha_archive.cc +++ b/storage/archive/ha_archive.cc @@ -171,7 +171,7 @@ int archive_db_init(void *p) if (pthread_mutex_init(&archive_mutex, MY_MUTEX_INIT_FAST)) goto error; - if (hash_init(&archive_open_tables, system_charset_info, 32, 0, 0, + if (hash_init(&archive_open_tables, table_alias_charset, 32, 0, 0, (hash_get_key) archive_get_key, 0, 0)) { VOID(pthread_mutex_destroy(&archive_mutex));