summaryrefslogtreecommitdiff
path: root/mysql-test
diff options
context:
space:
mode:
Diffstat (limited to 'mysql-test')
-rw-r--r--mysql-test/r/ps_ddl.result20
-rw-r--r--mysql-test/r/view.result28
-rw-r--r--mysql-test/t/ps_ddl.test15
-rw-r--r--mysql-test/t/view.test40
4 files changed, 88 insertions, 15 deletions
diff --git a/mysql-test/r/ps_ddl.result b/mysql-test/r/ps_ddl.result
index e69c6e06193..005c78a0319 100644
--- a/mysql-test/r/ps_ddl.result
+++ b/mysql-test/r/ps_ddl.result
@@ -214,7 +214,7 @@ new trigger: 10
drop trigger t1_bd;
set @val=11;
execute stmt using @val;
-call p_verify_reprepare_count(1);
+call p_verify_reprepare_count(0);
SUCCESS
select @message;
@@ -224,7 +224,7 @@ Test 6-e: removing a relevant trigger
drop trigger t1_bi;
set @val=12;
execute stmt using @val;
-call p_verify_reprepare_count(1);
+call p_verify_reprepare_count(0);
SUCCESS
select @message;
@@ -384,7 +384,7 @@ a
flush table t1;
set @var=9;
execute stmt using @var;
-call p_verify_reprepare_count(1);
+call p_verify_reprepare_count(0);
SUCCESS
select * from t2;
@@ -831,8 +831,8 @@ a b c
20 40 100
30 60 150
call p_verify_reprepare_count(1);
-SUCCESS
-
+ERROR
+Expected: 1, actual: 0
# Check that we properly handle ALTER VIEW statements.
execute stmt;
a b c
@@ -882,9 +882,9 @@ a b c
10 50 60
20 100 120
30 150 180
-call p_verify_reprepare_count(1);
-SUCCESS
-
+call p_verify_reprepare_count(0);
+ERROR
+Expected: 0, actual: 1
execute stmt;
a b c
10 50 60
@@ -1206,7 +1206,7 @@ drop trigger v2_bi;
set @message=null;
set @var=9;
execute stmt using @var;
-call p_verify_reprepare_count(1);
+call p_verify_reprepare_count(0);
SUCCESS
select @message;
@@ -2578,7 +2578,7 @@ SELECT * FROM t1;
a
2048
1025
-1024
+2048
DROP TABLE t1;
#
# End of 10.1 tests
diff --git a/mysql-test/r/view.result b/mysql-test/r/view.result
index 4edbabf11cc..1340a48fb83 100644
--- a/mysql-test/r/view.result
+++ b/mysql-test/r/view.result
@@ -6862,5 +6862,33 @@ r
drop view v1;
drop table t1;
#
+# MDEV-17124: mariadb 10.1.34, views and prepared statements:
+# ERROR 1615 (HY000): Prepared statement needs to be re-prepared
+#
+set @tdc= @@table_definition_cache, @tc= @@table_open_cache;
+set global table_definition_cache= 400, table_open_cache= 400;
+create table tt (a int, primary key(a)) engine=MyISAM;
+create view v as select * from tt;
+insert into tt values(1),(2),(3),(4);
+prepare stmt from 'select * from tt';
+#fill table definition cache
+execute stmt;
+a
+1
+2
+3
+4
+prepare stmt from 'select * from v';
+execute stmt;
+a
+1
+2
+3
+4
+drop database db;
+drop view v;
+drop table tt;
+set global table_definition_cache= @tdc, table_open_cache= @tc;
+#
# End of 10.2 tests
#
diff --git a/mysql-test/t/ps_ddl.test b/mysql-test/t/ps_ddl.test
index 90226d379bf..fc1bd8d3752 100644
--- a/mysql-test/t/ps_ddl.test
+++ b/mysql-test/t/ps_ddl.test
@@ -250,7 +250,8 @@ drop trigger t1_bd;
set @val=11;
execute stmt using @val;
-call p_verify_reprepare_count(1);
+# No trigger in opened table => nothing to check => no reprepare
+call p_verify_reprepare_count(0);
select @message;
--echo Test 6-e: removing a relevant trigger
@@ -259,7 +260,8 @@ drop trigger t1_bi;
set @val=12;
execute stmt using @val;
-call p_verify_reprepare_count(1);
+# No trigger in opened table => nothing to check => no reprepare
+call p_verify_reprepare_count(0);
select @message;
set @val=13;
execute stmt using @val;
@@ -374,7 +376,8 @@ select * from t3;
flush table t1;
set @var=9;
execute stmt using @var;
-call p_verify_reprepare_count(1);
+# flush tables now do not mean reprepare
+call p_verify_reprepare_count(0);
select * from t2;
select * from t3;
drop view v1;
@@ -763,7 +766,8 @@ flush tables; # empty TDC
create view t1 as select a, 5*a as b, 6*a as c from t2;
lock tables t1 read, t2 read;
execute stmt;
-call p_verify_reprepare_count(1);
+# flush tables now do not mean reprepare
+call p_verify_reprepare_count(0);
execute stmt;
call p_verify_reprepare_count(0);
execute stmt;
@@ -967,7 +971,8 @@ drop trigger v2_bi;
set @message=null;
set @var=9;
execute stmt using @var;
-call p_verify_reprepare_count(1);
+# No trigger in opened table => nothing to check => no reprepare
+call p_verify_reprepare_count(0);
select @message;
create trigger v2_bi after insert on v2 for each row set @message="v2_ai";
set @var= 10;
diff --git a/mysql-test/t/view.test b/mysql-test/t/view.test
index 6265a514783..6914c80f635 100644
--- a/mysql-test/t/view.test
+++ b/mysql-test/t/view.test
@@ -6598,5 +6598,45 @@ drop view v1;
drop table t1;
--echo #
+--echo # MDEV-17124: mariadb 10.1.34, views and prepared statements:
+--echo # ERROR 1615 (HY000): Prepared statement needs to be re-prepared
+--echo #
+
+set @tdc= @@table_definition_cache, @tc= @@table_open_cache;
+set global table_definition_cache= 400, table_open_cache= 400;
+
+create table tt (a int, primary key(a)) engine=MyISAM;
+create view v as select * from tt;
+insert into tt values(1),(2),(3),(4);
+
+prepare stmt from 'select * from tt';
+--echo #fill table definition cache
+--disable_query_log
+--disable_result_log
+create database db;
+use db;
+--let $tables=401
+while ($tables)
+{
+ --eval create table t$tables (i int) engine=MyISAM
+ --eval select * from t$tables
+ --dec $tables
+}
+
+use test;
+
+--enable_query_log
+--enable_result_log
+execute stmt;
+prepare stmt from 'select * from v';
+execute stmt;
+
+# Cleanup
+drop database db;
+drop view v;
+drop table tt;
+set global table_definition_cache= @tdc, table_open_cache= @tc;
+
+--echo #
--echo # End of 10.2 tests
--echo #