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).
This commit is contained in:
parent
5476eb0709
commit
5954e94fa7
@ -1057,9 +1057,9 @@
|
|||||||
|
|
||||||
CREATE TABLE proc (
|
CREATE TABLE proc (
|
||||||
db char(64) binary DEFAULT '' NOT NULL,
|
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,
|
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,
|
language enum('SQL') DEFAULT 'SQL' NOT NULL,
|
||||||
sql_data_access enum('CONTAINS_SQL') DEFAULT 'CONTAINS_SQL' NOT NULL,
|
sql_data_access enum('CONTAINS_SQL') DEFAULT 'CONTAINS_SQL' NOT NULL,
|
||||||
is_deterministic enum('YES','NO') DEFAULT 'NO' NOT NULL,
|
is_deterministic enum('YES','NO') DEFAULT 'NO' NOT NULL,
|
||||||
|
@ -1000,6 +1000,18 @@ select bug2674()|
|
|||||||
bug2674()
|
bug2674()
|
||||||
262136
|
262136
|
||||||
drop function bug2674|
|
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|
|
drop table if exists fac|
|
||||||
create table fac (n int unsigned not null primary key, f bigint unsigned)|
|
create table fac (n int unsigned not null primary key, f bigint unsigned)|
|
||||||
create procedure ifac(n int unsigned)
|
create procedure ifac(n int unsigned)
|
||||||
|
@ -1159,6 +1159,25 @@ create function bug2674 () returns int
|
|||||||
select bug2674()|
|
select bug2674()|
|
||||||
drop function 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
|
# Some "real" examples
|
||||||
|
@ -290,9 +290,9 @@ if test ! -f $mdata/proc.frm
|
|||||||
then
|
then
|
||||||
c_p="$c_p CREATE TABLE proc ("
|
c_p="$c_p CREATE TABLE proc ("
|
||||||
c_p="$c_p db char(64) binary DEFAULT '' NOT NULL,"
|
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 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 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 sql_data_access enum('CONTAINS_SQL') DEFAULT 'CONTAINS_SQL' NOT NULL,"
|
||||||
c_p="$c_p is_deterministic enum('YES','NO') DEFAULT 'NO' 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 (
|
CREATE TABLE IF NOT EXISTS proc (
|
||||||
db char(64) binary DEFAULT '' NOT NULL,
|
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,
|
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,
|
language enum('SQL') DEFAULT 'SQL' NOT NULL,
|
||||||
sql_data_access enum('CONTAINS_SQL') DEFAULT 'CONTAINS_SQL' NOT NULL,
|
sql_data_access enum('CONTAINS_SQL') DEFAULT 'CONTAINS_SQL' NOT NULL,
|
||||||
is_deterministic enum('YES','NO') DEFAULT 'NO' 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,
|
comment char(64) binary DEFAULT '' NOT NULL,
|
||||||
PRIMARY KEY (db,name,type)
|
PRIMARY KEY (db,name,type)
|
||||||
) comment='Stored Procedures';
|
) 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
|
else
|
||||||
{
|
{
|
||||||
ret= SP_DELETE_ROW_FAILED;
|
ret= SP_DELETE_ROW_FAILED;
|
||||||
|
nxtres= 0;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
} while (! (nxtres= table->file->index_next_same(table->record[0],
|
} while (! (nxtres= table->file->index_next_same(table->record[0],
|
||||||
|
Loading…
x
Reference in New Issue
Block a user