summaryrefslogtreecommitdiff
path: root/sql
diff options
context:
space:
mode:
authorunknown <iggy@recycle.(none)>2007-03-29 12:20:13 -0400
committerunknown <iggy@recycle.(none)>2007-03-29 12:20:13 -0400
commit480c30d932a1bdea396035953c649b13de44292c (patch)
tree9daaa23dadd2e4acbc8f89fa6f45a1dfd0f41838 /sql
parent8dc103f87bd3c54ad81756fce267fb46cbef2e8d (diff)
parent609277f942e5479976d5a1f31da55fd2cf646109 (diff)
downloadmariadb-git-480c30d932a1bdea396035953c649b13de44292c.tar.gz
Merge bk-internal.mysql.com:/home/bk/mysql-5.0-maint
into recycle.(none):/src/bug23491/my50-bug23491 mysql-test/t/mysqldump.test: Auto merged sql/item_func.cc: Auto merged sql/sp_head.h: Auto merged sql/sql_yacc.yy: Auto merged mysql-test/r/mysqldump.result: SCCS merged
Diffstat (limited to 'sql')
-rw-r--r--sql/item_func.cc9
-rw-r--r--sql/sp.cc2
-rw-r--r--sql/sp_head.h6
-rw-r--r--sql/sql_yacc.yy8
4 files changed, 15 insertions, 10 deletions
diff --git a/sql/item_func.cc b/sql/item_func.cc
index 3d92be5e9d2..76f8433ebe3 100644
--- a/sql/item_func.cc
+++ b/sql/item_func.cc
@@ -5035,7 +5035,7 @@ Item_func_sp::func_name() const
{
THD *thd= current_thd;
/* Calculate length to avoid reallocation of string for sure */
- uint len= ((m_name->m_db.length +
+ uint len= ((m_name->m_explicit_name ? m_name->m_db.length : 0 +
m_name->m_name.length)*2 + //characters*quoting
2 + // ` and `
1 + // .
@@ -5045,8 +5045,11 @@ Item_func_sp::func_name() const
system_charset_info);
qname.length(0);
- append_identifier(thd, &qname, m_name->m_db.str, m_name->m_db.length);
- qname.append('.');
+ if (m_name->m_explicit_name)
+ {
+ append_identifier(thd, &qname, m_name->m_db.str, m_name->m_db.length);
+ qname.append('.');
+ }
append_identifier(thd, &qname, m_name->m_name.str, m_name->m_name.length);
return qname.ptr();
}
diff --git a/sql/sp.cc b/sql/sp.cc
index 2bb13b02e14..c8701aa2c87 100644
--- a/sql/sp.cc
+++ b/sql/sp.cc
@@ -1068,7 +1068,7 @@ sp_exist_routines(THD *thd, TABLE_LIST *routines, bool any, bool no_error)
lex_name.length= strlen(routine->table_name);
lex_db.str= thd->strmake(routine->db, lex_db.length);
lex_name.str= thd->strmake(routine->table_name, lex_name.length);
- name= new sp_name(lex_db, lex_name);
+ name= new sp_name(lex_db, lex_name, true);
name->init_qname(thd);
sp_object_found= sp_find_routine(thd, TYPE_ENUM_PROCEDURE, name,
&thd->sp_proc_cache, FALSE) != NULL ||
diff --git a/sql/sp_head.h b/sql/sp_head.h
index 901b7a19c39..cce400d6a14 100644
--- a/sql/sp_head.h
+++ b/sql/sp_head.h
@@ -59,9 +59,10 @@ public:
calling set_routine_type().
*/
LEX_STRING m_sroutines_key;
+ bool m_explicit_name; /**< Prepend the db name? */
- sp_name(LEX_STRING db, LEX_STRING name)
- : m_db(db), m_name(name)
+ sp_name(LEX_STRING db, LEX_STRING name, bool use_explicit_name)
+ : m_db(db), m_name(name), m_explicit_name(use_explicit_name)
{
m_qname.str= m_sroutines_key.str= 0;
m_qname.length= m_sroutines_key.length= 0;
@@ -79,6 +80,7 @@ public:
m_name.length= m_qname.length= key_len - 1;
m_db.str= 0;
m_db.length= 0;
+ m_explicit_name= false;
}
// Init. the qualified name from the db and name.
diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy
index 45c2b663a05..9cc029e474a 100644
--- a/sql/sql_yacc.yy
+++ b/sql/sql_yacc.yy
@@ -1577,7 +1577,7 @@ sp_name:
my_error(ER_SP_WRONG_NAME, MYF(0), $3.str);
MYSQL_YYABORT;
}
- $$= new sp_name($1, $3);
+ $$= new sp_name($1, $3, true);
$$->init_qname(YYTHD);
}
| ident
@@ -1591,7 +1591,7 @@ sp_name:
}
if (thd->copy_db_to(&db.str, &db.length))
MYSQL_YYABORT;
- $$= new sp_name(db, $1);
+ $$= new sp_name(db, $1, false);
if ($$)
$$->init_qname(YYTHD);
}
@@ -5041,7 +5041,7 @@ simple_expr:
| ident '.' ident '(' opt_expr_list ')'
{
LEX *lex= Lex;
- sp_name *name= new sp_name($1, $3);
+ sp_name *name= new sp_name($1, $3, true);
name->init_qname(YYTHD);
sp_add_used_routine(lex, YYTHD, name, TYPE_ENUM_FUNCTION);
@@ -5156,7 +5156,7 @@ simple_expr:
LEX_STRING db;
if (thd->copy_db_to(&db.str, &db.length))
MYSQL_YYABORT;
- sp_name *name= new sp_name(db, $1);
+ sp_name *name= new sp_name(db, $1, false);
if (name)
name->init_qname(thd);