summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <sanja@askmonty.org>2013-09-12 17:05:29 +0300
committerunknown <sanja@askmonty.org>2013-09-12 17:05:29 +0300
commit1a01e3b959102402de1547fb2c7b912269032882 (patch)
tree851353bd1fa398cb98e82afe30c4578f17838c1f
parent7e4845beea1a86dc53dc67908a2779ea2f0190a2 (diff)
downloadmariadb-git-1a01e3b959102402de1547fb2c7b912269032882.tar.gz
MDEV-5005: Subquery in Procedure somehow affecting temporary table
Removed unneeded set of TABLE_LIST::skip_temporary flag.
-rw-r--r--mysql-test/r/derived.result23
-rw-r--r--mysql-test/t/derived.test32
-rw-r--r--sql/sql_lex.cc3
3 files changed, 55 insertions, 3 deletions
diff --git a/mysql-test/r/derived.result b/mysql-test/r/derived.result
index a9247ff41bf..1042ee79e8c 100644
--- a/mysql-test/r/derived.result
+++ b/mysql-test/r/derived.result
@@ -416,4 +416,27 @@ MIN(i)
1
DROP TABLE t1;
# End of 5.0 tests
+#
+# MDEV-5005: Subquery in Procedure somehow affecting temporary table
+#
+create temporary table if not exists t1 (id int not null);
+select A.* from ( select tt.* from t1 tt ) A;
+id
+prepare stmt from "select A.* from ( select tt.* from t1 tt ) A ";
+execute stmt;
+id
+deallocate prepare stmt;
+drop temporary table t1;
+CREATE PROCEDURE p ()
+BEGIN
+select A.* from ( select tt.* from t1 tt ) A ;
+END |
+create temporary table if not exists t1 (id int not null);
+CALL p();
+id
+CALL p();
+id
+drop procedure p;
+drop temporary table t1;
+# End of 5.3 tests
set optimizer_switch=@save_derived_optimizer_switch;
diff --git a/mysql-test/t/derived.test b/mysql-test/t/derived.test
index 7defc55b473..b0db0e8100a 100644
--- a/mysql-test/t/derived.test
+++ b/mysql-test/t/derived.test
@@ -320,4 +320,36 @@ DROP TABLE t1;
--echo # End of 5.0 tests
+--echo #
+--echo # MDEV-5005: Subquery in Procedure somehow affecting temporary table
+--echo #
+
+create temporary table if not exists t1 (id int not null);
+
+select A.* from ( select tt.* from t1 tt ) A;
+
+prepare stmt from "select A.* from ( select tt.* from t1 tt ) A ";
+execute stmt;
+deallocate prepare stmt;
+
+drop temporary table t1;
+
+--delimiter |
+CREATE PROCEDURE p ()
+BEGIN
+ select A.* from ( select tt.* from t1 tt ) A ;
+END |
+--delimiter ;
+
+create temporary table if not exists t1 (id int not null);
+
+CALL p();
+CALL p();
+
+drop procedure p;
+
+drop temporary table t1;
+
+--echo # End of 5.3 tests
+
set optimizer_switch=@save_derived_optimizer_switch;
diff --git a/sql/sql_lex.cc b/sql/sql_lex.cc
index ab50ad99c28..6f34dd23f36 100644
--- a/sql/sql_lex.cc
+++ b/sql/sql_lex.cc
@@ -3436,10 +3436,7 @@ void SELECT_LEX::mark_as_belong_to_derived(TABLE_LIST *derived)
TABLE_LIST *tl;
List_iterator<TABLE_LIST> ti(leaf_tables);
while ((tl= ti++))
- {
- tl->skip_temporary= 1;
tl->belong_to_derived= derived;
- }
}