sql-bench/test-table-elimination fails with SQL syntax error in LOCK TABLES if executed with --lock-tables

Bug #986731 reported by Elena Stepanova
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
MariaDB
New
Low
Sergey Petrunia

Bug Description

Initially reported in the KB as http://kb.askmonty.org/en/test-table-elimination-fails.

If sql-bench/test-table-elimination is started with --lock-tables (or --fast), it attempts to execute the following command:

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.3207346651)
 -> 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-elimination --socket=<path to socket> --lock-tables

Tags: tests
Elena Stepanova (elenst)
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
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.