Uploaded image for project: 'Moodle'
  1. Moodle
  2. MDL-57192

Database query logging fails with MySQLi (and possibly other drivers)

    XMLWordPrintable

    Details

    • Testing Instructions:
      Hide
      1. This is going to be really painful, sorry.
      2. Run entire unit test suite on all databases drivers (not only on all dbs).
      3. Turn on logall config in your config.php (dboptions["logall"] => true)
      4. # Run entire unit test suite on all databases drivers again (not only on all dbs).
      5. Access and browse your site and make sure no obvious dml errors are present.
      6. Repeat this on all supported db drivers.
      7. Since we don't do this often there might be unrelated errors, please verify this patch is actual cause of the error before failing.
      Show
      This is going to be really painful, sorry. Run entire unit test suite on all databases drivers (not only on all dbs). Turn on logall config in your config.php (dboptions ["logall"] => true) # Run entire unit test suite on all databases drivers again (not only on all dbs). Access and browse your site and make sure no obvious dml errors are present. Repeat this on all supported db drivers. Since we don't do this often there might be unrelated errors, please verify this patch is actual cause of the error before failing.
    • Affected Branches:
      MOODLE_31_STABLE, MOODLE_32_STABLE, MOODLE_33_STABLE
    • Fixed Branches:
      MOODLE_31_STABLE, MOODLE_32_STABLE
    • Pull Master Branch:
      MDL-57192-master
    • Sprint:
      3.3 sprint 1

      Description

      This is essentially the same issue as MDL-29199. Unfortunately the reported bugfix wasn't replicated for all other drivers that use the same functionalities.

      When enabling query logging ('logall' set to true) in $CFG->dboptions, the MySQLi driver (and possibly other drivers as well) will try to call $this->temptables->is_temptable($table) while $this->temptables is not initialized (= null) yet. Execution fails with errors similar to:

      Fatal error: Call to a member function is_temptable() on a non-object in /moodle/lib/dml/mysqli_native_moodle_database.php on line 580
      

      Since this has been reported in the Orcal driver before and now is happening again in MySQLi, chances are that the issue also exists for MSSQL, SQLite3, PostgreSQL, SQLSRV and in the abstract moodle class, since they all make a call to is_temptable(). As such these other drivers should be checked as well.

        Attachments

          Issue Links

            Activity

              People

              • Votes:
                1 Vote for this issue
                Watchers:
                6 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved:
                  Fix Release Date:
                  9/Jan/17