diff options
-rw-r--r-- | sql/parse_file.cc | 15 | ||||
-rw-r--r-- | sql/sp_head.cc | 6 |
2 files changed, 19 insertions, 2 deletions
diff --git a/sql/parse_file.cc b/sql/parse_file.cc index f5b62e3afe2..f06c7c15202 100644 --- a/sql/parse_file.cc +++ b/sql/parse_file.cc @@ -733,14 +733,18 @@ nlist_err: /* parse parameters - + SYNOPSIS File_parser::parse() base base address for parameter writing (structure like TABLE) mem_root MEM_ROOT for parameters allocation parameters parameters description - required number of required parameters in above list + required number of parameters in the above list. If the file + contains more parameters than "required", they will + be ignored. If the file contains less parameters + then "required", non-existing parameters will + remain their values. hook hook called for unknown keys hook_data some data specific for the hook @@ -923,6 +927,13 @@ list_err: } } } + + /* + NOTE: if we read less than "required" parameters, it is still Ok. + Probably, we've just read the file of the previous version, which + contains less parameters. + */ + DBUG_RETURN(FALSE); } diff --git a/sql/sp_head.cc b/sql/sp_head.cc index cb19e800510..4dcdddbdef8 100644 --- a/sql/sp_head.cc +++ b/sql/sp_head.cc @@ -992,6 +992,12 @@ sp_head::execute(THD *thd) m_first_instance->m_last_cached_sp == this) || (m_recursion_level + 1 == m_next_cached_sp->m_recursion_level)); + /* + NOTE: The SQL Standard does not specify the context that should be + preserved for stored routines. However, at SAP/Walldorf meeting it was + decided that current database should be preserved. + */ + if (m_db.length && (err_status= sp_use_new_db(thd, m_db, &old_db, 0, &dbchanged))) goto done; |