Details
-
Bug
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Fixed
-
10.2.11, 10.2(EOL), 10.3(EOL)
-
None
-
Ubuntu 16.04.3 LTS running MariaDB 10.2.11.
Description
Whilst working on data analysis using temporary tables on "10.2.11-MariaDB-10.2.11+maria~xenial-log" I noticed an issue with CTE's. Mariadb fails to reopen temporary tables if they are used more than once with the CTE query. (Note that if temporary tables are converted to permanent tables the below test case work fine).
Running the below test case in database dbtestcase returns : "ERROR 1146 (42S02) at line 10 in file: 'testcase.sql': Table 'dbtestcase.tbcte2' doesn't exist"
Testcase:
drop table if exists tbcte1;
drop table if exists tbcte2;create table tbcte1 (term char(10));
create temporary table tbcte2 (term char(10));insert into tbcte1 values ('TERM01'),('TERM02'),('TERM03');
insert into tbcte2 values ('TERM02'),('TERM03'),('TERM04');with c1 as (select * from tbcte1),
c2 as (select * from tbcte2)
select *
from c1
left outer join c2 on c1.term = c2.term
union all
select *
from c1
right outer join c2 on c1.term = c2.term
where c1.term is null;
Server config:
--user=mysql --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/run/mysqld/mysqld.sock --port=3306 --basedir=/usr --datadir=/var/lib/mysql --tmpdir=/tmp --lc_messages_dir=/usr/share/mysql --lc_messages=en_US --skip-external-locking --bind-address=0.0.0.0 --max_connections=100 --connect_timeout=5 --wait_timeout=600 --max_allowed_packet=16M --thread_cache_size=128 --sort_buffer_size=4M --bulk_insert_buffer_size=16M --tmp_table_size=32M --max_heap_table_size=32M --myisam_recover_options=BACKUP --key_buffer_size=128M --table_open_cache=400 --myisam_sort_buffer_size=512M --concurrent_insert=2 --read_buffer_size=2M --read_rnd_buffer_size=1M --query_cache_limit=128K --query_cache_size=64M --log_warnings=2 --slow_query_log_file=/var/log/mysql/mariadb-slow.log --long_query_time=10 --log_slow_verbosity=query_plan --log_bin=/var/log/mysql/mariadb-bin --log_bin_index=/var/log/mysql/mariadb-bin.index --expire_logs_days=10 --max_binlog_size=100M --sql_mode=ONLY_FULL_GROUP_BY --default_storage_engine=InnoDB --innodb_buffer_pool_size=256M --innodb_log_buffer_size=8M --innodb_file_per_table=1 --innodb_open_files=400 --innodb_io_capacity=400 --innodb_flush_method=O_DIRECT
Kenneth Penza, thanks for the report!
Reproduced as described on MariaDB 10.2, 10.3.
testcase:
MariaDB [test]> with c1 as (select i from t1), c2 as (select i from c1 where c1.i=2)
-> select i from c1 union select i from c2;
ERROR 1146 (42S02): Table 'test.t1' doesn't exist
MariaDB [test]> select * from t1;
+------+
| i |
+------+
| 1 |
| 2 |
| 3 |
+------+
3 rows in set (0.00 sec)