Commit 220494bd authored by unknown's avatar unknown

Fixed BUG#3259: Stored procedure names are case sensitive.

Procedure names were unintentionally case-sensitive when read from the database
(but case-insensitive when fetched from the cache).
Note that the DB-part of qualified names is still case-sensitive (for consistency
with other usage in mysql).


Docs/sp-imp-spec.txt:
  Removed "binary" from name and specific_name columns in mysql.proc definition.
mysql-test/r/sp.result:
  Test case for BUG#3259; SP names were supposed to be case-insensitive.
mysql-test/t/sp.test:
  Test case for BUG#3259; SP names were supposed to be case-insensitive.
scripts/mysql_create_system_tables.sh:
  Removed "binary" from name and specific_name columns in mysql.proc definition.
scripts/mysql_fix_privilege_tables.sql:
  Removed "binary" from name and specific_name columns in mysql.proc definition,
  and added a corresponding ALTER TABLE to fix existing tables.
sql/sp.cc:
  Added missing init of variable.
parent 645d19f6
......@@ -1057,9 +1057,9 @@
CREATE TABLE proc (
db char(64) binary DEFAULT '' NOT NULL,
name char(64) binary DEFAULT '' NOT NULL,
name char(64) DEFAULT '' NOT NULL,
type enum('FUNCTION','PROCEDURE') NOT NULL,
specific_name char(64) binary DEFAULT '' NOT NULL,
specific_name char(64) DEFAULT '' NOT NULL,
language enum('SQL') DEFAULT 'SQL' NOT NULL,
sql_data_access enum('CONTAINS_SQL') DEFAULT 'CONTAINS_SQL' NOT NULL,
is_deterministic enum('YES','NO') DEFAULT 'NO' NOT NULL,
......
......@@ -1000,6 +1000,18 @@ select bug2674()|
bug2674()
262136
drop function bug2674|
create procedure bug3259_1 () begin end|
create procedure BUG3259_2 () begin end|
create procedure Bug3259_3 () begin end|
call BUG3259_1()|
call BUG3259_1()|
call bug3259_2()|
call Bug3259_2()|
call bug3259_3()|
call bUG3259_3()|
drop procedure bUg3259_1|
drop procedure BuG3259_2|
drop procedure BUG3259_3|
drop table if exists fac|
create table fac (n int unsigned not null primary key, f bigint unsigned)|
create procedure ifac(n int unsigned)
......
......@@ -1159,6 +1159,25 @@ create function bug2674 () returns int
select bug2674()|
drop function bug2674|
#
# BUG#3259
#
create procedure bug3259_1 () begin end|
create procedure BUG3259_2 () begin end|
create procedure Bug3259_3 () begin end|
call BUG3259_1()|
call BUG3259_1()|
call bug3259_2()|
call Bug3259_2()|
call bug3259_3()|
call bUG3259_3()|
drop procedure bUg3259_1|
drop procedure BuG3259_2|
drop procedure BUG3259_3|
#
# Some "real" examples
......
......@@ -290,9 +290,9 @@ if test ! -f $mdata/proc.frm
then
c_p="$c_p CREATE TABLE proc ("
c_p="$c_p db char(64) binary DEFAULT '' NOT NULL,"
c_p="$c_p name char(64) binary DEFAULT '' NOT NULL,"
c_p="$c_p name char(64) DEFAULT '' NOT NULL,"
c_p="$c_p type enum('FUNCTION','PROCEDURE') NOT NULL,"
c_p="$c_p specific_name char(64) binary DEFAULT '' NOT NULL,"
c_p="$c_p specific_name char(64) DEFAULT '' NOT NULL,"
c_p="$c_p language enum('SQL') DEFAULT 'SQL' NOT NULL,"
c_p="$c_p sql_data_access enum('CONTAINS_SQL') DEFAULT 'CONTAINS_SQL' NOT NULL,"
c_p="$c_p is_deterministic enum('YES','NO') DEFAULT 'NO' NOT NULL,"
......
......@@ -141,9 +141,9 @@ unique index (name)
CREATE TABLE IF NOT EXISTS proc (
db char(64) binary DEFAULT '' NOT NULL,
name char(64) binary DEFAULT '' NOT NULL,
name char(64) DEFAULT '' NOT NULL,
type enum('FUNCTION','PROCEDURE') NOT NULL,
specific_name char(64) binary DEFAULT '' NOT NULL,
specific_name char(64) DEFAULT '' NOT NULL,
language enum('SQL') DEFAULT 'SQL' NOT NULL,
sql_data_access enum('CONTAINS_SQL') DEFAULT 'CONTAINS_SQL' NOT NULL,
is_deterministic enum('YES','NO') DEFAULT 'NO' NOT NULL,
......@@ -179,3 +179,7 @@ CREATE TABLE IF NOT EXISTS proc (
comment char(64) binary DEFAULT '' NOT NULL,
PRIMARY KEY (db,name,type)
) comment='Stored Procedures';
# Correct the name fields to not binary
ALTER TABLE proc MODIFY name char(64) DEFAULT '' NOT NULL,
MODIFY specific_name char(64) DEFAULT '' NOT NULL;
......@@ -637,6 +637,7 @@ sp_drop_db_routines(THD *thd, char *db)
else
{
ret= SP_DELETE_ROW_FAILED;
nxtres= 0;
break;
}
} while (! (nxtres= table->file->index_next_same(table->record[0],
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment