Commit 09eff0aa 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 1edf3685
...@@ -167,7 +167,7 @@ class Create_sp_func : public Create_qfunc ...@@ -167,7 +167,7 @@ class Create_sp_func : public Create_qfunc
{ {
public: public:
virtual Item* create(THD *thd, LEX_STRING db, LEX_STRING name, 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; static Create_sp_func s_singleton;
...@@ -2316,7 +2316,7 @@ Create_qfunc::create(THD *thd, LEX_STRING name, List<Item> *item_list) ...@@ -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)) if (thd->copy_db_to(&db.str, &db.length))
return NULL; 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; ...@@ -2433,7 +2433,7 @@ Create_sp_func Create_sp_func::s_singleton;
Item* Item*
Create_sp_func::create(THD *thd, LEX_STRING db, LEX_STRING name, 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; int arg_count= 0;
Item *func= NULL; Item *func= NULL;
...@@ -2458,7 +2458,7 @@ Create_sp_func::create(THD *thd, LEX_STRING db, LEX_STRING name, ...@@ -2458,7 +2458,7 @@ Create_sp_func::create(THD *thd, LEX_STRING db, LEX_STRING name,
if (item_list != NULL) if (item_list != NULL)
arg_count= item_list->elements; 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); qname->init_qname(thd);
sp_add_used_routine(lex, thd, qname, TYPE_ENUM_FUNCTION); sp_add_used_routine(lex, thd, qname, TYPE_ENUM_FUNCTION);
......
...@@ -87,11 +87,12 @@ public: ...@@ -87,11 +87,12 @@ public:
@param thd The current thread @param thd The current thread
@param db The database name @param db The database name
@param name The function 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 @param item_list The list of arguments to the function, can be NULL
@return An item representing the parsed function call @return An item representing the parsed function call
*/ */
virtual Item* create(THD *thd, LEX_STRING db, LEX_STRING name, 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: protected:
/** Constructor. */ /** Constructor. */
......
...@@ -6921,7 +6921,7 @@ function_call_generic: ...@@ -6921,7 +6921,7 @@ function_call_generic:
builder= find_qualified_function_builder(thd); builder= find_qualified_function_builder(thd);
DBUG_ASSERT(builder); DBUG_ASSERT(builder);
item= builder->create(thd, $1, $3, $5); item= builder->create(thd, $1, $3, true, $5);
if (! ($$= item)) 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