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

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

    XMLWordPrintable

Details

    • MOODLE_31_STABLE, MOODLE_32_STABLE, MOODLE_33_STABLE
    • MOODLE_31_STABLE, MOODLE_32_STABLE
    • MDL-57192-master
    • 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.
    • 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

              ankit_frenz Ankit Agarwal
              moodle.com Moodle HQ
              Adrian Greeve Adrian Greeve
              Eloy Lafuente (stronk7) Eloy Lafuente (stronk7)
              Rajesh Taneja Rajesh Taneja
              David Woloszyn, Huong Nguyen, Jake Dallimore, Meirza, Michael Hawkins, Raquel Ortega, Safat Shahin, Stevani Andolo
              Votes:
              1 Vote for this issue
              Watchers:
              6 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:
                9/Jan/17