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:
@ -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 }
|
||||
};
|
||||
|
||||
|
Reference in New Issue
Block a user