Commit 27cef12a authored by unknown's avatar unknown

Bug #23491 MySQLDump prefix function call in a view by database name

- 5.0 merged to 5.1 differences.


sql/item_create.cc:
  Bug #23491 MySQLDump prefix function call in a view by database name
  - Added use_explicit_name to Create_sp_func::create method.
  - Default use_explicit_name to false when db name not specified.
  - Use use_explicit_name when creating sp_name object.
sql/item_create.h:
  Bug #23491 MySQLDump prefix function call in a view by database name
  - Updated virtual function definition.
sql/sql_yacc.yy:
  Bug #23491 MySQLDump prefix function call in a view by database name
  - Use new create method.
parent 2bf8deb4
......@@ -167,7 +167,7 @@ class Create_sp_func : public Create_qfunc
{
public:
virtual Item* create(THD *thd, LEX_STRING db, LEX_STRING name,
List<Item> *item_list);
bool use_explicit_name, List<Item> *item_list);
static Create_sp_func s_singleton;
......@@ -2316,7 +2316,7 @@ Create_qfunc::create(THD *thd, LEX_STRING name, List<Item> *item_list)
if (thd->copy_db_to(&db.str, &db.length))
return NULL;
return create(thd, db, name, item_list);
return create(thd, db, name, false, item_list);
}
......@@ -2433,7 +2433,7 @@ Create_sp_func Create_sp_func::s_singleton;
Item*
Create_sp_func::create(THD *thd, LEX_STRING db, LEX_STRING name,
List<Item> *item_list)
bool use_explicit_name, List<Item> *item_list)
{
int arg_count= 0;
Item *func= NULL;
......@@ -2458,7 +2458,7 @@ Create_sp_func::create(THD *thd, LEX_STRING db, LEX_STRING name,
if (item_list != NULL)
arg_count= item_list->elements;
qname= new (thd->mem_root) sp_name(db, name);
qname= new (thd->mem_root) sp_name(db, name, use_explicit_name);
qname->init_qname(thd);
sp_add_used_routine(lex, thd, qname, TYPE_ENUM_FUNCTION);
......
......@@ -87,11 +87,12 @@ class Create_qfunc : public Create_func
@param thd The current thread
@param db The database name
@param name The function name
@param use_explicit_name Should the function be represented as 'db.name'?
@param item_list The list of arguments to the function, can be NULL
@return An item representing the parsed function call
*/
virtual Item* create(THD *thd, LEX_STRING db, LEX_STRING name,
List<Item> *item_list) = 0;
bool use_explicit_name, List<Item> *item_list) = 0;
protected:
/** Constructor. */
......
......@@ -6921,7 +6921,7 @@ function_call_generic:
builder= find_qualified_function_builder(thd);
DBUG_ASSERT(builder);
item= builder->create(thd, $1, $3, $5);
item= builder->create(thd, $1, $3, true, $5);
if (! ($$= item))
{
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment