mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
Merge of the fix for bug #9681 4.1->5.0
This commit is contained in:
@ -437,3 +437,16 @@ SELECT SQL_CALC_FOUND_ROWS a, SUM(b) FROM t1 GROUP BY a WITH ROLLUP LIMIT 1;
|
|||||||
a SUM(b)
|
a SUM(b)
|
||||||
1 4
|
1 4
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (a int(11) NOT NULL);
|
||||||
|
INSERT INTO t1 VALUES (1),(2);
|
||||||
|
SELECT a, SUM(a) m FROM t1 GROUP BY a WITH ROLLUP;
|
||||||
|
a m
|
||||||
|
1 1
|
||||||
|
2 2
|
||||||
|
NULL 3
|
||||||
|
SELECT * FROM ( SELECT a, SUM(a) m FROM t1 GROUP BY a WITH ROLLUP ) t2;
|
||||||
|
a m
|
||||||
|
1 1
|
||||||
|
2 2
|
||||||
|
NULL 3
|
||||||
|
DROP TABLE t1;
|
||||||
|
@ -178,3 +178,16 @@ SELECT a, SUM(b) FROM t1 GROUP BY a WITH ROLLUP LIMIT 1;
|
|||||||
SELECT SQL_CALC_FOUND_ROWS a, SUM(b) FROM t1 GROUP BY a WITH ROLLUP LIMIT 1;
|
SELECT SQL_CALC_FOUND_ROWS a, SUM(b) FROM t1 GROUP BY a WITH ROLLUP LIMIT 1;
|
||||||
|
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Tests for bug #9681: ROLLUP in subquery for derived table wiht
|
||||||
|
# a group by field declared as NOT NULL
|
||||||
|
#
|
||||||
|
|
||||||
|
CREATE TABLE t1 (a int(11) NOT NULL);
|
||||||
|
INSERT INTO t1 VALUES (1),(2);
|
||||||
|
|
||||||
|
SELECT a, SUM(a) m FROM t1 GROUP BY a WITH ROLLUP;
|
||||||
|
SELECT * FROM ( SELECT a, SUM(a) m FROM t1 GROUP BY a WITH ROLLUP ) t2;
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
@ -7772,7 +7772,7 @@ Field* create_tmp_field_from_field(THD *thd, Field* org_field,
|
|||||||
item->result_field= new_field;
|
item->result_field= new_field;
|
||||||
else
|
else
|
||||||
new_field->field_name= name;
|
new_field->field_name= name;
|
||||||
if (org_field->maybe_null())
|
if (org_field->maybe_null() || (item && item->maybe_null))
|
||||||
new_field->flags&= ~NOT_NULL_FLAG; // Because of outer join
|
new_field->flags&= ~NOT_NULL_FLAG; // Because of outer join
|
||||||
if (org_field->type() == MYSQL_TYPE_VAR_STRING ||
|
if (org_field->type() == MYSQL_TYPE_VAR_STRING ||
|
||||||
org_field->type() == MYSQL_TYPE_VARCHAR)
|
org_field->type() == MYSQL_TYPE_VARCHAR)
|
||||||
@ -12753,7 +12753,19 @@ bool JOIN::rollup_init()
|
|||||||
for (j=0 ; j < fields_list.elements ; j++)
|
for (j=0 ; j < fields_list.elements ; j++)
|
||||||
rollup.fields[i].push_back(rollup.null_items[i]);
|
rollup.fields[i].push_back(rollup.null_items[i]);
|
||||||
}
|
}
|
||||||
|
List_iterator_fast<Item> it(fields_list);
|
||||||
|
Item *item;
|
||||||
|
while ((item= it++))
|
||||||
|
{
|
||||||
|
ORDER *group_tmp;
|
||||||
|
for (group_tmp= group_list; group_tmp; group_tmp= group_tmp->next)
|
||||||
|
{
|
||||||
|
if (*group_tmp->item == item)
|
||||||
|
item->maybe_null= 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user