summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/parse_file.cc15
-rw-r--r--sql/sp_head.cc6
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;