Commit 09eff0aa authored by unknown's avatar unknown
Browse files

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
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -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);

+2 −1
Original line number Diff line number Diff line
@@ -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. */
+1 −1
Original line number Diff line number Diff line
@@ -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))
          {