sql-bench/test-table-elimination fails with SQL syntax error in LOCK TABLES if executed with --lock-tables
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
MariaDB |
New
|
Low
|
Sergey Petrunia |
Bug Description
Initially reported in the KB as http://
If sql-bench/
LOCK TABLES elim_facts, elim_attr1, elim_attr2 WRITE
and reasonably fails with a syntax error, as it is not a valid statement: each table should be followed by a lock type separately.
The following change fixes this particular problem
95c95
< do_query($dbh,"LOCK TABLES elim_facts, elim_attr1, elim_attr2 WRITE");
---
> do_query($dbh,"LOCK TABLES elim_facts WRITE, elim_attr1 WRITE, elim_attr2 WRITE");
207c207
< do_query($dbh,"LOCK TABLES elim_facts, elim_attr1, elim_attr2 WRITE");
---
> do_query($dbh,"LOCK TABLES elim_facts WRITE, elim_attr1 WRITE, elim_attr2 WRITE");
but then another one reveals:
testing full facts facts table
Error occured with execute(select * from elim_current_facts where id=30246.
-> Table 'F' was not locked with LOCK TABLES
This happens because the view elim_current_facts addresses the table elim_facts through its alias F, which is not locked explicitly. So, I also added the view itself into the LOCK statement:
95c95
< do_query($dbh,"LOCK TABLES elim_facts, elim_attr1, elim_attr2 WRITE");
---
> do_query($dbh,"LOCK TABLES elim_current_facts WRITE, elim_facts WRITE, elim_attr1 WRITE, elim_attr2 WRITE");
207c207
< do_query($dbh,"LOCK TABLES elim_facts, elim_attr1, elim_attr2 WRITE");
---
> do_query($dbh,"LOCK TABLES elim_current_facts WRITE, elim_facts WRITE, elim_attr1 WRITE, elim_attr2 WRITE");
Now it passes.
bzr version-info
revision-id: <email address hidden>
date: 2012-04-06 13:31:33 +0500
build-date: 2012-04-22 04:12:58 +0400
revno: 3146
According to the script code, should also be reproducible on 5.2-5.5.
To reproduce,
- start MariaDB server;
- run perl test-table-
summary: |
- sql-bench/test-table-elimination fails with SQL syntax error if executed - with --lock-tables + sql-bench/test-table-elimination fails with SQL syntax error in LOCK + TABLES if executed with --lock-tables |