mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Fixed a bug in optimiser with MERGE tables with non-unique values
with aggregating functions. This consistently crashed Mysql
This commit is contained in:
@ -49456,7 +49456,12 @@ Our TODO section contains what we plan to have in 4.0. @xref{TODO MySQL 4.0}.
|
|||||||
|
|
||||||
@itemize @bullet
|
@itemize @bullet
|
||||||
@item
|
@item
|
||||||
Fixed a bug in optimiser when a range specified makes index grouping impossible
|
Fixed a bug in optimiser with merge tables when non-uniques values are
|
||||||
|
used in summing up.
|
||||||
|
This consistently crashed MySQL.
|
||||||
|
@item
|
||||||
|
Fixed a bug in optimiser when a range specified makes index grouping impossible.
|
||||||
|
This consistently crashed MySQL.
|
||||||
@item
|
@item
|
||||||
Fixed a rare bug when fulltext index is present and no tables are used
|
Fixed a rare bug when fulltext index is present and no tables are used
|
||||||
@item
|
@item
|
||||||
|
@ -462,3 +462,12 @@ a b
|
|||||||
6 1
|
6 1
|
||||||
6 2
|
6 2
|
||||||
drop table if exists t6, t5, t4, t3, t2, t1;
|
drop table if exists t6, t5, t4, t3, t2, t1;
|
||||||
|
CREATE TABLE t1 ( a int(11) NOT NULL default '0', b int(11) NOT NULL default '0', PRIMARY KEY (a,b)) TYPE=MyISAM;
|
||||||
|
INSERT INTO t1 VALUES (1,1), (2,1);
|
||||||
|
CREATE TABLE t2 ( a int(11) NOT NULL default '0', b int(11) NOT NULL default '0', PRIMARY KEY (a,b)) TYPE=MyISAM;
|
||||||
|
INSERT INTO t2 VALUES (1,2), (2,2);
|
||||||
|
CREATE TABLE t ( a int(11) NOT NULL default '0', b int(11) NOT NULL default '0', KEY a (a,b)) TYPE=MRG_MyISAM UNION=(t1,t2);
|
||||||
|
select max(b) from t where a = 2;
|
||||||
|
max(b)
|
||||||
|
NULL
|
||||||
|
drop table if exists t,t1,t2;
|
||||||
|
@ -168,3 +168,10 @@ select * from t3 order by a,b;
|
|||||||
select * from t4 order by a,b;
|
select * from t4 order by a,b;
|
||||||
select * from t5 order by a,b;
|
select * from t5 order by a,b;
|
||||||
drop table if exists t6, t5, t4, t3, t2, t1;
|
drop table if exists t6, t5, t4, t3, t2, t1;
|
||||||
|
CREATE TABLE t1 ( a int(11) NOT NULL default '0', b int(11) NOT NULL default '0', PRIMARY KEY (a,b)) TYPE=MyISAM;
|
||||||
|
INSERT INTO t1 VALUES (1,1), (2,1);
|
||||||
|
CREATE TABLE t2 ( a int(11) NOT NULL default '0', b int(11) NOT NULL default '0', PRIMARY KEY (a,b)) TYPE=MyISAM;
|
||||||
|
INSERT INTO t2 VALUES (1,2), (2,2);
|
||||||
|
CREATE TABLE t ( a int(11) NOT NULL default '0', b int(11) NOT NULL default '0', KEY a (a,b)) TYPE=MRG_MyISAM UNION=(t1,t2);
|
||||||
|
select max(b) from t where a = 2;
|
||||||
|
drop table if exists t,t1,t2;
|
||||||
|
@ -152,11 +152,12 @@ int opt_sum_query(TABLE_LIST *tables, List<Item> &all_fields,COND *conds)
|
|||||||
error=table->file->index_last(table->record[0]) !=0;
|
error=table->file->index_last(table->record[0]) !=0;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
(void) table->file->index_read(table->record[0], key_buff,
|
error= table->file->index_read(table->record[0], key_buff,
|
||||||
ref.key_length,
|
ref.key_length,
|
||||||
HA_READ_AFTER_KEY);
|
HA_READ_AFTER_KEY);
|
||||||
error=table->file->index_prev(table->record[0]) ||
|
if (!error)
|
||||||
key_cmp(table,key_buff,ref.key,ref.key_length);
|
error=table->file->index_prev(table->record[0]) ||
|
||||||
|
key_cmp(table,key_buff,ref.key,ref.key_length);
|
||||||
}
|
}
|
||||||
if (table->key_read)
|
if (table->key_read)
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user