1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-29 05:21:33 +03:00

Bug#19671 mysql_list_fields returns incorrect table name for VIEWs

After view onening real view db name and table name are placed
into table_list->view_db & table_list->view_name.
Item_field class does not handle these names properly during 
intialization of Send_field.
The fix is to use new class 'Item_ident_for_show' 
which sets correct view db name and table name for Send_field.
This commit is contained in:
gluh@eagle.intranet.mysql.r18.ru
2006-06-29 16:52:46 +05:00
parent 9901efea1f
commit f9214221fc
4 changed files with 76 additions and 2 deletions

View File

@ -8311,6 +8311,39 @@ static void test_list_fields()
}
static void test_bug19671()
{
MYSQL_RES *result;
int rc;
myheader("test_bug19671");
rc= mysql_query(mysql, "drop table if exists t1");
myquery(rc);
rc= mysql_query(mysql, "drop view if exists v1");
myquery(rc);
rc= mysql_query(mysql, "create table t1(f1 int)");
myquery(rc);
rc= mysql_query(mysql, "create view v1 as select va.* from t1 va");
myquery(rc);
result= mysql_list_fields(mysql, "v1", NULL);
mytest(result);
rc= my_process_result_set(result);
DIE_UNLESS(rc == 0);
verify_prepare_field(result, 0, "f1", "f1", MYSQL_TYPE_LONG,
"v1", "v1", current_db, 11, "0");
mysql_free_result(result);
myquery(mysql_query(mysql, "drop view v1"));
myquery(mysql_query(mysql, "drop table t1"));
}
/* Test a memory ovverun bug */
static void test_mem_overun()
@ -15195,6 +15228,7 @@ static struct my_tests_st my_tests[]= {
{ "test_bug15613", test_bug15613 },
{ "test_bug14169", test_bug14169 },
{ "test_bug17667", test_bug17667 },
{ "test_bug19671", test_bug19671},
{ 0, 0 }
};