mirror of
https://github.com/MariaDB/server.git
synced 2025-01-22 06:44:16 +01:00
Automerge.
This commit is contained in:
commit
5d725601a8
3 changed files with 41 additions and 7 deletions
|
@ -753,4 +753,16 @@ b
|
||||||
100
|
100
|
||||||
NULL
|
NULL
|
||||||
DROP TABLE t1, t2;
|
DROP TABLE t1, t2;
|
||||||
|
#
|
||||||
|
# Bug #48475: DISTINCT is ignored with GROUP BY WITH ROLLUP
|
||||||
|
# and only const tables
|
||||||
|
CREATE TABLE t1 (a INT);
|
||||||
|
CREATE TABLE t2 (b INT);
|
||||||
|
INSERT INTO t1 VALUES (1);
|
||||||
|
INSERT INTO t2 VALUES (1);
|
||||||
|
SELECT DISTINCT b FROM t1, t2 GROUP BY a, b WITH ROLLUP;
|
||||||
|
b
|
||||||
|
1
|
||||||
|
NULL
|
||||||
|
DROP TABLE t1, t2;
|
||||||
End of 5.0 tests
|
End of 5.0 tests
|
||||||
|
|
|
@ -390,4 +390,17 @@ SELECT DISTINCT b FROM t1, t2 GROUP BY a, b WITH ROLLUP;
|
||||||
|
|
||||||
DROP TABLE t1, t2;
|
DROP TABLE t1, t2;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Bug #48475: DISTINCT is ignored with GROUP BY WITH ROLLUP
|
||||||
|
--echo # and only const tables
|
||||||
|
|
||||||
|
CREATE TABLE t1 (a INT);
|
||||||
|
CREATE TABLE t2 (b INT);
|
||||||
|
INSERT INTO t1 VALUES (1);
|
||||||
|
INSERT INTO t2 VALUES (1);
|
||||||
|
|
||||||
|
SELECT DISTINCT b FROM t1, t2 GROUP BY a, b WITH ROLLUP;
|
||||||
|
|
||||||
|
DROP TABLE t1, t2;
|
||||||
|
|
||||||
--echo End of 5.0 tests
|
--echo End of 5.0 tests
|
||||||
|
|
|
@ -929,14 +929,20 @@ JOIN::optimize()
|
||||||
DBUG_RETURN(1);
|
DBUG_RETURN(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (select_lex->olap == ROLLUP_TYPE && rollup_process_const_fields())
|
if (rollup.state != ROLLUP::STATE_NONE)
|
||||||
|
{
|
||||||
|
if (rollup_process_const_fields())
|
||||||
{
|
{
|
||||||
DBUG_PRINT("error", ("Error: rollup_process_fields() failed"));
|
DBUG_PRINT("error", ("Error: rollup_process_fields() failed"));
|
||||||
DBUG_RETURN(1);
|
DBUG_RETURN(1);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
/* Remove distinct if only const tables */
|
/* Remove distinct if only const tables */
|
||||||
select_distinct= select_distinct && (const_tables != tables);
|
select_distinct= select_distinct && (const_tables != tables);
|
||||||
|
}
|
||||||
|
|
||||||
thd_proc_info(thd, "preparing");
|
thd_proc_info(thd, "preparing");
|
||||||
if (result->initialize_tables(this))
|
if (result->initialize_tables(this))
|
||||||
{
|
{
|
||||||
|
@ -1216,11 +1222,14 @@ JOIN::optimize()
|
||||||
- We are using an ORDER BY or GROUP BY on fields not in the first table
|
- We are using an ORDER BY or GROUP BY on fields not in the first table
|
||||||
- We are using different ORDER BY and GROUP BY orders
|
- We are using different ORDER BY and GROUP BY orders
|
||||||
- The user wants us to buffer the result.
|
- The user wants us to buffer the result.
|
||||||
|
When the WITH ROLLUP modifier is present, we cannot skip temporary table
|
||||||
|
creation for the DISTINCT clause just because there are only const tables.
|
||||||
*/
|
*/
|
||||||
need_tmp= (const_tables != tables &&
|
need_tmp= ((const_tables != tables &&
|
||||||
((select_distinct || !simple_order || !simple_group) ||
|
((select_distinct || !simple_order || !simple_group) ||
|
||||||
(group_list && order) ||
|
(group_list && order) ||
|
||||||
test(select_options & OPTION_BUFFER_RESULT)));
|
test(select_options & OPTION_BUFFER_RESULT))) ||
|
||||||
|
rollup.state != ROLLUP::STATE_NONE && select_distinct);
|
||||||
|
|
||||||
// No cache for MATCH
|
// No cache for MATCH
|
||||||
make_join_readinfo(this,
|
make_join_readinfo(this,
|
||||||
|
|
Loading…
Add table
Reference in a new issue