From 3dfbc35f45a8884e92284e099ffa78a2c6a2058f Mon Sep 17 00:00:00 2001
From: "sergefp@mysql.com" <>
Date: Sun, 29 Aug 2004 19:44:28 +0400
Subject: [PATCH] Fix for BUG#5242: Made SQL Syntax Prepared Statement names
 case-insensitive.

---
 mysql-test/r/ps.result | 18 ++++++++++++++++++
 mysql-test/t/ps.test   | 21 +++++++++++++++++++++
 sql/sql_class.cc       |  2 +-
 3 files changed, 40 insertions(+), 1 deletion(-)

diff --git a/mysql-test/r/ps.result b/mysql-test/r/ps.result
index 98095930669..e161904cd6f 100644
--- a/mysql-test/r/ps.result
+++ b/mysql-test/r/ps.result
@@ -241,3 +241,21 @@ prepare stmt1 from "select * from t1 into outfile 'f1.txt'";
 execute stmt1;
 deallocate prepare stmt1;
 drop table t1;
+prepare stmt1 from 'select 1';
+prepare STMT1 from 'select 2';
+execute sTmT1;
+2
+2
+deallocate prepare StMt1;
+deallocate prepare Stmt1;
+ERROR HY000: Unknown prepared statement handler (Stmt1) given to DEALLOCATE PREPARE
+set names utf8;
+prepare `ü` from 'select 1234';
+execute `ü` ;
+1234
+1234
+set names latin1;
+execute `ü`;
+1234
+1234
+set names default;
diff --git a/mysql-test/t/ps.test b/mysql-test/t/ps.test
index 8b9704f2a06..e54bf8076e0 100644
--- a/mysql-test/t/ps.test
+++ b/mysql-test/t/ps.test
@@ -240,3 +240,24 @@ prepare stmt1 from "select * from t1 into outfile 'f1.txt'";
 execute stmt1;
 deallocate prepare stmt1;
 drop table t1;
+
+# 
+# BUG#5242 "Prepared statement names are case sensitive"
+#
+prepare stmt1 from 'select 1';
+prepare STMT1 from 'select 2';
+execute sTmT1;
+deallocate prepare StMt1;
+
+--error 1243
+deallocate prepare Stmt1;
+
+# also check that statement names are in right charset.
+set names utf8;
+prepare `ü` from 'select 1234';
+execute `ü` ;
+set names latin1;
+execute `ü`;
+set names default;
+
+
diff --git a/sql/sql_class.cc b/sql/sql_class.cc
index 26e2cebb909..c7d8e81d11b 100644
--- a/sql/sql_class.cc
+++ b/sql/sql_class.cc
@@ -1503,7 +1503,7 @@ Statement_map::Statement_map() :
   hash_init(&st_hash, default_charset_info, START_STMT_HASH_SIZE, 0, 0,
             get_statement_id_as_hash_key,
             delete_statement_as_hash_key, MYF(0));
-  hash_init(&names_hash, &my_charset_bin, START_NAME_HASH_SIZE, 0, 0,
+  hash_init(&names_hash, system_charset_info, START_NAME_HASH_SIZE, 0, 0,
             (hash_get_key) get_stmt_name_hash_key,
             NULL,MYF(0));
 }
-- 
2.30.9