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
77f73c83
Commit
77f73c83
authored
Mar 07, 2007
by
malff/marcsql@weblab.(none)
Browse files
Options
Browse Files
Download
Plain Diff
Merge weblab.(none):/home/marcsql/TREE/mysql-5.0-runtime
into weblab.(none):/home/marcsql/TREE/mysql-5.1-8407-cleanup
parents
5d01096c
1f91f47d
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
19 additions
and
28 deletions
+19
-28
sql/sp_head.cc
sql/sp_head.cc
+7
-13
sql/sp_head.h
sql/sp_head.h
+12
-15
No files found.
sql/sp_head.cc
View file @
77f73c83
...
@@ -1117,7 +1117,7 @@ sp_head::execute(THD *thd)
...
@@ -1117,7 +1117,7 @@ sp_head::execute(THD *thd)
case
SP_HANDLER_CONTINUE
:
case
SP_HANDLER_CONTINUE
:
thd
->
restore_active_arena
(
&
execute_arena
,
&
backup_arena
);
thd
->
restore_active_arena
(
&
execute_arena
,
&
backup_arena
);
thd
->
set_n_backup_active_arena
(
&
execute_arena
,
&
backup_arena
);
thd
->
set_n_backup_active_arena
(
&
execute_arena
,
&
backup_arena
);
ctx
->
push_hstack
(
i
p
);
ctx
->
push_hstack
(
i
->
get_cont_dest
()
);
// Fall through
// Fall through
default:
default:
ip
=
hip
;
ip
=
hip
;
...
@@ -2448,7 +2448,7 @@ sp_lex_keeper::reset_lex_and_exec_core(THD *thd, uint *nextp,
...
@@ -2448,7 +2448,7 @@ sp_lex_keeper::reset_lex_and_exec_core(THD *thd, uint *nextp,
reinit_stmt_before_use
(
thd
,
m_lex
);
reinit_stmt_before_use
(
thd
,
m_lex
);
if
(
open_tables
)
if
(
open_tables
)
res
=
instr
->
exec_open_and_lock_tables
(
thd
,
m_lex
->
query_tables
,
nextp
);
res
=
instr
->
exec_open_and_lock_tables
(
thd
,
m_lex
->
query_tables
);
if
(
!
res
)
if
(
!
res
)
{
{
...
@@ -2500,8 +2500,7 @@ sp_lex_keeper::reset_lex_and_exec_core(THD *thd, uint *nextp,
...
@@ -2500,8 +2500,7 @@ sp_lex_keeper::reset_lex_and_exec_core(THD *thd, uint *nextp,
sp_instr class functions
sp_instr class functions
*/
*/
int
sp_instr
::
exec_open_and_lock_tables
(
THD
*
thd
,
TABLE_LIST
*
tables
,
int
sp_instr
::
exec_open_and_lock_tables
(
THD
*
thd
,
TABLE_LIST
*
tables
)
uint
*
nextp
)
{
{
int
result
;
int
result
;
...
@@ -2511,19 +2510,16 @@ int sp_instr::exec_open_and_lock_tables(THD *thd, TABLE_LIST *tables,
...
@@ -2511,19 +2510,16 @@ int sp_instr::exec_open_and_lock_tables(THD *thd, TABLE_LIST *tables,
*/
*/
if
(
check_table_access
(
thd
,
SELECT_ACL
,
tables
,
0
)
if
(
check_table_access
(
thd
,
SELECT_ACL
,
tables
,
0
)
||
open_and_lock_tables
(
thd
,
tables
))
||
open_and_lock_tables
(
thd
,
tables
))
{
get_cont_dest
(
nextp
);
result
=
-
1
;
result
=
-
1
;
}
else
else
result
=
0
;
result
=
0
;
return
result
;
return
result
;
}
}
void
sp_instr
::
get_cont_dest
(
uint
*
nextp
)
uint
sp_instr
::
get_cont_dest
(
)
{
{
*
nextp
=
m_ip
+
1
;
return
(
m_ip
+
1
)
;
}
}
...
@@ -2716,9 +2712,9 @@ sp_instr_set_trigger_field::print(String *str)
...
@@ -2716,9 +2712,9 @@ sp_instr_set_trigger_field::print(String *str)
sp_instr_opt_meta
sp_instr_opt_meta
*/
*/
void
sp_instr_opt_meta
::
get_cont_dest
(
uint
*
nextp
)
uint
sp_instr_opt_meta
::
get_cont_dest
(
)
{
{
*
nextp
=
m_cont_dest
;
return
m_cont_dest
;
}
}
...
@@ -2810,7 +2806,6 @@ sp_instr_jump_if_not::exec_core(THD *thd, uint *nextp)
...
@@ -2810,7 +2806,6 @@ sp_instr_jump_if_not::exec_core(THD *thd, uint *nextp)
if
(
!
it
)
if
(
!
it
)
{
{
res
=
-
1
;
res
=
-
1
;
*
nextp
=
m_cont_dest
;
}
}
else
else
{
{
...
@@ -3379,7 +3374,6 @@ sp_instr_set_case_expr::exec_core(THD *thd, uint *nextp)
...
@@ -3379,7 +3374,6 @@ sp_instr_set_case_expr::exec_core(THD *thd, uint *nextp)
spcont
->
clear_handler
();
spcont
->
clear_handler
();
thd
->
spcont
=
spcont
;
thd
->
spcont
=
spcont
;
}
}
*
nextp
=
m_cont_dest
;
/* For continue handler */
}
}
else
else
*
nextp
=
m_ip
+
1
;
*
nextp
=
m_ip
+
1
;
...
...
sql/sp_head.h
View file @
77f73c83
...
@@ -468,13 +468,15 @@ class sp_instr :public Query_arena, public Sql_alloc
...
@@ -468,13 +468,15 @@ class sp_instr :public Query_arena, public Sql_alloc
thd Thread handle
thd Thread handle
nextp OUT index of the next instruction to execute. (For most
nextp OUT index of the next instruction to execute. (For most
instructions this will be the instruction following this
instructions this will be the instruction following this
one).
one). Note that this parameter is undefined in case of
errors, use get_cont_dest() to find the continuation
RETURN
instruction for CONTINUE error handlers.
0 on success,
other if some error occured
RETURN
0 on success,
other if some error occurred
*/
*/
virtual
int
execute
(
THD
*
thd
,
uint
*
nextp
)
=
0
;
virtual
int
execute
(
THD
*
thd
,
uint
*
nextp
)
=
0
;
/**
/**
...
@@ -482,22 +484,17 @@ class sp_instr :public Query_arena, public Sql_alloc
...
@@ -482,22 +484,17 @@ class sp_instr :public Query_arena, public Sql_alloc
Open and lock the tables used by this statement, as a pre-requisite
Open and lock the tables used by this statement, as a pre-requisite
to execute the core logic of this instruction with
to execute the core logic of this instruction with
<code>exec_core()</code>.
<code>exec_core()</code>.
If this statement fails, the next instruction to execute is also returned.
This is useful when a user defined SQL continue handler needs to be
executed.
@param thd the current thread
@param thd the current thread
@param tables the list of tables to open and lock
@param tables the list of tables to open and lock
@param nextp the continuation instruction, returned to the caller if this
method fails.
@return zero on success, non zero on failure.
@return zero on success, non zero on failure.
*/
*/
int
exec_open_and_lock_tables
(
THD
*
thd
,
TABLE_LIST
*
tables
,
uint
*
nextp
);
int
exec_open_and_lock_tables
(
THD
*
thd
,
TABLE_LIST
*
tables
);
/**
/**
Get the continuation destination of this instruction.
Get the continuation destination of this instruction.
@
param nextp the continuation destination (output)
@
return the continuation destination
*/
*/
virtual
void
get_cont_dest
(
uint
*
nextp
);
virtual
uint
get_cont_dest
(
);
/*
/*
Execute core function of instruction after all preparations (e.g.
Execute core function of instruction after all preparations (e.g.
...
@@ -763,7 +760,7 @@ class sp_instr_opt_meta : public sp_instr
...
@@ -763,7 +760,7 @@ class sp_instr_opt_meta : public sp_instr
virtual
void
set_destination
(
uint
old_dest
,
uint
new_dest
)
virtual
void
set_destination
(
uint
old_dest
,
uint
new_dest
)
=
0
;
=
0
;
virtual
void
get_cont_dest
(
uint
*
nextp
);
virtual
uint
get_cont_dest
(
);
protected:
protected:
...
...
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