Loading mysql-test/r/distinct.result +21 −0 Original line number Diff line number Diff line Loading @@ -512,3 +512,24 @@ id IFNULL(dsc, '-') 2 line number two 3 line number three drop table t1; CREATE TABLE t1 ( ID int(11) NOT NULL auto_increment, x varchar(20) default NULL, y decimal(10,0) default NULL, PRIMARY KEY (ID), KEY (y) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; INSERT INTO t1 VALUES (1,'ba','-1'), (2,'ba','1150'), (306,'ba','-1'), (307,'ba','1150'), (611,'ba','-1'), (612,'ba','1150'); select count(distinct x,y) from t1; count(distinct x,y) 2 select count(distinct concat(x,y)) from t1; count(distinct concat(x,y)) 2 drop table t1; mysql-test/t/distinct.test +24 −0 Original line number Diff line number Diff line Loading @@ -358,3 +358,27 @@ select distinct id, IFNULL(dsc, '-') from t1; drop table t1; # End of 4.1 tests # # Bug #15745 ( COUNT(DISTINCT CONCAT(x,y)) returns wrong result) # CREATE TABLE t1 ( ID int(11) NOT NULL auto_increment, x varchar(20) default NULL, y decimal(10,0) default NULL, PRIMARY KEY (ID), KEY (y) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; INSERT INTO t1 VALUES (1,'ba','-1'), (2,'ba','1150'), (306,'ba','-1'), (307,'ba','1150'), (611,'ba','-1'), (612,'ba','1150'); select count(distinct x,y) from t1; select count(distinct concat(x,y)) from t1; drop table t1; sql/item_sum.cc +3 −3 Original line number Diff line number Diff line Loading @@ -2541,9 +2541,9 @@ bool Item_sum_count_distinct::setup(THD *thd) Field *f= *field; enum enum_field_types type= f->type(); tree_key_length+= f->pack_length(); if (!f->binary() && (type == MYSQL_TYPE_STRING || type == MYSQL_TYPE_VAR_STRING || type == MYSQL_TYPE_VARCHAR)) if ((type == MYSQL_TYPE_VARCHAR) || !f->binary() && (type == MYSQL_TYPE_STRING || type == MYSQL_TYPE_VAR_STRING)) { all_binary= FALSE; break; Loading sql/sql_lex.cc +2 −1 Original line number Diff line number Diff line Loading @@ -223,7 +223,7 @@ static int find_keyword(LEX *lex, uint len, bool function) SYNOPSIS is_keyword() name checked name name checked name (must not be empty) len length of checked name RETURN VALUES Loading @@ -233,6 +233,7 @@ static int find_keyword(LEX *lex, uint len, bool function) bool is_keyword(const char *name, uint len) { DBUG_ASSERT(len != 0); return get_hash_symbol(name,len,0)!=0; } Loading sql/sql_show.cc +2 −1 Original line number Diff line number Diff line Loading @@ -713,7 +713,8 @@ append_identifier(THD *thd, String *packet, const char *name, uint length) int get_quote_char_for_identifier(THD *thd, const char *name, uint length) { if (!is_keyword(name,length) && if (!length || !is_keyword(name,length) && !require_quotes(name, length) && !(thd->options & OPTION_QUOTE_SHOW_CREATE)) return EOF; Loading Loading
mysql-test/r/distinct.result +21 −0 Original line number Diff line number Diff line Loading @@ -512,3 +512,24 @@ id IFNULL(dsc, '-') 2 line number two 3 line number three drop table t1; CREATE TABLE t1 ( ID int(11) NOT NULL auto_increment, x varchar(20) default NULL, y decimal(10,0) default NULL, PRIMARY KEY (ID), KEY (y) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; INSERT INTO t1 VALUES (1,'ba','-1'), (2,'ba','1150'), (306,'ba','-1'), (307,'ba','1150'), (611,'ba','-1'), (612,'ba','1150'); select count(distinct x,y) from t1; count(distinct x,y) 2 select count(distinct concat(x,y)) from t1; count(distinct concat(x,y)) 2 drop table t1;
mysql-test/t/distinct.test +24 −0 Original line number Diff line number Diff line Loading @@ -358,3 +358,27 @@ select distinct id, IFNULL(dsc, '-') from t1; drop table t1; # End of 4.1 tests # # Bug #15745 ( COUNT(DISTINCT CONCAT(x,y)) returns wrong result) # CREATE TABLE t1 ( ID int(11) NOT NULL auto_increment, x varchar(20) default NULL, y decimal(10,0) default NULL, PRIMARY KEY (ID), KEY (y) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; INSERT INTO t1 VALUES (1,'ba','-1'), (2,'ba','1150'), (306,'ba','-1'), (307,'ba','1150'), (611,'ba','-1'), (612,'ba','1150'); select count(distinct x,y) from t1; select count(distinct concat(x,y)) from t1; drop table t1;
sql/item_sum.cc +3 −3 Original line number Diff line number Diff line Loading @@ -2541,9 +2541,9 @@ bool Item_sum_count_distinct::setup(THD *thd) Field *f= *field; enum enum_field_types type= f->type(); tree_key_length+= f->pack_length(); if (!f->binary() && (type == MYSQL_TYPE_STRING || type == MYSQL_TYPE_VAR_STRING || type == MYSQL_TYPE_VARCHAR)) if ((type == MYSQL_TYPE_VARCHAR) || !f->binary() && (type == MYSQL_TYPE_STRING || type == MYSQL_TYPE_VAR_STRING)) { all_binary= FALSE; break; Loading
sql/sql_lex.cc +2 −1 Original line number Diff line number Diff line Loading @@ -223,7 +223,7 @@ static int find_keyword(LEX *lex, uint len, bool function) SYNOPSIS is_keyword() name checked name name checked name (must not be empty) len length of checked name RETURN VALUES Loading @@ -233,6 +233,7 @@ static int find_keyword(LEX *lex, uint len, bool function) bool is_keyword(const char *name, uint len) { DBUG_ASSERT(len != 0); return get_hash_symbol(name,len,0)!=0; } Loading
sql/sql_show.cc +2 −1 Original line number Diff line number Diff line Loading @@ -713,7 +713,8 @@ append_identifier(THD *thd, String *packet, const char *name, uint length) int get_quote_char_for_identifier(THD *thd, const char *name, uint length) { if (!is_keyword(name,length) && if (!length || !is_keyword(name,length) && !require_quotes(name, length) && !(thd->options & OPTION_QUOTE_SHOW_CREATE)) return EOF; Loading