Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
MariaDB
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nexedi
MariaDB
Commits
2c36f4c8
Commit
2c36f4c8
authored
Apr 09, 2005
by
geert@kriem.kemuri.org
Browse files
Options
Browse Files
Download
Plain Diff
Merge gvanderkelen@bk-internal.mysql.com:/home/bk/mysql-5.0
into kriem.kemuri.org:/home/geert/MySQL/mysql-5.0
parents
e5c607e0
dcc40a08
Changes
19
Hide whitespace changes
Inline
Side-by-side
Showing
19 changed files
with
416 additions
and
16 deletions
+416
-16
BitKeeper/etc/logging_ok
BitKeeper/etc/logging_ok
+1
-0
VC++Files/client/mysqlclient.dsp
VC++Files/client/mysqlclient.dsp
+8
-0
VC++Files/client/mysqlclient_ia64.dsp
VC++Files/client/mysqlclient_ia64.dsp
+8
-0
VC++Files/libmysql/libmysql.dsp
VC++Files/libmysql/libmysql.dsp
+8
-0
VC++Files/libmysql/libmysql_ia64.dsp
VC++Files/libmysql/libmysql_ia64.dsp
+8
-0
VC++Files/strings/strings.dsp
VC++Files/strings/strings.dsp
+8
-0
VC++Files/strings/strings_ia64.dsp
VC++Files/strings/strings_ia64.dsp
+8
-0
include/config-win.h
include/config-win.h
+2
-0
mysql-test/r/sp-error.result
mysql-test/r/sp-error.result
+54
-0
mysql-test/r/sp.result
mysql-test/r/sp.result
+65
-0
mysql-test/t/sp-error.test
mysql-test/t/sp-error.test
+72
-0
mysql-test/t/sp.test
mysql-test/t/sp.test
+83
-0
sql/ha_ndbcluster.cc
sql/ha_ndbcluster.cc
+1
-1
sql/share/errmsg.txt
sql/share/errmsg.txt
+2
-1
sql/sp_pcontext.cc
sql/sp_pcontext.cc
+37
-0
sql/sp_pcontext.h
sql/sp_pcontext.h
+10
-0
sql/sp_rcontext.cc
sql/sp_rcontext.cc
+6
-6
sql/sql_udf.cc
sql/sql_udf.cc
+5
-2
sql/sql_yacc.yy
sql/sql_yacc.yy
+30
-6
No files found.
BitKeeper/etc/logging_ok
View file @
2c36f4c8
...
@@ -9,6 +9,7 @@ Sinisa@sinisa.nasamreza.org
...
@@ -9,6 +9,7 @@ Sinisa@sinisa.nasamreza.org
WAX@sergbook.mysql.com
WAX@sergbook.mysql.com
acurtis@ltantony.rdg.cyberkinetica.homeunix.net
acurtis@ltantony.rdg.cyberkinetica.homeunix.net
acurtis@pcgem.rdg.cyberkinetica.com
acurtis@pcgem.rdg.cyberkinetica.com
acurtis@xiphis.org
administrador@light.hegel.local
administrador@light.hegel.local
ahlentz@co3064164-a.rochd1.qld.optusnet.com.au
ahlentz@co3064164-a.rochd1.qld.optusnet.com.au
akishkin@work.mysql.com
akishkin@work.mysql.com
...
...
VC++Files/client/mysqlclient.dsp
View file @
2c36f4c8
...
@@ -147,6 +147,10 @@ SOURCE="..\strings\ctype-bin.c"
...
@@ -147,6 +147,10 @@ SOURCE="..\strings\ctype-bin.c"
# End Source File
# End Source File
# Begin Source File
# Begin Source File
SOURCE="..\strings\ctype-cp932.c"
# End Source File
# Begin Source File
SOURCE="..\strings\ctype-czech.c"
SOURCE="..\strings\ctype-czech.c"
# End Source File
# End Source File
# Begin Source File
# Begin Source File
...
@@ -155,6 +159,10 @@ SOURCE="..\strings\ctype-euc_kr.c"
...
@@ -155,6 +159,10 @@ SOURCE="..\strings\ctype-euc_kr.c"
# End Source File
# End Source File
# Begin Source File
# Begin Source File
SOURCE="..\strings\ctype-eucjpms.c"
# End Source File
# Begin Source File
SOURCE="..\strings\ctype-extra.c"
SOURCE="..\strings\ctype-extra.c"
# End Source File
# End Source File
# Begin Source File
# Begin Source File
...
...
VC++Files/client/mysqlclient_ia64.dsp
View file @
2c36f4c8
...
@@ -147,6 +147,10 @@ SOURCE="..\strings\ctype-bin.c"
...
@@ -147,6 +147,10 @@ SOURCE="..\strings\ctype-bin.c"
# End Source File
# End Source File
# Begin Source File
# Begin Source File
SOURCE="..\strings\ctype-cp932.c"
# End Source File
# Begin Source File
SOURCE="..\strings\ctype-czech.c"
SOURCE="..\strings\ctype-czech.c"
# End Source File
# End Source File
# Begin Source File
# Begin Source File
...
@@ -155,6 +159,10 @@ SOURCE="..\strings\ctype-euc_kr.c"
...
@@ -155,6 +159,10 @@ SOURCE="..\strings\ctype-euc_kr.c"
# End Source File
# End Source File
# Begin Source File
# Begin Source File
SOURCE="..\strings\ctype-eucjpms.c"
# End Source File
# Begin Source File
SOURCE="..\strings\ctype-extra.c"
SOURCE="..\strings\ctype-extra.c"
# End Source File
# End Source File
# Begin Source File
# Begin Source File
...
...
VC++Files/libmysql/libmysql.dsp
View file @
2c36f4c8
...
@@ -139,6 +139,10 @@ SOURCE="..\strings\ctype-bin.c"
...
@@ -139,6 +139,10 @@ SOURCE="..\strings\ctype-bin.c"
# End Source File
# End Source File
# Begin Source File
# Begin Source File
SOURCE="..\strings\ctype-cp932.c"
# End Source File
# Begin Source File
SOURCE="..\strings\ctype-czech.c"
SOURCE="..\strings\ctype-czech.c"
# End Source File
# End Source File
# Begin Source File
# Begin Source File
...
@@ -147,6 +151,10 @@ SOURCE="..\strings\ctype-euc_kr.c"
...
@@ -147,6 +151,10 @@ SOURCE="..\strings\ctype-euc_kr.c"
# End Source File
# End Source File
# Begin Source File
# Begin Source File
SOURCE="..\strings\ctype-eucjpms.c"
# End Source File
# Begin Source File
SOURCE="..\strings\ctype-extra.c"
SOURCE="..\strings\ctype-extra.c"
# End Source File
# End Source File
# Begin Source File
# Begin Source File
...
...
VC++Files/libmysql/libmysql_ia64.dsp
View file @
2c36f4c8
...
@@ -138,6 +138,10 @@ SOURCE="..\strings\ctype-bin.c"
...
@@ -138,6 +138,10 @@ SOURCE="..\strings\ctype-bin.c"
# End Source File
# End Source File
# Begin Source File
# Begin Source File
SOURCE="..\strings\ctype-cp932.c"
# End Source File
# Begin Source File
SOURCE="..\strings\ctype-czech.c"
SOURCE="..\strings\ctype-czech.c"
# End Source File
# End Source File
# Begin Source File
# Begin Source File
...
@@ -146,6 +150,10 @@ SOURCE="..\strings\ctype-euc_kr.c"
...
@@ -146,6 +150,10 @@ SOURCE="..\strings\ctype-euc_kr.c"
# End Source File
# End Source File
# Begin Source File
# Begin Source File
SOURCE="..\strings\ctype-eucjpms.c"
# End Source File
# Begin Source File
SOURCE="..\strings\ctype-extra.c"
SOURCE="..\strings\ctype-extra.c"
# End Source File
# End Source File
# Begin Source File
# Begin Source File
...
...
VC++Files/strings/strings.dsp
View file @
2c36f4c8
...
@@ -113,10 +113,18 @@ SOURCE=".\ctype-bin.c"
...
@@ -113,10 +113,18 @@ SOURCE=".\ctype-bin.c"
# End Source File
# End Source File
# Begin Source File
# Begin Source File
SOURCE=".\ctype-cp932.c"
# End Source File
# Begin Source File
SOURCE=".\ctype-czech.c"
SOURCE=".\ctype-czech.c"
# End Source File
# End Source File
# Begin Source File
# Begin Source File
SOURCE=".\ctype-eucjpms.c"
# End Source File
# Begin Source File
SOURCE=".\ctype-euc_kr.c"
SOURCE=".\ctype-euc_kr.c"
# End Source File
# End Source File
# Begin Source File
# Begin Source File
...
...
VC++Files/strings/strings_ia64.dsp
View file @
2c36f4c8
...
@@ -112,6 +112,10 @@ SOURCE=".\ctype-bin.c"
...
@@ -112,6 +112,10 @@ SOURCE=".\ctype-bin.c"
# End Source File
# End Source File
# Begin Source File
# Begin Source File
SOURCE=".\ctype-cp932.c"
# End Source File
# Begin Source File
SOURCE=".\ctype-czech.c"
SOURCE=".\ctype-czech.c"
# End Source File
# End Source File
# Begin Source File
# Begin Source File
...
@@ -120,6 +124,10 @@ SOURCE=".\ctype-euc_kr.c"
...
@@ -120,6 +124,10 @@ SOURCE=".\ctype-euc_kr.c"
# End Source File
# End Source File
# Begin Source File
# Begin Source File
SOURCE=".\ctype-eucjpms.c"
# End Source File
# Begin Source File
SOURCE=".\ctype-extra.c"
SOURCE=".\ctype-extra.c"
# End Source File
# End Source File
# Begin Source File
# Begin Source File
...
...
include/config-win.h
View file @
2c36f4c8
...
@@ -378,6 +378,7 @@ inline double ulonglong2double(ulonglong value)
...
@@ -378,6 +378,7 @@ inline double ulonglong2double(ulonglong value)
/* #undef HAVE_CHARSET_armscii8 */
/* #undef HAVE_CHARSET_armscii8 */
/* #undef HAVE_CHARSET_ascii */
/* #undef HAVE_CHARSET_ascii */
#define HAVE_CHARSET_big5 1
#define HAVE_CHARSET_big5 1
#define HAVE_CHARSET_cp932
#define HAVE_CHARSET_cp1250 1
#define HAVE_CHARSET_cp1250 1
/* #undef HAVE_CHARSET_cp1251 */
/* #undef HAVE_CHARSET_cp1251 */
/* #undef HAVE_CHARSET_cp1256 */
/* #undef HAVE_CHARSET_cp1256 */
...
@@ -386,6 +387,7 @@ inline double ulonglong2double(ulonglong value)
...
@@ -386,6 +387,7 @@ inline double ulonglong2double(ulonglong value)
/* #undef HAVE_CHARSET_cp852 */
/* #undef HAVE_CHARSET_cp852 */
/* #undef HAVE_CHARSET_cp866 */
/* #undef HAVE_CHARSET_cp866 */
/* #undef HAVE_CHARSET_dec8 */
/* #undef HAVE_CHARSET_dec8 */
#define HAVE_CHARSET_eucjpms 1
#define HAVE_CHARSET_euckr 1
#define HAVE_CHARSET_euckr 1
#define HAVE_CHARSET_gb2312 1
#define HAVE_CHARSET_gb2312 1
#define HAVE_CHARSET_gbk 1
#define HAVE_CHARSET_gbk 1
...
...
mysql-test/r/sp-error.result
View file @
2c36f4c8
...
@@ -513,4 +513,58 @@ call bug9566()|
...
@@ -513,4 +513,58 @@ call bug9566()|
ERROR HY000: Table 'proc' was not locked with LOCK TABLES
ERROR HY000: Table 'proc' was not locked with LOCK TABLES
unlock tables|
unlock tables|
drop procedure bug9566|
drop procedure bug9566|
drop procedure if exists bug7299|
create procedure bug7299()
begin
declare v int;
declare c cursor for select val from t1;
declare exit handler for sqlexception select 'Error!';
open c;
fetch c into v;
end|
delete from t1|
call bug7299()|
ERROR 02000: No data to FETCH
drop procedure bug7299|
create procedure bug9073()
begin
declare continue handler for sqlexception select 1;
declare continue handler for sqlexception select 2;
end|
ERROR 42000: Duplicate handler declared in the same block
create procedure bug9073()
begin
declare condname1 condition for 1234;
declare continue handler for condname1 select 1;
declare exit handler for condname1 select 2;
end|
ERROR 42000: Duplicate handler declared in the same block
create procedure bug9073()
begin
declare condname1 condition for sqlstate '42000';
declare condname2 condition for sqlstate '42000';
declare exit handler for condname1 select 1;
declare continue handler for condname2 select 2;
end|
ERROR 42000: Duplicate handler declared in the same block
create procedure bug9073()
begin
declare condname1 condition for sqlstate '42000';
declare exit handler for condname1 select 1;
declare exit handler for sqlstate '42000' select 2;
end|
ERROR 42000: Duplicate handler declared in the same block
drop procedure if exists bug9073|
create procedure bug9073()
begin
declare condname1 condition for sqlstate '42000';
declare continue handler for condname1 select 1;
begin
declare exit handler for sqlstate '42000' select 2;
begin
declare continue handler for sqlstate '42000' select 3;
end;
end;
end|
drop procedure bug9073|
drop table t1|
drop table t1|
mysql-test/r/sp.result
View file @
2c36f4c8
...
@@ -2779,4 +2779,69 @@ a
...
@@ -2779,4 +2779,69 @@ a
3.2000
3.2000
drop procedure bug8937|
drop procedure bug8937|
delete from t1|
delete from t1|
drop procedure if exists bug6900|
drop procedure if exists bug9074|
drop procedure if exists bug6900_9074|
drop table if exists t3|
create table t3 (w char unique, x char)|
insert into t3 values ('a', 'b')|
create procedure bug6900()
begin
declare exit handler for sqlexception select '1';
begin
declare exit handler for sqlexception select '2';
insert into t3 values ('x', 'y', 'z');
end;
end|
create procedure bug9074()
begin
declare x1, x2, x3, x4, x5, x6 int default 0;
begin
declare continue handler for sqlstate '23000' set x5 = 1;
insert into t3 values ('a', 'b');
set x6 = 1;
end;
begin1_label:
begin
declare continue handler for sqlstate '23000' set x1 = 1;
insert into t3 values ('a', 'b');
set x2 = 1;
begin2_label:
begin
declare exit handler for sqlstate '23000' set x3 = 1;
set x4= 1;
insert into t3 values ('a','b');
set x4= 0;
end begin2_label;
end begin1_label;
select x1, x2, x3, x4, x5, x6;
end|
create procedure bug6900_9074(z int)
begin
declare exit handler for sqlstate '23000' select '23000';
begin
declare exit handler for sqlexception select 'sqlexception';
if z = 1 then
insert into t3 values ('a', 'b');
else
insert into t3 values ('x', 'y', 'z');
end if;
end;
end|
call bug6900()|
2
2
call bug9074()|
x1 x2 x3 x4 x5 x6
1 1 1 1 1 1
call bug6900_9074(0)|
sqlexception
sqlexception
call bug6900_9074(1)|
23000
23000
drop procedure bug6900|
drop procedure bug9074|
drop procedure bug6900_9074|
drop table t3|
drop table t1,t2;
drop table t1,t2;
mysql-test/t/sp-error.test
View file @
2c36f4c8
...
@@ -720,6 +720,78 @@ unlock tables|
...
@@ -720,6 +720,78 @@ unlock tables|
drop
procedure
bug9566
|
drop
procedure
bug9566
|
#
# BUG#7299: Stored procedures: exception handler catches not-found conditions
#
--
disable_warnings
drop
procedure
if
exists
bug7299
|
--
enable_warnings
create
procedure
bug7299
()
begin
declare
v
int
;
declare
c
cursor
for
select
val
from
t1
;
declare
exit
handler
for
sqlexception
select
'Error!'
;
open
c
;
fetch
c
into
v
;
end
|
delete
from
t1
|
--
error
ER_SP_FETCH_NO_DATA
call
bug7299
()
|
drop
procedure
bug7299
|
#
# BUG#9073: Able to declare two handlers for same condition in same scope
#
--
error
ER_SP_DUP_HANDLER
create
procedure
bug9073
()
begin
declare
continue
handler
for
sqlexception
select
1
;
declare
continue
handler
for
sqlexception
select
2
;
end
|
--
error
ER_SP_DUP_HANDLER
create
procedure
bug9073
()
begin
declare
condname1
condition
for
1234
;
declare
continue
handler
for
condname1
select
1
;
declare
exit
handler
for
condname1
select
2
;
end
|
--
error
ER_SP_DUP_HANDLER
create
procedure
bug9073
()
begin
declare
condname1
condition
for
sqlstate
'42000'
;
declare
condname2
condition
for
sqlstate
'42000'
;
declare
exit
handler
for
condname1
select
1
;
declare
continue
handler
for
condname2
select
2
;
end
|
--
error
ER_SP_DUP_HANDLER
create
procedure
bug9073
()
begin
declare
condname1
condition
for
sqlstate
'42000'
;
declare
exit
handler
for
condname1
select
1
;
declare
exit
handler
for
sqlstate
'42000'
select
2
;
end
|
# This should still work.
--
disable_warnings
drop
procedure
if
exists
bug9073
|
--
enable_warnings
create
procedure
bug9073
()
begin
declare
condname1
condition
for
sqlstate
'42000'
;
declare
continue
handler
for
condname1
select
1
;
begin
declare
exit
handler
for
sqlstate
'42000'
select
2
;
begin
declare
continue
handler
for
sqlstate
'42000'
select
3
;
end
;
end
;
end
|
drop
procedure
bug9073
|
#
#
# BUG#NNNN: New bug synopsis
# BUG#NNNN: New bug synopsis
#
#
...
...
mysql-test/t/sp.test
View file @
2c36f4c8
...
@@ -3398,6 +3398,89 @@ drop procedure bug8937|
...
@@ -3398,6 +3398,89 @@ drop procedure bug8937|
delete
from
t1
|
delete
from
t1
|
#
# BUG#6900: Stored procedure inner handler ignored
# BUG#9074: STORED PROC: The scope of every handler declared is not
# properly applied
#
--
disable_warnings
drop
procedure
if
exists
bug6900
|
drop
procedure
if
exists
bug9074
|
drop
procedure
if
exists
bug6900_9074
|
drop
table
if
exists
t3
|
--
enable_warnings
create
table
t3
(
w
char
unique
,
x
char
)
|
insert
into
t3
values
(
'a'
,
'b'
)
|
create
procedure
bug6900
()
begin
declare
exit
handler
for
sqlexception
select
'1'
;
begin
declare
exit
handler
for
sqlexception
select
'2'
;
insert
into
t3
values
(
'x'
,
'y'
,
'z'
);
end
;
end
|
create
procedure
bug9074
()
begin
declare
x1
,
x2
,
x3
,
x4
,
x5
,
x6
int
default
0
;
begin
declare
continue
handler
for
sqlstate
'23000'
set
x5
=
1
;
insert
into
t3
values
(
'a'
,
'b'
);
set
x6
=
1
;
end
;
begin1_label
:
begin
declare
continue
handler
for
sqlstate
'23000'
set
x1
=
1
;
insert
into
t3
values
(
'a'
,
'b'
);
set
x2
=
1
;
begin2_label
:
begin
declare
exit
handler
for
sqlstate
'23000'
set
x3
=
1
;
set
x4
=
1
;
insert
into
t3
values
(
'a'
,
'b'
);
set
x4
=
0
;
end
begin2_label
;
end
begin1_label
;
select
x1
,
x2
,
x3
,
x4
,
x5
,
x6
;
end
|
create
procedure
bug6900_9074
(
z
int
)
begin
declare
exit
handler
for
sqlstate
'23000'
select
'23000'
;
begin
declare
exit
handler
for
sqlexception
select
'sqlexception'
;
if
z
=
1
then
insert
into
t3
values
(
'a'
,
'b'
);
else
insert
into
t3
values
(
'x'
,
'y'
,
'z'
);
end
if
;
end
;
end
|
call
bug6900
()
|
call
bug9074
()
|
call
bug6900_9074
(
0
)
|
call
bug6900_9074
(
1
)
|
drop
procedure
bug6900
|
drop
procedure
bug9074
|
drop
procedure
bug6900_9074
|
drop
table
t3
|
#
#
# BUG#NNNN: New bug synopsis
# BUG#NNNN: New bug synopsis
#
#
...
...
sql/ha_ndbcluster.cc
View file @
2c36f4c8
...
@@ -4107,7 +4107,7 @@ ulonglong ha_ndbcluster::get_auto_increment()
...
@@ -4107,7 +4107,7 @@ ulonglong ha_ndbcluster::get_auto_increment()
DBUG_ENTER
(
"get_auto_increment"
);
DBUG_ENTER
(
"get_auto_increment"
);
DBUG_PRINT
(
"enter"
,
(
"m_tabname: %s"
,
m_tabname
));
DBUG_PRINT
(
"enter"
,
(
"m_tabname: %s"
,
m_tabname
));
Ndb
*
ndb
=
get_ndb
();
Ndb
*
ndb
=
get_ndb
();
if
(
m_rows_inserted
>
m_rows_to_insert
)
if
(
m_rows_inserted
>
m_rows_to_insert
)
/* We guessed too low */
/* We guessed too low */
m_rows_to_insert
+=
m_autoincrement_prefetch
;
m_rows_to_insert
+=
m_autoincrement_prefetch
;
...
...
sql/share/errmsg.txt
View file @
2c36f4c8
...
@@ -5338,4 +5338,5 @@ ER_WRONG_VALUE_FOR_TYPE
...
@@ -5338,4 +5338,5 @@ ER_WRONG_VALUE_FOR_TYPE
eng "Incorrect %-.32s value: '%-.128s' for function %-.32s"
eng "Incorrect %-.32s value: '%-.128s' for function %-.32s"
ER_TABLE_DEF_CHANGED
ER_TABLE_DEF_CHANGED
eng "Table definition has changed, please retry transaction"
eng "Table definition has changed, please retry transaction"
ER_SP_DUP_HANDLER 42000
eng "Duplicate handler declared in the same block"
sql/sp_pcontext.cc
View file @
2c36f4c8
...
@@ -57,6 +57,7 @@ sp_pcontext::sp_pcontext(sp_pcontext *prev)
...
@@ -57,6 +57,7 @@ sp_pcontext::sp_pcontext(sp_pcontext *prev)
VOID
(
my_init_dynamic_array
(
&
m_pvar
,
sizeof
(
sp_pvar_t
*
),
16
,
8
));
VOID
(
my_init_dynamic_array
(
&
m_pvar
,
sizeof
(
sp_pvar_t
*
),
16
,
8
));
VOID
(
my_init_dynamic_array
(
&
m_cond
,
sizeof
(
sp_cond_type_t
*
),
16
,
8
));
VOID
(
my_init_dynamic_array
(
&
m_cond
,
sizeof
(
sp_cond_type_t
*
),
16
,
8
));
VOID
(
my_init_dynamic_array
(
&
m_cursor
,
sizeof
(
LEX_STRING
),
16
,
8
));
VOID
(
my_init_dynamic_array
(
&
m_cursor
,
sizeof
(
LEX_STRING
),
16
,
8
));
VOID
(
my_init_dynamic_array
(
&
m_handler
,
sizeof
(
sp_cond_type_t
*
),
16
,
8
));
m_label
.
empty
();
m_label
.
empty
();
m_children
.
empty
();
m_children
.
empty
();
if
(
!
prev
)
if
(
!
prev
)
...
@@ -82,6 +83,7 @@ sp_pcontext::destroy()
...
@@ -82,6 +83,7 @@ sp_pcontext::destroy()
delete_dynamic
(
&
m_pvar
);
delete_dynamic
(
&
m_pvar
);
delete_dynamic
(
&
m_cond
);
delete_dynamic
(
&
m_cond
);
delete_dynamic
(
&
m_cursor
);
delete_dynamic
(
&
m_cursor
);
delete_dynamic
(
&
m_handler
);
}
}
sp_pcontext
*
sp_pcontext
*
...
@@ -258,6 +260,41 @@ sp_pcontext::find_cond(LEX_STRING *name, my_bool scoped)
...
@@ -258,6 +260,41 @@ sp_pcontext::find_cond(LEX_STRING *name, my_bool scoped)
return
NULL
;
return
NULL
;
}
}
/*
* This only searches the current context, for error checking of
* duplicates.
* Returns TRUE if found.
*/
bool
sp_pcontext
::
find_handler
(
sp_cond_type_t
*
cond
)
{
uint
i
=
m_handler
.
elements
;
while
(
i
--
)
{
sp_cond_type_t
*
p
;
get_dynamic
(
&
m_handler
,
(
gptr
)
&
p
,
i
);
if
(
cond
->
type
==
p
->
type
)
{
switch
(
p
->
type
)
{
case
sp_cond_type_t
:
:
number
:
if
(
cond
->
mysqlerr
==
p
->
mysqlerr
)
return
TRUE
;
break
;
case
sp_cond_type_t
:
:
state
:
if
(
strcmp
(
cond
->
sqlstate
,
p
->
sqlstate
)
==
0
)
return
TRUE
;
break
;
default:
return
TRUE
;
}
}
}
return
FALSE
;
}
void
void
sp_pcontext
::
push_cursor
(
LEX_STRING
*
name
)
sp_pcontext
::
push_cursor
(
LEX_STRING
*
name
)
{
{
...
...
sql/sp_pcontext.h
View file @
2c36f4c8
...
@@ -241,6 +241,15 @@ class sp_pcontext : public Sql_alloc
...
@@ -241,6 +241,15 @@ class sp_pcontext : public Sql_alloc
m_handlers
+=
1
;
m_handlers
+=
1
;
}
}
inline
void
push_handler
(
sp_cond_type_t
*
cond
)
{
insert_dynamic
(
&
m_handler
,
(
gptr
)
&
cond
);
}
bool
find_handler
(
sp_cond_type
*
cond
);
inline
uint
inline
uint
max_handlers
()
max_handlers
()
{
{
...
@@ -293,6 +302,7 @@ class sp_pcontext : public Sql_alloc
...
@@ -293,6 +302,7 @@ class sp_pcontext : public Sql_alloc
DYNAMIC_ARRAY
m_pvar
;
// Parameters/variables
DYNAMIC_ARRAY
m_pvar
;
// Parameters/variables
DYNAMIC_ARRAY
m_cond
;
// Conditions
DYNAMIC_ARRAY
m_cond
;
// Conditions
DYNAMIC_ARRAY
m_cursor
;
// Cursors
DYNAMIC_ARRAY
m_cursor
;
// Cursors
DYNAMIC_ARRAY
m_handler
;
// Handlers, for checking of duplicates
List
<
sp_label_t
>
m_label
;
// The label list
List
<
sp_label_t
>
m_label
;
// The label list
...
...
sql/sp_rcontext.cc
View file @
2c36f4c8
...
@@ -80,24 +80,24 @@ sp_rcontext::find_handler(uint sql_errno,
...
@@ -80,24 +80,24 @@ sp_rcontext::find_handler(uint sql_errno,
break
;
break
;
case
sp_cond_type_t
:
:
state
:
case
sp_cond_type_t
:
:
state
:
if
(
strcmp
(
sqlstate
,
cond
->
sqlstate
)
==
0
&&
if
(
strcmp
(
sqlstate
,
cond
->
sqlstate
)
==
0
&&
(
found
<
0
||
m_handler
[
found
].
cond
->
type
>
sp_cond_type_t
::
number
))
(
found
<
0
||
m_handler
[
found
].
cond
->
type
>
sp_cond_type_t
::
state
))
found
=
i
;
found
=
i
;
break
;
break
;
case
sp_cond_type_t
:
:
warning
:
case
sp_cond_type_t
:
:
warning
:
if
((
sqlstate
[
0
]
==
'0'
&&
sqlstate
[
1
]
==
'1'
||
if
((
sqlstate
[
0
]
==
'0'
&&
sqlstate
[
1
]
==
'1'
||
level
==
MYSQL_ERROR
::
WARN_LEVEL_WARN
)
&&
level
==
MYSQL_ERROR
::
WARN_LEVEL_WARN
)
&&
(
found
<
0
||
m_handler
[
found
].
cond
->
type
>
sp_cond_type_t
::
state
)
)
found
<
0
)
found
=
i
;
found
=
i
;
break
;
break
;
case
sp_cond_type_t
:
:
notfound
:
case
sp_cond_type_t
:
:
notfound
:
if
(
sqlstate
[
0
]
==
'0'
&&
sqlstate
[
1
]
==
'2'
&&
if
(
sqlstate
[
0
]
==
'0'
&&
sqlstate
[
1
]
==
'2'
&&
(
found
<
0
||
m_handler
[
found
].
cond
->
type
>
sp_cond_type_t
::
state
)
)
found
<
0
)
found
=
i
;
found
=
i
;
break
;
break
;
case
sp_cond_type_t
:
:
exception
:
case
sp_cond_type_t
:
:
exception
:
if
((
sqlstate
[
0
]
!=
'0'
||
sqlstate
[
1
]
>
'2'
||
if
((
sqlstate
[
0
]
!=
'0'
||
sqlstate
[
1
]
>
'2'
)
&&
level
==
MYSQL_ERROR
::
WARN_LEVEL_ERROR
)
&&
level
==
MYSQL_ERROR
::
WARN_LEVEL_ERROR
&&
(
found
<
0
||
m_handler
[
found
].
cond
->
type
>
sp_cond_type_t
::
state
)
)
found
<
0
)
found
=
i
;
found
=
i
;
break
;
break
;
}
}
...
...
sql/sql_udf.cc
View file @
2c36f4c8
...
@@ -525,8 +525,11 @@ int mysql_drop_function(THD *thd,const LEX_STRING *udf_name)
...
@@ -525,8 +525,11 @@ int mysql_drop_function(THD *thd,const LEX_STRING *udf_name)
tables
.
table_name
=
tables
.
alias
=
(
char
*
)
"func"
;
tables
.
table_name
=
tables
.
alias
=
(
char
*
)
"func"
;
if
(
!
(
table
=
open_ltable
(
thd
,
&
tables
,
TL_WRITE
)))
if
(
!
(
table
=
open_ltable
(
thd
,
&
tables
,
TL_WRITE
)))
goto
err
;
goto
err
;
if
(
!
table
->
file
->
index_read_idx
(
table
->
record
[
0
],
0
,(
byte
*
)
udf_name
->
str
,
table
->
field
[
0
]
->
store
(
udf_name
->
str
,
udf_name
->
length
,
system_charset_info
);
(
uint
)
udf_name
->
length
,
table
->
file
->
extra
(
HA_EXTRA_RETRIEVE_ALL_COLS
);
if
(
!
table
->
file
->
index_read_idx
(
table
->
record
[
0
],
0
,
(
byte
*
)
table
->
field
[
0
]
->
ptr
,
table
->
key_info
[
0
].
key_length
,
HA_READ_KEY_EXACT
))
HA_READ_KEY_EXACT
))
{
{
int
error
;
int
error
;
...
...
sql/sql_yacc.yy
View file @
2c36f4c8
...
@@ -1774,19 +1774,43 @@ sp_hcond_list:
...
@@ -1774,19 +1774,43 @@ sp_hcond_list:
{
{
LEX *lex= Lex;
LEX *lex= Lex;
sp_head *sp= lex->sphead;
sp_head *sp= lex->sphead;
sp_
instr_hpush_jump *i= (sp_instr_hpush_jump *)sp->last_instruction()
;
sp_
pcontext *ctx= lex->spcont
;
i->add_condition($1);
if (ctx->find_handler($1))
$$= 1;
{
my_message(ER_SP_DUP_HANDLER, ER(ER_SP_DUP_HANDLER), MYF(0));
YYABORT;
}
else
{
sp_instr_hpush_jump *i=
(sp_instr_hpush_jump *)sp->last_instruction();
i->add_condition($1);
ctx->push_handler($1);
$$= 1;
}
}
}
| sp_hcond_list ',' sp_hcond
| sp_hcond_list ',' sp_hcond
{
{
LEX *lex= Lex;
LEX *lex= Lex;
sp_head *sp= lex->sphead;
sp_head *sp= lex->sphead;
sp_
instr_hpush_jump *i= (sp_instr_hpush_jump *)sp->last_instruction()
;
sp_
pcontext *ctx= lex->spcont
;
i->add_condition($3);
if (ctx->find_handler($3))
$$= $1 + 1;
{
my_message(ER_SP_DUP_HANDLER, ER(ER_SP_DUP_HANDLER), MYF(0));
YYABORT;
}
else
{
sp_instr_hpush_jump *i=
(sp_instr_hpush_jump *)sp->last_instruction();
i->add_condition($3);
ctx->push_handler($3);
$$= $1 + 1;
}
}
}
;
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment