summaryrefslogtreecommitdiff
path: root/mysql-test/main
diff options
context:
space:
mode:
authorOleksandr Byelkin <sanja@mariadb.com>2022-11-25 12:54:24 +0100
committerOleksandr Byelkin <sanja@mariadb.com>2023-03-02 09:24:54 +0100
commita6a906d76697d5487418d51b251a3070ac6e8c80 (patch)
treeb529480c191e7ebcd460f6dc3eb9f82a3f2f72ff /mysql-test/main
parent7bdd878ae40e19b69736ed01fd2bc861c83d1784 (diff)
downloadmariadb-git-a6a906d76697d5487418d51b251a3070ac6e8c80.tar.gz
MDEV-26831 fallout: fix problems of name resolution cache
- Avoid passing real field cache as a parameter when we check for duplicates. - Correct cache cleanup (cached field number also have to be reset). - Name resolution cache simple test added.
Diffstat (limited to 'mysql-test/main')
-rw-r--r--mysql-test/main/name_resolution_cache_debug.result25
-rw-r--r--mysql-test/main/name_resolution_cache_debug.test36
2 files changed, 61 insertions, 0 deletions
diff --git a/mysql-test/main/name_resolution_cache_debug.result b/mysql-test/main/name_resolution_cache_debug.result
new file mode 100644
index 00000000000..7030176c5fe
--- /dev/null
+++ b/mysql-test/main/name_resolution_cache_debug.result
@@ -0,0 +1,25 @@
+connect con1,localhost,root;
+create table t1 (a int, b int);
+create table t2 (c int, d int);
+create view v1 as select c+1 as e, d+1 as f from t2;
+SET DEBUG_SYNC= 'table_field_cached SIGNAL in_sync WAIT_FOR go';
+prepare stmt1 from "select a from t1";
+execute stmt1;
+connection default;
+SET DEBUG_SYNC= 'now WAIT_FOR in_sync';
+SET DEBUG_SYNC= 'now SIGNAL go';
+connection con1;
+a
+SET DEBUG_SYNC= 'table_field_cached SIGNAL in_sync WAIT_FOR go';
+prepare stmt1 from "select e from v1";
+execute stmt1;
+connection default;
+SET DEBUG_SYNC= 'now WAIT_FOR in_sync';
+SET DEBUG_SYNC= 'now SIGNAL go';
+connection con1;
+e
+connection default;
+disconnect con1;
+SET DEBUG_SYNC = 'RESET';
+drop view v1;
+drop table t1,t2;
diff --git a/mysql-test/main/name_resolution_cache_debug.test b/mysql-test/main/name_resolution_cache_debug.test
new file mode 100644
index 00000000000..362d883cbd1
--- /dev/null
+++ b/mysql-test/main/name_resolution_cache_debug.test
@@ -0,0 +1,36 @@
+
+source include/have_debug_sync.inc;
+
+connect con1,localhost,root;
+create table t1 (a int, b int);
+create table t2 (c int, d int);
+create view v1 as select c+1 as e, d+1 as f from t2;
+
+SET DEBUG_SYNC= 'table_field_cached SIGNAL in_sync WAIT_FOR go';
+prepare stmt1 from "select a from t1";
+--send execute stmt1
+
+connection default;
+SET DEBUG_SYNC= 'now WAIT_FOR in_sync';
+SET DEBUG_SYNC= 'now SIGNAL go';
+
+connection con1;
+--reap
+
+SET DEBUG_SYNC= 'table_field_cached SIGNAL in_sync WAIT_FOR go';
+prepare stmt1 from "select e from v1";
+--send execute stmt1
+
+connection default;
+SET DEBUG_SYNC= 'now WAIT_FOR in_sync';
+SET DEBUG_SYNC= 'now SIGNAL go';
+
+connection con1;
+--reap
+
+connection default;
+disconnect con1;
+
+SET DEBUG_SYNC = 'RESET';
+drop view v1;
+drop table t1,t2;