summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mysql-test/r/ps.result22
-rw-r--r--mysql-test/t/ps.test16
-rw-r--r--sql/sql_select.cc1
3 files changed, 39 insertions, 0 deletions
diff --git a/mysql-test/r/ps.result b/mysql-test/r/ps.result
index c26a324d00b..1e67bfa7d37 100644
--- a/mysql-test/r/ps.result
+++ b/mysql-test/r/ps.result
@@ -1942,6 +1942,28 @@ execute stmt;
deallocate prepare stmt;
drop table t1,t2;
#
+#
+# Bug #49570: Assertion failed: !(order->used & map)
+# on re-execution of prepared statement
+#
+CREATE TABLE t1(a INT PRIMARY KEY);
+INSERT INTO t1 VALUES(0), (1);
+PREPARE stmt FROM
+"SELECT 1 FROM t1 JOIN t1 t2 USING(a) GROUP BY t2.a, t1.a";
+EXECUTE stmt;
+1
+1
+1
+EXECUTE stmt;
+1
+1
+1
+EXECUTE stmt;
+1
+1
+1
+DEALLOCATE PREPARE stmt;
+DROP TABLE t1;
End of 5.0 tests.
create procedure proc_1() reset query cache;
call proc_1();
diff --git a/mysql-test/t/ps.test b/mysql-test/t/ps.test
index b0930a42b41..d5f7eda5032 100644
--- a/mysql-test/t/ps.test
+++ b/mysql-test/t/ps.test
@@ -2014,6 +2014,22 @@ deallocate prepare stmt;
drop table t1,t2;
--echo #
+
+--echo #
+--echo # Bug #49570: Assertion failed: !(order->used & map)
+--echo # on re-execution of prepared statement
+--echo #
+CREATE TABLE t1(a INT PRIMARY KEY);
+INSERT INTO t1 VALUES(0), (1);
+PREPARE stmt FROM
+ "SELECT 1 FROM t1 JOIN t1 t2 USING(a) GROUP BY t2.a, t1.a";
+EXECUTE stmt;
+EXECUTE stmt;
+EXECUTE stmt;
+DEALLOCATE PREPARE stmt;
+DROP TABLE t1;
+
+
--echo End of 5.0 tests.
#
diff --git a/sql/sql_select.cc b/sql/sql_select.cc
index d50bb888850..644f0072b7b 100644
--- a/sql/sql_select.cc
+++ b/sql/sql_select.cc
@@ -7067,6 +7067,7 @@ static void update_depend_map(JOIN *join, ORDER *order)
table_map depend_map;
order->item[0]->update_used_tables();
order->depend_map=depend_map=order->item[0]->used_tables();
+ order->used= 0;
// Not item_sum(), RAND() and no reference to table outside of sub select
if (!(order->depend_map & (OUTER_REF_TABLE_BIT | RAND_TABLE_BIT))
&& !order->item[0]->with_sum_func)