diff --git a/mysql-test/r/sp.result b/mysql-test/r/sp.result index 17e8e499c8d..566b80061d5 100644 --- a/mysql-test/r/sp.result +++ b/mysql-test/r/sp.result @@ -1649,3 +1649,8 @@ call p1(); 1 drop procedure p1; drop table t1; +create function `foo` () returns int return 5; +select `foo` (); +`foo` () +5 +drop function `foo`; diff --git a/mysql-test/t/sp.test b/mysql-test/t/sp.test index d53cce58767..187f0b344e1 100644 --- a/mysql-test/t/sp.test +++ b/mysql-test/t/sp.test @@ -1853,3 +1853,9 @@ call p1(); drop procedure p1; drop table t1; +# +# backticks +# +create function `foo` () returns int return 5; +select `foo` (); +drop function `foo`; diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy index 9458b3830bf..563c6c2b5ae 100644 --- a/sql/sql_yacc.yy +++ b/sql/sql_yacc.yy @@ -3609,8 +3609,12 @@ select_item: YYABORT; if ($4.str) $2->set_name($4.str,$4.length,system_charset_info); - else if (!$2->name) - $2->set_name($1,(uint) ($3 - $1), YYTHD->charset()); + else if (!$2->name) { + char *str = $1; + if (str[-1] == '`') + str--; + $2->set_name(str,(uint) ($3 - str), YYTHD->charset()); + } }; remember_name: