Commit 9069a936 authored by msvensson@neptunus.(none)'s avatar msvensson@neptunus.(none)

Merge neptunus.(none):/home/msvensson/mysql/bug17039/my51-bug17039

into  neptunus.(none):/home/msvensson/mysql/mysql-5.1-new-maint
parents 1547a738 658623bd
...@@ -689,7 +689,17 @@ bool st_select_lex_unit::change_result(select_subselect *result, ...@@ -689,7 +689,17 @@ bool st_select_lex_unit::change_result(select_subselect *result,
List<Item> *st_select_lex_unit::get_unit_column_types() List<Item> *st_select_lex_unit::get_unit_column_types()
{ {
bool is_union= test(first_select()->next_select()); SELECT_LEX *sl= first_select();
bool is_union= test(sl->next_select());
bool is_procedure= test(sl->join->procedure);
if (is_procedure)
{
/* Types for "SELECT * FROM t1 procedure analyse()"
are generated during execute */
return &sl->join->procedure_fields_list;
}
if (is_union) if (is_union)
{ {
...@@ -697,7 +707,8 @@ List<Item> *st_select_lex_unit::get_unit_column_types() ...@@ -697,7 +707,8 @@ List<Item> *st_select_lex_unit::get_unit_column_types()
/* Types are generated during prepare */ /* Types are generated during prepare */
return &types; return &types;
} }
return &first_select()->item_list;
return &sl->item_list;
} }
bool st_select_lex::cleanup() bool st_select_lex::cleanup()
......
...@@ -11977,6 +11977,19 @@ static void test_cursors_with_union() ...@@ -11977,6 +11977,19 @@ static void test_cursors_with_union()
fetch_n(queries, sizeof(queries)/sizeof(*queries), USE_STORE_RESULT); fetch_n(queries, sizeof(queries)/sizeof(*queries), USE_STORE_RESULT);
} }
static void test_cursors_with_procedure()
{
const char *queries[]=
{
"SELECT * FROM t1 procedure analyse()"
};
myheader("test_cursors_with_procedure");
fetch_n(queries, sizeof(queries)/sizeof(*queries), USE_ROW_BY_ROW_FETCH);
fetch_n(queries, sizeof(queries)/sizeof(*queries), USE_STORE_RESULT);
}
/* /*
Altough mysql_create_db(), mysql_rm_db() are deprecated since 4.0 they Altough mysql_create_db(), mysql_rm_db() are deprecated since 4.0 they
should not crash server and should not hang in case of errors. should not crash server and should not hang in case of errors.
...@@ -15702,6 +15715,7 @@ static struct my_tests_st my_tests[]= { ...@@ -15702,6 +15715,7 @@ static struct my_tests_st my_tests[]= {
{ "test_view_insert_fields", test_view_insert_fields }, { "test_view_insert_fields", test_view_insert_fields },
{ "test_basic_cursors", test_basic_cursors }, { "test_basic_cursors", test_basic_cursors },
{ "test_cursors_with_union", test_cursors_with_union }, { "test_cursors_with_union", test_cursors_with_union },
{ "test_cursors_with_procedure", test_cursors_with_procedure },
{ "test_truncation", test_truncation }, { "test_truncation", test_truncation },
{ "test_truncation_option", test_truncation_option }, { "test_truncation_option", test_truncation_option },
{ "test_client_character_set", test_client_character_set }, { "test_client_character_set", test_client_character_set },
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment