Details
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