summaryrefslogtreecommitdiff
path: root/sql/sql_select.cc
diff options
context:
space:
mode:
authorunknown <monty@mysql.com>2004-09-03 22:38:45 +0300
committerunknown <monty@mysql.com>2004-09-03 22:38:45 +0300
commit99be6d3060b894b276c16fb9994dbf486c2d69be (patch)
tree9135550a8742bce25308042b7911105df3d70963 /sql/sql_select.cc
parent2c3f49a64d773395cc0e41fb35c5b6e3b5a56871 (diff)
parentd0211cf5beae33c7f33d7aab6acebe13892af47c (diff)
downloadmariadb-git-99be6d3060b894b276c16fb9994dbf486c2d69be.tar.gz
Merge with pulled code
mysql-test/r/view.result: Auto merged sql/item_subselect.cc: Auto merged sql/item_subselect.h: Auto merged sql/mysql_priv.h: Auto merged sql/sql_acl.cc: Auto merged sql/sql_lex.cc: Auto merged sql/sql_parse.cc: Auto merged sql/sql_prepare.cc: Auto merged sql/sql_show.cc: Auto merged sql/sql_update.cc: Auto merged sql/table.h: Auto merged tests/client_test.c: Auto merged sql/sql_base.cc: Merge sql/sql_insert.cc: Merge sql/sql_select.cc: Merge sql/sql_view.cc: Merge sql/table.cc: Merge
Diffstat (limited to 'sql/sql_select.cc')
-rw-r--r--sql/sql_select.cc66
1 files changed, 30 insertions, 36 deletions
diff --git a/sql/sql_select.cc b/sql/sql_select.cc
index 1768f332fd3..3e0ed0de96c 100644
--- a/sql/sql_select.cc
+++ b/sql/sql_select.cc
@@ -225,25 +225,18 @@ int handle_select(THD *thd, LEX *lex, select_result *result)
thd->net.report_error));
if (thd->net.report_error)
res= 1;
- if (res > 0)
+ if (unlikely(res))
{
if (result)
{
- result->send_error(0, NullS);
+ if (res > 0)
+ result->send_error(0, NullS);
result->abort();
}
- else
+ else if (res > 0)
send_error(thd, 0, NullS);
res= 1; // Error sent to client
}
- if (res < 0)
- {
- if (result)
- {
- result->abort();
- }
- res= 1;
- }
if (result != lex->result)
delete result;
DBUG_RETURN(res);
@@ -348,9 +341,7 @@ JOIN::prepare(Item ***rref_pointer_array,
if ((subselect= select_lex->master_unit()->item))
{
Item_subselect::trans_res res;
- if ((res= ((!thd->lex->view_prepare_mode) ?
- subselect->select_transformer(this) :
- subselect->no_select_transform())) !=
+ if ((res= subselect->select_transformer(this)) !=
Item_subselect::RES_OK)
{
select_lex->fix_prepare_information(thd, &conds);
@@ -11568,7 +11559,7 @@ int mysql_explain_union(THD *thd, SELECT_LEX_UNIT *unit, select_result *result)
SYNOPSIS
print_join()
thd thread handler
- str string where table should bbe printed
+ str string where table should be printed
tables list of tables in join
*/
@@ -11624,31 +11615,33 @@ void st_table_list::print(THD *thd, String *str)
print_join(thd, str, &nested_join->join_list);
str->append(')');
}
- else if (view_name.str)
+ else
{
- append_identifier(thd, str, view_db.str, view_db.length);
- str->append('.');
- append_identifier(thd, str, view_name.str, view_name.length);
- if (my_strcasecmp(table_alias_charset, view_name.str, alias))
+ const char *cmp_name; // Name to compare with alias
+ if (view_name.str)
{
- str->append(' ');
- append_identifier(thd, str, alias, strlen(alias));
+ append_identifier(thd, str, view_db.str, view_db.length);
+ str->append('.');
+ append_identifier(thd, str, view_name.str, view_name.length);
+ cmp_name= view_name.str;
}
- }
- else if (derived)
- {
- str->append('(');
- derived->print(str);
- str->append(") ", 2);
- append_identifier(thd, str, alias, strlen(alias));
- }
- else
- {
- append_identifier(thd, str, db, db_length);
- str->append('.');
- append_identifier(thd, str, real_name, real_name_length);
- if (my_strcasecmp(table_alias_charset, real_name, alias))
+ else if (derived)
+ {
+ str->append('(');
+ derived->print(str);
+ str->append(')');
+ cmp_name= ""; // Force printing of alias
+ }
+ else
{
+ append_identifier(thd, str, db, db_length);
+ str->append('.');
+ append_identifier(thd, str, real_name, real_name_length);
+ cmp_name= real_name;
+ }
+ if (my_strcasecmp(table_alias_charset, cmp_name, alias))
+ {
+ {
str->append(' ');
append_identifier(thd, str, alias, strlen(alias));
}
@@ -11656,6 +11649,7 @@ void st_table_list::print(THD *thd, String *str)
}
+
void st_select_lex::print(THD *thd, String *str)
{
if (!thd)