[MDEV-6523] CONNECT temporary table created Created: 2014-08-03  Updated: 2014-09-11  Resolved: 2014-09-11

Status: Closed
Project: MariaDB Server
Component/s: None
Affects Version/s: 10.0.12
Fix Version/s: 10.0.14

Type: Bug Priority: Major
Reporter: Federico Razzoli Assignee: Sergei Golubchik
Resolution: Fixed Votes: 0
Labels: connect-engine


 Description   

If I try to create a file-based CONNECT table, an error message tells me that temp CONNECT tables are not supported. But I was able to create a MYSQL table, which returns junk results when queried:

MariaDB [test]> CREATE TABLE t SELECT 10, 'test', 'prova';
Query OK, 1 row affected (0.42 sec)
Records: 1  Duplicates: 0  Warnings: 0
 
MariaDB [test]> CREATE TEMPORARY TABLE tempmy ENGINE=CONNECT, TABLE_TYPE=MYSQL, CONNECTION='mysql://root:root@127.0.0.1/test/t';
Query OK, 0 rows affected (0.28 sec)
 
MariaDB [test]> SELECT * FROM tempmy;
+----+------+-------+
| 10 | test | prova |
+----+------+-------+
|  0 |      |       |
+----+------+-------+
1 row in set (0.00 sec)

Instead, I would expect to see an error after CREATE TABLE.



 Comments   
Comment by Olivier Bertrand [ 2014-08-08 ]

Indeed temporary CONNECT tables are not supported. This is indicated to MariaDB by the flag:

connect_hton->flags= HTON_TEMPORARY_NOT_SUPPORTED;

For instance trying to do:

CREATE TEMPORARY  TABLE  t1 (
a int not null
) ENGINE=CONNECT table_type=MYSQL  CONNECTION='mysql://root@127.0.0.1/test/t2';

is not accepted and returns the error message:

Table storage engine 'CONNECT' does not support the option 'TEMPORARY'

This is probably tested by the parser and MariaDB issues this message.

However in the present case MariaDB fails to test it and leaves the creation to be executed. The junk return is normal because CONNECT is not made to retrieve memory data.

My feeling is that this is not a CONNECT problem but a problem with MariaDB not stopping the create of a temporary table when it should do it.

Comment by Federico Razzoli [ 2014-08-08 ]

I tried the following:

MariaDB [test]> CREATE TABLE t SELECT 10 c;
Query OK, 1 row affected (0.46 sec)
Records: 1  Duplicates: 0  Warnings: 0
 
MariaDB [test]> CREATE OR REPLACE TEMPORARY TABLE tempmy ENGINE=CONNECT, TABLE_TYPE=MYSQL, CONNECTION='mysql://root:root@127.0.0.1/test/t';
Query OK, 0 rows affected (0.16 sec)
 
MariaDB [test]> CREATE OR REPLACE TEMPORARY TABLE tempmy (c INT) ENGINE=CONNECT, TABLE_TYPE=MYSQL, CONNECTION='mysql://root:root@127.0.0.1/test/t';
ERROR 1478 (HY000): Table storage engine 'CONNECT' does not support the create option 'TEMPORARY'

Note that the only difference between the 2 statements is that the latter uses table discovery. I hope this helps - if not, please ignore or delete this comment.

Generated at Thu Feb 08 07:12:35 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.