[MDEV-744] LP:986731 - sql-bench/test-table-elimination fails with SQL syntax error in LOCK TABLES if executed with --lock-tables Created: 2012-04-22  Updated: 2012-10-31  Resolved: 2012-10-31

Status: Closed
Project: MariaDB Server
Component/s: None
Affects Version/s: 5.3.9
Fix Version/s: 5.5.28a, 5.3.10, 5.2.13, 5.1.66

Type: Bug Priority: Trivial
Reporter: Elena Stepanova Assignee: Sergei Petrunia
Resolution: Fixed Votes: 0
Labels: Launchpad

Attachments: XML File LPexportBug986731.xml    

 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


 Comments   
Comment by Rasmus Johansson (Inactive) [ 2012-04-22 ]

Launchpad bug id: 986731

Comment by Sergei Petrunia [ 2012-10-31 ]

Fixed in 5.3

Generated at Thu Feb 08 06:31:01 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.