Uploaded image for project: 'MariaDB Server'
  1. MariaDB Server
  2. MDEV-744

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

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Trivial
    • Resolution: Fixed
    • Affects Version/s: 5.3.9
    • Fix Version/s: 5.5.28a, 5.3.10, 5.2.13, 5.1.66
    • Component/s: None
    • Labels:

      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

        Gliffy Diagrams

          Attachments

            Activity

            Hide
            ratzpo Rasmus Johansson added a comment -

            Launchpad bug id: 986731

            Show
            ratzpo Rasmus Johansson added a comment - Launchpad bug id: 986731
            Hide
            psergey Sergei Petrunia added a comment -

            Fixed in 5.3

            Show
            psergey Sergei Petrunia added a comment - Fixed in 5.3

              People

              • Assignee:
                psergey Sergei Petrunia
                Reporter:
                elenst Elena Stepanova
              • Votes:
                0 Vote for this issue
                Watchers:
                1 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: