diff options
author | unknown <msvensson@neptunus.(none)> | 2006-10-18 22:58:04 +0200 |
---|---|---|
committer | unknown <msvensson@neptunus.(none)> | 2006-10-18 22:58:04 +0200 |
commit | 6b6deee80a7df76665ba971bce9456bfe209965e (patch) | |
tree | 155276e4e8a3b5941adf60d3ebcad0683e2594f3 | |
parent | 2bffa0559402ee30e1977e09e737e0ce31fbc9cb (diff) | |
parent | 7f713ab402628ddbdf7a5024801d267b9ee7c078 (diff) | |
download | mariadb-git-6b6deee80a7df76665ba971bce9456bfe209965e.tar.gz |
Merge neptunus.(none):/home/msvensson/mysql/bug17039/my50-bug17039
into neptunus.(none):/home/msvensson/mysql/bug17039/my51-bug17039
sql/sql_union.cc:
Auto merged
tests/mysql_client_test.c:
Auto merged
-rw-r--r-- | sql/sql_union.cc | 15 | ||||
-rw-r--r-- | tests/mysql_client_test.c | 14 |
2 files changed, 27 insertions, 2 deletions
diff --git a/sql/sql_union.cc b/sql/sql_union.cc index 3e6a3944093..b4a84089e62 100644 --- a/sql/sql_union.cc +++ b/sql/sql_union.cc @@ -689,7 +689,17 @@ bool st_select_lex_unit::change_result(select_subselect *result, 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) { @@ -697,7 +707,8 @@ List<Item> *st_select_lex_unit::get_unit_column_types() /* Types are generated during prepare */ return &types; } - return &first_select()->item_list; + + return &sl->item_list; } bool st_select_lex::cleanup() diff --git a/tests/mysql_client_test.c b/tests/mysql_client_test.c index cd9ac675c25..b6bea39f3de 100644 --- a/tests/mysql_client_test.c +++ b/tests/mysql_client_test.c @@ -11977,6 +11977,19 @@ static void test_cursors_with_union() 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 should not crash server and should not hang in case of errors. @@ -15665,6 +15678,7 @@ static struct my_tests_st my_tests[]= { { "test_view_insert_fields", test_view_insert_fields }, { "test_basic_cursors", test_basic_cursors }, { "test_cursors_with_union", test_cursors_with_union }, + { "test_cursors_with_procedure", test_cursors_with_procedure }, { "test_truncation", test_truncation }, { "test_truncation_option", test_truncation_option }, { "test_client_character_set", test_client_character_set }, |