File tree Expand file tree Collapse file tree 8 files changed +171
-2
lines changed Expand file tree Collapse file tree 8 files changed +171
-2
lines changed Original file line number Diff line number Diff line change @@ -7085,3 +7085,27 @@ sq
7085
7085
NULL
7086
7086
deallocate prepare stmt;
7087
7087
drop table t1,t2,t3,t4;
7088
+ #
7089
+ # MDEV-7930: Assertion `table_share->tmp_table != NO_TMP_TABLE ||
7090
+ # m_lock_type != 2' failed in handler::ha_index_read_map
7091
+ #
7092
+ CREATE TABLE t1 (f1 INT);
7093
+ INSERT INTO t1 VALUES (1),(2);
7094
+ CREATE TABLE t2 (f2 INT, KEY(f2));
7095
+ INSERT INTO t2 VALUES (3);
7096
+ CREATE ALGORITHM=MERGE VIEW v2 AS SELECT * FROM t2;
7097
+ SELECT ( SELECT MIN(v2.f2) FROM t1 ) AS sq FROM v2 GROUP BY sq;
7098
+ sq
7099
+ 3
7100
+ SELECT * FROM v2 where ( SELECT MIN(v2.f2) FROM t1 ) > 0;
7101
+ f2
7102
+ 3
7103
+ SELECT count(*) FROM v2 group by ( SELECT MIN(v2.f2) FROM t1 );
7104
+ count(*)
7105
+ 1
7106
+ delete from t1;
7107
+ SELECT ( SELECT MIN(v2.f2) FROM t1 ) AS sq FROM v2 GROUP BY sq;
7108
+ sq
7109
+ NULL
7110
+ drop view v2;
7111
+ drop table t1,t2;
Original file line number Diff line number Diff line change @@ -7085,6 +7085,30 @@ sq
7085
7085
NULL
7086
7086
deallocate prepare stmt;
7087
7087
drop table t1,t2,t3,t4;
7088
+ #
7089
+ # MDEV-7930: Assertion `table_share->tmp_table != NO_TMP_TABLE ||
7090
+ # m_lock_type != 2' failed in handler::ha_index_read_map
7091
+ #
7092
+ CREATE TABLE t1 (f1 INT);
7093
+ INSERT INTO t1 VALUES (1),(2);
7094
+ CREATE TABLE t2 (f2 INT, KEY(f2));
7095
+ INSERT INTO t2 VALUES (3);
7096
+ CREATE ALGORITHM=MERGE VIEW v2 AS SELECT * FROM t2;
7097
+ SELECT ( SELECT MIN(v2.f2) FROM t1 ) AS sq FROM v2 GROUP BY sq;
7098
+ sq
7099
+ 3
7100
+ SELECT * FROM v2 where ( SELECT MIN(v2.f2) FROM t1 ) > 0;
7101
+ f2
7102
+ 3
7103
+ SELECT count(*) FROM v2 group by ( SELECT MIN(v2.f2) FROM t1 );
7104
+ count(*)
7105
+ 1
7106
+ delete from t1;
7107
+ SELECT ( SELECT MIN(v2.f2) FROM t1 ) AS sq FROM v2 GROUP BY sq;
7108
+ sq
7109
+ NULL
7110
+ drop view v2;
7111
+ drop table t1,t2;
7088
7112
set optimizer_switch=default;
7089
7113
select @@optimizer_switch like '%exists_to_in=off%';
7090
7114
@@optimizer_switch like '%exists_to_in=off%'
Original file line number Diff line number Diff line change @@ -7078,6 +7078,30 @@ sq
7078
7078
NULL
7079
7079
deallocate prepare stmt;
7080
7080
drop table t1,t2,t3,t4;
7081
+ #
7082
+ # MDEV-7930: Assertion `table_share->tmp_table != NO_TMP_TABLE ||
7083
+ # m_lock_type != 2' failed in handler::ha_index_read_map
7084
+ #
7085
+ CREATE TABLE t1 (f1 INT);
7086
+ INSERT INTO t1 VALUES (1),(2);
7087
+ CREATE TABLE t2 (f2 INT, KEY(f2));
7088
+ INSERT INTO t2 VALUES (3);
7089
+ CREATE ALGORITHM=MERGE VIEW v2 AS SELECT * FROM t2;
7090
+ SELECT ( SELECT MIN(v2.f2) FROM t1 ) AS sq FROM v2 GROUP BY sq;
7091
+ sq
7092
+ 3
7093
+ SELECT * FROM v2 where ( SELECT MIN(v2.f2) FROM t1 ) > 0;
7094
+ f2
7095
+ 3
7096
+ SELECT count(*) FROM v2 group by ( SELECT MIN(v2.f2) FROM t1 );
7097
+ count(*)
7098
+ 1
7099
+ delete from t1;
7100
+ SELECT ( SELECT MIN(v2.f2) FROM t1 ) AS sq FROM v2 GROUP BY sq;
7101
+ sq
7102
+ NULL
7103
+ drop view v2;
7104
+ drop table t1,t2;
7081
7105
set optimizer_switch=default;
7082
7106
select @@optimizer_switch like '%materialization=on%';
7083
7107
@@optimizer_switch like '%materialization=on%'
Original file line number Diff line number Diff line change @@ -7076,4 +7076,28 @@ sq
7076
7076
NULL
7077
7077
deallocate prepare stmt;
7078
7078
drop table t1,t2,t3,t4;
7079
+ #
7080
+ # MDEV-7930: Assertion `table_share->tmp_table != NO_TMP_TABLE ||
7081
+ # m_lock_type != 2' failed in handler::ha_index_read_map
7082
+ #
7083
+ CREATE TABLE t1 (f1 INT);
7084
+ INSERT INTO t1 VALUES (1),(2);
7085
+ CREATE TABLE t2 (f2 INT, KEY(f2));
7086
+ INSERT INTO t2 VALUES (3);
7087
+ CREATE ALGORITHM=MERGE VIEW v2 AS SELECT * FROM t2;
7088
+ SELECT ( SELECT MIN(v2.f2) FROM t1 ) AS sq FROM v2 GROUP BY sq;
7089
+ sq
7090
+ 3
7091
+ SELECT * FROM v2 where ( SELECT MIN(v2.f2) FROM t1 ) > 0;
7092
+ f2
7093
+ 3
7094
+ SELECT count(*) FROM v2 group by ( SELECT MIN(v2.f2) FROM t1 );
7095
+ count(*)
7096
+ 1
7097
+ delete from t1;
7098
+ SELECT ( SELECT MIN(v2.f2) FROM t1 ) AS sq FROM v2 GROUP BY sq;
7099
+ sq
7100
+ NULL
7101
+ drop view v2;
7102
+ drop table t1,t2;
7079
7103
set @optimizer_switch_for_subselect_test=null;
Original file line number Diff line number Diff line change @@ -7091,6 +7091,30 @@ sq
7091
7091
NULL
7092
7092
deallocate prepare stmt;
7093
7093
drop table t1,t2,t3,t4;
7094
+ #
7095
+ # MDEV-7930: Assertion `table_share->tmp_table != NO_TMP_TABLE ||
7096
+ # m_lock_type != 2' failed in handler::ha_index_read_map
7097
+ #
7098
+ CREATE TABLE t1 (f1 INT);
7099
+ INSERT INTO t1 VALUES (1),(2);
7100
+ CREATE TABLE t2 (f2 INT, KEY(f2));
7101
+ INSERT INTO t2 VALUES (3);
7102
+ CREATE ALGORITHM=MERGE VIEW v2 AS SELECT * FROM t2;
7103
+ SELECT ( SELECT MIN(v2.f2) FROM t1 ) AS sq FROM v2 GROUP BY sq;
7104
+ sq
7105
+ 3
7106
+ SELECT * FROM v2 where ( SELECT MIN(v2.f2) FROM t1 ) > 0;
7107
+ f2
7108
+ 3
7109
+ SELECT count(*) FROM v2 group by ( SELECT MIN(v2.f2) FROM t1 );
7110
+ count(*)
7111
+ 1
7112
+ delete from t1;
7113
+ SELECT ( SELECT MIN(v2.f2) FROM t1 ) AS sq FROM v2 GROUP BY sq;
7114
+ sq
7115
+ NULL
7116
+ drop view v2;
7117
+ drop table t1,t2;
7094
7118
set optimizer_switch=default;
7095
7119
select @@optimizer_switch like '%subquery_cache=on%';
7096
7120
@@optimizer_switch like '%subquery_cache=on%'
Original file line number Diff line number Diff line change @@ -7076,5 +7076,29 @@ sq
7076
7076
NULL
7077
7077
deallocate prepare stmt;
7078
7078
drop table t1,t2,t3,t4;
7079
+ #
7080
+ # MDEV-7930: Assertion `table_share->tmp_table != NO_TMP_TABLE ||
7081
+ # m_lock_type != 2' failed in handler::ha_index_read_map
7082
+ #
7083
+ CREATE TABLE t1 (f1 INT);
7084
+ INSERT INTO t1 VALUES (1),(2);
7085
+ CREATE TABLE t2 (f2 INT, KEY(f2));
7086
+ INSERT INTO t2 VALUES (3);
7087
+ CREATE ALGORITHM=MERGE VIEW v2 AS SELECT * FROM t2;
7088
+ SELECT ( SELECT MIN(v2.f2) FROM t1 ) AS sq FROM v2 GROUP BY sq;
7089
+ sq
7090
+ 3
7091
+ SELECT * FROM v2 where ( SELECT MIN(v2.f2) FROM t1 ) > 0;
7092
+ f2
7093
+ 3
7094
+ SELECT count(*) FROM v2 group by ( SELECT MIN(v2.f2) FROM t1 );
7095
+ count(*)
7096
+ 1
7097
+ delete from t1;
7098
+ SELECT ( SELECT MIN(v2.f2) FROM t1 ) AS sq FROM v2 GROUP BY sq;
7099
+ sq
7100
+ NULL
7101
+ drop view v2;
7102
+ drop table t1,t2;
7079
7103
set @optimizer_switch_for_subselect_test=null;
7080
7104
set @join_cache_level_for_subselect_test=NULL;
Original file line number Diff line number Diff line change @@ -5964,3 +5964,26 @@ EXECUTE stmt;
5964
5964
5965
5965
deallocate prepare stmt;
5966
5966
drop table t1,t2,t3,t4;
5967
+
5968
+ --echo #
5969
+ --echo # MDEV-7930: Assertion `table_share->tmp_table != NO_TMP_TABLE ||
5970
+ --echo # m_lock_type != 2' failed in handler::ha_index_read_map
5971
+ --echo #
5972
+
5973
+ CREATE TABLE t1 (f1 INT);
5974
+ INSERT INTO t1 VALUES (1),(2);
5975
+
5976
+ CREATE TABLE t2 (f2 INT, KEY(f2));
5977
+ INSERT INTO t2 VALUES (3);
5978
+
5979
+ CREATE ALGORITHM=MERGE VIEW v2 AS SELECT * FROM t2;
5980
+
5981
+ SELECT ( SELECT MIN(v2.f2) FROM t1 ) AS sq FROM v2 GROUP BY sq;
5982
+ SELECT * FROM v2 where ( SELECT MIN(v2.f2) FROM t1 ) > 0;
5983
+ SELECT count(*) FROM v2 group by ( SELECT MIN(v2.f2) FROM t1 );
5984
+
5985
+ delete from t1;
5986
+ SELECT ( SELECT MIN(v2.f2) FROM t1 ) AS sq FROM v2 GROUP BY sq;
5987
+
5988
+ drop view v2;
5989
+ drop table t1,t2;
Original file line number Diff line number Diff line change @@ -341,7 +341,8 @@ int opt_sum_query(THD *thd,
341
341
there are no outer joins.
342
342
*/
343
343
if (!conds && !((Item_sum_count*) item)->get_arg (0 )->maybe_null &&
344
- !outer_tables && maybe_exact_count)
344
+ !outer_tables && maybe_exact_count &&
345
+ ((item->used_tables () & OUTER_REF_TABLE_BIT) == 0 ))
345
346
{
346
347
if (!is_exact_count)
347
348
{
@@ -369,7 +370,8 @@ int opt_sum_query(THD *thd,
369
370
indexes to find the key.
370
371
*/
371
372
Item *expr=item_sum->get_arg (0 );
372
- if (expr->real_item ()->type () == Item::FIELD_ITEM)
373
+ if (((expr->used_tables () & OUTER_REF_TABLE_BIT) == 0 ) &&
374
+ expr->real_item ()->type () == Item::FIELD_ITEM)
373
375
{
374
376
uchar key_buff[MAX_KEY_LENGTH];
375
377
TABLE_REF ref;
You can’t perform that action at this time.
0 commit comments