mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Merge olga.mysql.com:/home/igor/mysql-5.0-opt
into olga.mysql.com:/home/igor/dev-opt/mysql-5.0-opt-bug25580
This commit is contained in:
@ -3611,3 +3611,11 @@ id select_type table type possible_keys key key_len ref rows Extra
|
|||||||
1 SIMPLE t2 range si,ai si 5 NULL 2 Using where
|
1 SIMPLE t2 range si,ai si 5 NULL 2 Using where
|
||||||
1 SIMPLE t3 eq_ref PRIMARY,ci PRIMARY 4 test.t2.a 1 Using where
|
1 SIMPLE t3 eq_ref PRIMARY,ci PRIMARY 4 test.t2.a 1 Using where
|
||||||
DROP TABLE t1,t2,t3;
|
DROP TABLE t1,t2,t3;
|
||||||
|
CREATE TABLE t1 ( f1 int primary key, f2 int, f3 int, f4 int, f5 int, f6 int, checked_out int);
|
||||||
|
CREATE TABLE t2 ( f11 int PRIMARY KEY );
|
||||||
|
INSERT INTO t1 VALUES (1,1,1,0,0,0,0),(2,1,1,3,8,1,0),(3,1,1,4,12,1,0);
|
||||||
|
INSERT INTO t2 VALUES (62);
|
||||||
|
SELECT * FROM t1 LEFT JOIN t2 ON f11 = t1.checked_out GROUP BY f1 ORDER BY f2, f3, f4, f5 LIMIT 0, 1;
|
||||||
|
f1 f2 f3 f4 f5 f6 checked_out f11
|
||||||
|
1 1 1 0 0 0 0 NULL
|
||||||
|
DROP TABLE t1, t2;
|
||||||
|
@ -3092,3 +3092,14 @@ SELECT t3.a FROM t1,t2,t3
|
|||||||
t3.c IN ('bb','ee');
|
t3.c IN ('bb','ee');
|
||||||
|
|
||||||
DROP TABLE t1,t2,t3;
|
DROP TABLE t1,t2,t3;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug#25172: Not checked buffer size leads to a server crash
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 ( f1 int primary key, f2 int, f3 int, f4 int, f5 int, f6 int, checked_out int);
|
||||||
|
CREATE TABLE t2 ( f11 int PRIMARY KEY );
|
||||||
|
INSERT INTO t1 VALUES (1,1,1,0,0,0,0),(2,1,1,3,8,1,0),(3,1,1,4,12,1,0);
|
||||||
|
INSERT INTO t2 VALUES (62);
|
||||||
|
SELECT * FROM t1 LEFT JOIN t2 ON f11 = t1.checked_out GROUP BY f1 ORDER BY f2, f3, f4, f5 LIMIT 0, 1;
|
||||||
|
DROP TABLE t1, t2;
|
||||||
|
|
||||||
|
@ -142,7 +142,7 @@ bool mysql_delete(THD *thd, TABLE_LIST *table_list, COND *conds,
|
|||||||
|
|
||||||
if (order && order->elements)
|
if (order && order->elements)
|
||||||
{
|
{
|
||||||
uint length;
|
uint length= 0;
|
||||||
SORT_FIELD *sortorder;
|
SORT_FIELD *sortorder;
|
||||||
TABLE_LIST tables;
|
TABLE_LIST tables;
|
||||||
List<Item> fields;
|
List<Item> fields;
|
||||||
|
@ -12262,7 +12262,7 @@ static int
|
|||||||
create_sort_index(THD *thd, JOIN *join, ORDER *order,
|
create_sort_index(THD *thd, JOIN *join, ORDER *order,
|
||||||
ha_rows filesort_limit, ha_rows select_limit)
|
ha_rows filesort_limit, ha_rows select_limit)
|
||||||
{
|
{
|
||||||
uint length;
|
uint length= 0;
|
||||||
ha_rows examined_rows;
|
ha_rows examined_rows;
|
||||||
TABLE *table;
|
TABLE *table;
|
||||||
SQL_SELECT *select;
|
SQL_SELECT *select;
|
||||||
@ -12283,8 +12283,10 @@ create_sort_index(THD *thd, JOIN *join, ORDER *order,
|
|||||||
!(join->select_options & SELECT_BIG_RESULT)) &&
|
!(join->select_options & SELECT_BIG_RESULT)) &&
|
||||||
test_if_skip_sort_order(tab,order,select_limit,0))
|
test_if_skip_sort_order(tab,order,select_limit,0))
|
||||||
DBUG_RETURN(0);
|
DBUG_RETURN(0);
|
||||||
|
for (ORDER *ord= join->order; ord; ord= ord->next)
|
||||||
|
length++;
|
||||||
if (!(join->sortorder=
|
if (!(join->sortorder=
|
||||||
make_unireg_sortorder(order,&length,join->sortorder)))
|
make_unireg_sortorder(order, &length, join->sortorder)))
|
||||||
goto err; /* purecov: inspected */
|
goto err; /* purecov: inspected */
|
||||||
|
|
||||||
table->sort.io_cache=(IO_CACHE*) my_malloc(sizeof(IO_CACHE),
|
table->sort.io_cache=(IO_CACHE*) my_malloc(sizeof(IO_CACHE),
|
||||||
@ -12690,8 +12692,10 @@ SORT_FIELD *make_unireg_sortorder(ORDER *order, uint *length,
|
|||||||
for (ORDER *tmp = order; tmp; tmp=tmp->next)
|
for (ORDER *tmp = order; tmp; tmp=tmp->next)
|
||||||
count++;
|
count++;
|
||||||
if (!sortorder)
|
if (!sortorder)
|
||||||
sortorder= (SORT_FIELD*) sql_alloc(sizeof(SORT_FIELD)*(count+1));
|
sortorder= (SORT_FIELD*) sql_alloc(sizeof(SORT_FIELD) *
|
||||||
pos=sort=sortorder;
|
(max(count, *length) + 1));
|
||||||
|
pos= sort= sortorder;
|
||||||
|
|
||||||
if (!pos)
|
if (!pos)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
@ -3883,7 +3883,7 @@ copy_data_between_tables(TABLE *from,TABLE *to,
|
|||||||
Copy_field *copy,*copy_end;
|
Copy_field *copy,*copy_end;
|
||||||
ulong found_count,delete_count;
|
ulong found_count,delete_count;
|
||||||
THD *thd= current_thd;
|
THD *thd= current_thd;
|
||||||
uint length;
|
uint length= 0;
|
||||||
SORT_FIELD *sortorder;
|
SORT_FIELD *sortorder;
|
||||||
READ_RECORD info;
|
READ_RECORD info;
|
||||||
TABLE_LIST tables;
|
TABLE_LIST tables;
|
||||||
|
@ -304,7 +304,7 @@ int mysql_update(THD *thd,
|
|||||||
Doing an ORDER BY; Let filesort find and sort the rows we are going
|
Doing an ORDER BY; Let filesort find and sort the rows we are going
|
||||||
to update
|
to update
|
||||||
*/
|
*/
|
||||||
uint length;
|
uint length= 0;
|
||||||
SORT_FIELD *sortorder;
|
SORT_FIELD *sortorder;
|
||||||
ha_rows examined_rows;
|
ha_rows examined_rows;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user