diff options
author | unknown <bell@sanja.is.com.ua> | 2005-03-23 08:36:48 +0200 |
---|---|---|
committer | unknown <bell@sanja.is.com.ua> | 2005-03-23 08:36:48 +0200 |
commit | 79a23f7466e99ebfd872d213c4abbd99d448f8ab (patch) | |
tree | 1a44d0ad7fd7c6b39daf960d107346319e9f5e74 /sql/sql_union.cc | |
parent | b48bec7ed0e913b9fe01305f11436f7eb8513e95 (diff) | |
download | mariadb-git-79a23f7466e99ebfd872d213c4abbd99d448f8ab.tar.gz |
fixed union types merging and table related metadata (BUG#8824)
mysql-test/r/func_group.result:
new result
mysql-test/r/metadata.result:
new result
test of metadata of variables, unions and derived tables
mysql-test/r/union.result:
new results
test of union of enum
mysql-test/t/metadata.test:
test of metadata of variables, unions and derived tables
mysql-test/t/union.test:
test of union of enum
sql/field.cc:
Field type merging rules added
Fixed table name/alias returting for field made from temporary tables
sql/field.h:
removed unned field type reporting
sql/item.cc:
fixed bug in NEW_DATE type field creartion
replaced mechanism of merging types of UNION
sql/item.h:
replaced mechanism of merging types of UNION
sql/item_func.h:
new item type to make correct field type detection possible
sql/item_subselect.cc:
added table name parameter to prepare() to show right table alias for derived tables
sql/sql_derived.cc:
added table name parameter to prepare() to show right table alias for derived tables
sql/sql_lex.h:
added table name parameter to prepare() to show right table alias for derived tables
sql/sql_parse.cc:
made function for enum/set pack length calculation
sql/sql_prepare.cc:
added table name parameter to prepare() to show right table alias for derived tables
sql/sql_select.cc:
new temporary table field creation by Item_type_holder
fixed table alias for temporary table
sql/sql_union.cc:
added table name parameter to prepare() to show right table alias for derived tables
Diffstat (limited to 'sql/sql_union.cc')
-rw-r--r-- | sql/sql_union.cc | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/sql/sql_union.cc b/sql/sql_union.cc index 5fd59500ace..57479d6f64f 100644 --- a/sql/sql_union.cc +++ b/sql/sql_union.cc @@ -29,7 +29,7 @@ int mysql_union(THD *thd, LEX *lex, select_result *result, { DBUG_ENTER("mysql_union"); int res= 0; - if (!(res= unit->prepare(thd, result, SELECT_NO_UNLOCK))) + if (!(res= unit->prepare(thd, result, SELECT_NO_UNLOCK, ""))) res= unit->exec(); res|= unit->cleanup(); DBUG_RETURN(res); @@ -142,7 +142,8 @@ st_select_lex_unit::init_prepare_fake_select_lex(THD *thd) int st_select_lex_unit::prepare(THD *thd_arg, select_result *sel_result, - ulong additional_options) + ulong additional_options, + const char *tmp_table_alias) { SELECT_LEX *lex_select_save= thd_arg->lex->current_select; SELECT_LEX *sl, *first_select; @@ -252,7 +253,7 @@ int st_select_lex_unit::prepare(THD *thd_arg, select_result *sel_result, while ((item_tmp= it++)) { /* Error's in 'new' will be detected after loop */ - types.push_back(new Item_type_holder(thd_arg, item_tmp, empty_table)); + types.push_back(new Item_type_holder(thd_arg, item_tmp)); } if (thd_arg->is_fatal_error) @@ -271,8 +272,7 @@ int st_select_lex_unit::prepare(THD *thd_arg, select_result *sel_result, Item *type, *item_tmp; while ((type= tp++, item_tmp= it++)) { - if (((Item_type_holder*)type)->join_types(thd_arg, item_tmp, - empty_table)) + if (((Item_type_holder*)type)->join_types(thd_arg, item_tmp)) DBUG_RETURN(-1); } } @@ -304,7 +304,7 @@ int st_select_lex_unit::prepare(THD *thd_arg, select_result *sel_result, (first_select_in_union()->options | thd_arg->options | TMP_TABLE_ALL_COLUMNS), - HA_POS_ERROR, (char*) ""))) + HA_POS_ERROR, (char *) tmp_table_alias))) goto err; table->file->extra(HA_EXTRA_WRITE_CACHE); table->file->extra(HA_EXTRA_IGNORE_DUP_KEY); |