Merge dl145s.mysql.com:/data/bk/team_tree_merge/mysql-4.1
into dl145s.mysql.com:/data/bk/team_tree_merge/MERGE/mysql-4.1-opt
This commit is contained in:
commit
1dacdd4c85
@ -71,6 +71,21 @@ ha_rows mi_records_in_range(MI_INFO *info, int inx, key_range *min_key,
|
|||||||
uchar * key_buff;
|
uchar * key_buff;
|
||||||
uint start_key_len;
|
uint start_key_len;
|
||||||
|
|
||||||
|
/*
|
||||||
|
The problem is that the optimizer doesn't support
|
||||||
|
RTree keys properly at the moment.
|
||||||
|
Hope this will be fixed some day.
|
||||||
|
But now NULL in the min_key means that we
|
||||||
|
didn't make the task for the RTree key
|
||||||
|
and expect BTree functionality from it.
|
||||||
|
As it's not able to handle such request
|
||||||
|
we return the error.
|
||||||
|
*/
|
||||||
|
if (!min_key)
|
||||||
|
{
|
||||||
|
res= HA_POS_ERROR;
|
||||||
|
break;
|
||||||
|
}
|
||||||
key_buff= info->lastkey+info->s->base.max_key_length;
|
key_buff= info->lastkey+info->s->base.max_key_length;
|
||||||
start_key_len= _mi_pack_key(info,inx, key_buff,
|
start_key_len= _mi_pack_key(info,inx, key_buff,
|
||||||
(uchar*) min_key->key, min_key->length,
|
(uchar*) min_key->key, min_key->length,
|
||||||
|
@ -74,11 +74,6 @@ grp group_concat(c order by 1)
|
|||||||
1 a
|
1 a
|
||||||
2 b,c
|
2 b,c
|
||||||
3 C,D,d,d,D,E
|
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;
|
select grp,group_concat(distinct c order by c) from t1 group by grp;
|
||||||
grp group_concat(distinct c order by c)
|
grp group_concat(distinct c order by c)
|
||||||
1 a
|
1 a
|
||||||
|
@ -857,3 +857,14 @@ CHECK TABLE t1 EXTENDED;
|
|||||||
Table Op Msg_type Msg_text
|
Table Op Msg_type Msg_text
|
||||||
test.t1 check status OK
|
test.t1 check status OK
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (foo GEOMETRY NOT NULL, SPATIAL INDEX(foo) );
|
||||||
|
INSERT INTO t1 (foo) VALUES (PointFromWKB(POINT(1,1)));
|
||||||
|
INSERT INTO t1 (foo) VALUES (PointFromWKB(POINT(1,0)));
|
||||||
|
INSERT INTO t1 (foo) VALUES (PointFromWKB(POINT(0,1)));
|
||||||
|
INSERT INTO t1 (foo) VALUES (PointFromWKB(POINT(0,0)));
|
||||||
|
SELECT 1 FROM t1 WHERE foo != PointFromWKB(POINT(0,0));
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
DROP TABLE t1;
|
||||||
|
@ -773,3 +773,48 @@ select sql_buffer_result max(f1)+1 from t1;
|
|||||||
max(f1)+1
|
max(f1)+1
|
||||||
3
|
3
|
||||||
drop table t1;
|
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;
|
||||||
|
@ -541,3 +541,18 @@ a max(b)
|
|||||||
NULL 2
|
NULL 2
|
||||||
a 1
|
a 1
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
create table t1 (a varchar(22) not null , b int);
|
||||||
|
insert into t1 values ("2006-07-01 21:30", 1), ("2006-07-01 23:30", 10);
|
||||||
|
select left(a,10), a, sum(b) from t1 group by 1,2 with rollup;
|
||||||
|
left(a,10) a sum(b)
|
||||||
|
2006-07-01 2006-07-01 21:30 1
|
||||||
|
2006-07-01 2006-07-01 23:30 10
|
||||||
|
2006-07-01 NULL 11
|
||||||
|
NULL NULL 11
|
||||||
|
select left(a,10) x, a, sum(b) from t1 group by x,a with rollup;
|
||||||
|
x a sum(b)
|
||||||
|
2006-07-01 2006-07-01 21:30 1
|
||||||
|
2006-07-01 2006-07-01 23:30 10
|
||||||
|
2006-07-01 NULL 11
|
||||||
|
NULL NULL 11
|
||||||
|
drop table t1;
|
||||||
|
@ -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 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(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 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) from t1 group by grp;
|
||||||
select grp,group_concat(distinct c order by c desc) 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;
|
explain extended select grp,group_concat(distinct c order by c desc) from t1 group by grp;
|
||||||
|
@ -232,4 +232,14 @@ INSERT INTO t1 (c1) VALUES (
|
|||||||
CHECK TABLE t1 EXTENDED;
|
CHECK TABLE t1 EXTENDED;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug #21888: Query on GEOMETRY field using PointFromWKB() results in lost connection
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (foo GEOMETRY NOT NULL, SPATIAL INDEX(foo) );
|
||||||
|
INSERT INTO t1 (foo) VALUES (PointFromWKB(POINT(1,1)));
|
||||||
|
INSERT INTO t1 (foo) VALUES (PointFromWKB(POINT(1,0)));
|
||||||
|
INSERT INTO t1 (foo) VALUES (PointFromWKB(POINT(0,1)));
|
||||||
|
INSERT INTO t1 (foo) VALUES (PointFromWKB(POINT(0,0)));
|
||||||
|
SELECT 1 FROM t1 WHERE foo != PointFromWKB(POINT(0,0));
|
||||||
|
DROP TABLE t1;
|
||||||
# End of 4.1 tests
|
# End of 4.1 tests
|
||||||
|
@ -610,4 +610,27 @@ select sql_buffer_result max(f1) is null from t1;
|
|||||||
select sql_buffer_result max(f1)+1 from t1;
|
select sql_buffer_result max(f1)+1 from t1;
|
||||||
drop table 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
|
# End of 4.1 tests
|
||||||
|
@ -272,4 +272,13 @@ select a, max(b) from t1 group by a with rollup;
|
|||||||
select distinct a, max(b) from t1 group by a with rollup;
|
select distinct a, max(b) from t1 group by a with rollup;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug #20825: rollup puts non-equal values together
|
||||||
|
#
|
||||||
|
create table t1 (a varchar(22) not null , b int);
|
||||||
|
insert into t1 values ("2006-07-01 21:30", 1), ("2006-07-01 23:30", 10);
|
||||||
|
select left(a,10), a, sum(b) from t1 group by 1,2 with rollup;
|
||||||
|
select left(a,10) x, a, sum(b) from t1 group by x,a with rollup;
|
||||||
|
drop table t1;
|
||||||
|
|
||||||
# End of 4.1 tests
|
# End of 4.1 tests
|
||||||
|
@ -2284,12 +2284,19 @@ find_item_in_list(Item *find, List<Item> &items, uint *counter,
|
|||||||
const char *field_name=0;
|
const char *field_name=0;
|
||||||
const char *table_name=0;
|
const char *table_name=0;
|
||||||
bool found_unaliased_non_uniq= 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;
|
uint unaliased_counter;
|
||||||
|
|
||||||
LINT_INIT(unaliased_counter);
|
LINT_INIT(unaliased_counter);
|
||||||
*unaliased= FALSE;
|
*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;
|
field_name= ((Item_ident*) find)->field_name;
|
||||||
table_name= ((Item_ident*) find)->table_name;
|
table_name= ((Item_ident*) find)->table_name;
|
||||||
@ -2401,7 +2408,7 @@ find_item_in_list(Item *find, List<Item> &items, uint *counter,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (!table_name && (item->eq(find,0) ||
|
else if (!table_name && (item->eq(find,0) ||
|
||||||
find->name && item->name &&
|
is_ref_by_name && find->name && item->name &&
|
||||||
!my_strcasecmp(system_charset_info,
|
!my_strcasecmp(system_charset_info,
|
||||||
item->name,find->name)))
|
item->name,find->name)))
|
||||||
{
|
{
|
||||||
|
@ -9711,12 +9711,17 @@ bool JOIN::rollup_init()
|
|||||||
while ((item= it++))
|
while ((item= it++))
|
||||||
{
|
{
|
||||||
ORDER *group_tmp;
|
ORDER *group_tmp;
|
||||||
|
bool found_in_group= 0;
|
||||||
|
|
||||||
for (group_tmp= group_list; group_tmp; group_tmp= group_tmp->next)
|
for (group_tmp= group_list; group_tmp; group_tmp= group_tmp->next)
|
||||||
{
|
{
|
||||||
if (*group_tmp->item == item)
|
if (*group_tmp->item == item)
|
||||||
|
{
|
||||||
item->maybe_null= 1;
|
item->maybe_null= 1;
|
||||||
|
found_in_group= 1;
|
||||||
}
|
}
|
||||||
if (item->type() == Item::FUNC_ITEM)
|
}
|
||||||
|
if (item->type() == Item::FUNC_ITEM && !found_in_group)
|
||||||
{
|
{
|
||||||
bool changed= FALSE;
|
bool changed= FALSE;
|
||||||
if (change_group_ref(thd, (Item_func *) item, group_list, &changed))
|
if (change_group_ref(thd, (Item_func *) item, group_list, &changed))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user