diff options
author | gkodinov/kgeorge@macbook.gmz <> | 2006-10-16 13:24:54 +0300 |
---|---|---|
committer | gkodinov/kgeorge@macbook.gmz <> | 2006-10-16 13:24:54 +0300 |
commit | dff0a1ac7cffb8e2f85a2c486a45baf397920006 (patch) | |
tree | 33ab2d08c472fe2b9dcbf3904fe634943d077973 | |
parent | ea8a646dc0fcf2cd36475e932f29348ce04dc120 (diff) | |
parent | 115616381dd2238d4889271357d7cae228ae09fa (diff) | |
download | mariadb-git-dff0a1ac7cffb8e2f85a2c486a45baf397920006.tar.gz |
Merge macbook.gmz:/Users/kgeorge/mysql/work/B14019-4.1-opt
into macbook.gmz:/Users/kgeorge/mysql/work/B14019-5.0-opt
-rw-r--r-- | mysql-test/r/func_gconcat.result | 5 | ||||
-rw-r--r-- | mysql-test/r/group_by.result | 45 | ||||
-rw-r--r-- | mysql-test/t/func_gconcat.test | 1 | ||||
-rw-r--r-- | mysql-test/t/group_by.test | 24 | ||||
-rw-r--r-- | sql/sql_base.cc | 11 |
5 files changed, 78 insertions, 8 deletions
diff --git a/mysql-test/r/func_gconcat.result b/mysql-test/r/func_gconcat.result index 93925670d01..5dbbd891427 100644 --- a/mysql-test/r/func_gconcat.result +++ b/mysql-test/r/func_gconcat.result @@ -74,11 +74,6 @@ grp group_concat(c order by 1) 1 a 2 b,c 3 C,D,d,d,D,E -select grp,group_concat(c order by "c") from t1 group by grp; -grp group_concat(c order by "c") -1 a -2 b,c -3 C,D,d,d,D,E select grp,group_concat(distinct c order by c) from t1 group by grp; grp group_concat(distinct c order by c) 1 a diff --git a/mysql-test/r/group_by.result b/mysql-test/r/group_by.result index 5a55abbc923..679106bd71b 100644 --- a/mysql-test/r/group_by.result +++ b/mysql-test/r/group_by.result @@ -775,6 +775,51 @@ select sql_buffer_result max(f1)+1 from t1; max(f1)+1 3 drop table t1; +CREATE TABLE t1(a INT); +INSERT INTO t1 VALUES (1),(2); +SELECT a FROM t1 GROUP BY 'a'; +a +1 +SELECT a FROM t1 GROUP BY "a"; +a +1 +SELECT a FROM t1 GROUP BY `a`; +a +1 +2 +set sql_mode=ANSI_QUOTES; +SELECT a FROM t1 GROUP BY "a"; +a +1 +2 +SELECT a FROM t1 GROUP BY 'a'; +a +1 +SELECT a FROM t1 GROUP BY `a`; +a +1 +2 +set sql_mode=''; +SELECT a FROM t1 HAVING 'a' > 1; +a +SELECT a FROM t1 HAVING "a" > 1; +a +SELECT a FROM t1 HAVING `a` > 1; +a +2 +SELECT a FROM t1 ORDER BY 'a' DESC; +a +1 +2 +SELECT a FROM t1 ORDER BY "a" DESC; +a +1 +2 +SELECT a FROM t1 ORDER BY `a` DESC; +a +2 +1 +DROP TABLE t1; create table t1 (c1 char(3), c2 char(3)); create table t2 (c3 char(3), c4 char(3)); insert into t1 values ('aaa', 'bb1'), ('aaa', 'bb2'); diff --git a/mysql-test/t/func_gconcat.test b/mysql-test/t/func_gconcat.test index b5c468e1638..1065bb5b93e 100644 --- a/mysql-test/t/func_gconcat.test +++ b/mysql-test/t/func_gconcat.test @@ -32,7 +32,6 @@ select grp,group_concat(d order by a desc) from t1 group by grp; select grp,group_concat(a order by a,d+c-ascii(c)-a) from t1 group by grp; select grp,group_concat(a order by d+c-ascii(c),a) from t1 group by grp; select grp,group_concat(c order by 1) from t1 group by grp; -select grp,group_concat(c order by "c") from t1 group by grp; select grp,group_concat(distinct c order by c) from t1 group by grp; select grp,group_concat(distinct c order by c desc) from t1 group by grp; explain extended select grp,group_concat(distinct c order by c desc) from t1 group by grp; diff --git a/mysql-test/t/group_by.test b/mysql-test/t/group_by.test index 5d47f64f3d1..3e926fba0c6 100644 --- a/mysql-test/t/group_by.test +++ b/mysql-test/t/group_by.test @@ -609,6 +609,30 @@ select sql_buffer_result max(f1) is null from t1; select sql_buffer_result max(f1)+1 from t1; drop table t1; +# +# BUG#14019-4.1-opt +# +CREATE TABLE t1(a INT); INSERT INTO t1 VALUES (1),(2); + +SELECT a FROM t1 GROUP BY 'a'; +SELECT a FROM t1 GROUP BY "a"; +SELECT a FROM t1 GROUP BY `a`; + +set sql_mode=ANSI_QUOTES; +SELECT a FROM t1 GROUP BY "a"; +SELECT a FROM t1 GROUP BY 'a'; +SELECT a FROM t1 GROUP BY `a`; +set sql_mode=''; + +SELECT a FROM t1 HAVING 'a' > 1; +SELECT a FROM t1 HAVING "a" > 1; +SELECT a FROM t1 HAVING `a` > 1; + +SELECT a FROM t1 ORDER BY 'a' DESC; +SELECT a FROM t1 ORDER BY "a" DESC; +SELECT a FROM t1 ORDER BY `a` DESC; +DROP TABLE t1; + # End of 4.1 tests # diff --git a/sql/sql_base.cc b/sql/sql_base.cc index 85be84d1270..047fb8f3cff 100644 --- a/sql/sql_base.cc +++ b/sql/sql_base.cc @@ -3450,13 +3450,20 @@ find_item_in_list(Item *find, List<Item> &items, uint *counter, const char *field_name=0; const char *table_name=0; bool found_unaliased_non_uniq= 0; + /* + true if the item that we search for is a valid name reference + (and not an item that happens to have a name). + */ + bool is_ref_by_name= 0; uint unaliased_counter; LINT_INIT(unaliased_counter); // Dependent on found_unaliased *unaliased= FALSE; - if (find->type() == Item::FIELD_ITEM || find->type() == Item::REF_ITEM) + is_ref_by_name= (find->type() == Item::FIELD_ITEM || + find->type() == Item::REF_ITEM); + if (is_ref_by_name) { field_name= ((Item_ident*) find)->field_name; table_name= ((Item_ident*) find)->table_name; @@ -3568,7 +3575,7 @@ find_item_in_list(Item *find, List<Item> &items, uint *counter, } } else if (!table_name && (find->eq(item,0) || - find->name && item->name && + is_ref_by_name && find->name && item->name && !my_strcasecmp(system_charset_info, item->name,find->name))) { |