mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Merge bodhi.(none):/opt/local/work/mysql-5.0-runtime
into bodhi.(none):/opt/local/work/mysql-5.1-runtime
This commit is contained in:
@ -2297,7 +2297,7 @@ bool st_lex::need_correct_ident()
|
||||
VIEW_CHECK_CASCADED CHECK OPTION CASCADED
|
||||
*/
|
||||
|
||||
uint8 st_lex::get_effective_with_check(st_table_list *view)
|
||||
uint8 st_lex::get_effective_with_check(TABLE_LIST *view)
|
||||
{
|
||||
if (view->select_lex->master_unit() == &unit &&
|
||||
which_check_option_applicable())
|
||||
@ -2306,6 +2306,43 @@ uint8 st_lex::get_effective_with_check(st_table_list *view)
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
This method should be called only during parsing.
|
||||
It is aware of compound statements (stored routine bodies)
|
||||
and will initialize the destination with the default
|
||||
database of the stored routine, rather than the default
|
||||
database of the connection it is parsed in.
|
||||
E.g. if one has no current database selected, or current database
|
||||
set to 'bar' and then issues:
|
||||
|
||||
CREATE PROCEDURE foo.p1() BEGIN SELECT * FROM t1 END//
|
||||
|
||||
t1 is meant to refer to foo.t1, not to bar.t1.
|
||||
|
||||
This method is needed to support this rule.
|
||||
|
||||
@return TRUE in case of error (parsing should be aborted, FALSE in
|
||||
case of success
|
||||
*/
|
||||
|
||||
bool
|
||||
st_lex::copy_db_to(char **p_db, uint *p_db_length) const
|
||||
{
|
||||
if (sphead)
|
||||
{
|
||||
DBUG_ASSERT(sphead->m_db.str && sphead->m_db.length);
|
||||
/*
|
||||
It is safe to assign the string by-pointer, both sphead and
|
||||
its statements reside in the same memory root.
|
||||
*/
|
||||
*p_db= sphead->m_db.str;
|
||||
if (p_db_length)
|
||||
*p_db_length= sphead->m_db.length;
|
||||
return FALSE;
|
||||
}
|
||||
return thd->copy_db_to(p_db, p_db_length);
|
||||
}
|
||||
|
||||
/*
|
||||
initialize limit counters
|
||||
|
||||
@ -2329,6 +2366,27 @@ void st_select_lex_unit::set_limit(SELECT_LEX *sl)
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Update the parsed tree with information about triggers that
|
||||
may be fired when executing this statement.
|
||||
*/
|
||||
|
||||
void st_lex::set_trg_event_type_for_tables()
|
||||
{
|
||||
/*
|
||||
Do not iterate over sub-selects, only the tables in the outermost
|
||||
SELECT_LEX can be modified, if any.
|
||||
*/
|
||||
TABLE_LIST *tables= select_lex.get_table_list();
|
||||
|
||||
while (tables)
|
||||
{
|
||||
tables->set_trg_event_type(this);
|
||||
tables= tables->next_local;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Unlink the first table from the global table list and the first table from
|
||||
outer select (lex->select_lex) local list
|
||||
|
Reference in New Issue
Block a user