diff options
author | Alexander Nozdrin <alik@sun.com> | 2010-01-31 01:06:50 +0300 |
---|---|---|
committer | Alexander Nozdrin <alik@sun.com> | 2010-01-31 01:06:50 +0300 |
commit | 2b0f6b5ace4b455344dc25e400873d3d68c90090 (patch) | |
tree | 64c1a58bb6f6f5516fbf930759b54e0081b98b90 /sql/sql_select.cc | |
parent | 22e0e72370ddbd95d0438b769ac5dda82b2c9b0a (diff) | |
parent | d9e9a73e8f1355a24b27d64d56d555d045ee0b4c (diff) | |
download | mariadb-git-2b0f6b5ace4b455344dc25e400873d3d68c90090.tar.gz |
Manual merge from mysql-trunk-merge.
Conflicts:
- mysql-test/suite/rpl/r/rpl_binlog_grant.result
- mysql-test/suite/rpl/r/rpl_sp.result
- mysql-test/suite/rpl/t/rpl_binlog_grant.test
- sql/sql_parse.cc
- sql/sql_table.cc
- sql/sql_test.cc
Diffstat (limited to 'sql/sql_select.cc')
-rw-r--r-- | sql/sql_select.cc | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/sql/sql_select.cc b/sql/sql_select.cc index 5cef405fe53..edeeb143333 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -542,13 +542,26 @@ JOIN::prepare(Item ***rref_pointer_array, if (order) { + bool real_order= FALSE; ORDER *ord; for (ord= order; ord; ord= ord->next) { Item *item= *ord->item; + /* + Disregard sort order if there's only "{VAR}CHAR(0) NOT NULL" fields + there. Such fields don't contain any data to sort. + */ + if (!real_order && + (item->type() != Item::Item::FIELD_ITEM || + ((Item_field *) item)->field->maybe_null() || + ((Item_field *) item)->field->sort_length())) + real_order= TRUE; + if (item->with_sum_func && item->type() != Item::SUM_FUNC_ITEM) item->split_sum_func(thd, ref_pointer_array, all_fields); } + if (!real_order) + order= NULL; } if (having && having->with_sum_func) |