original_string: public function get_dbengine() {
          if (isset($this->dboptions['dbengine'])) {
              return $this->dboptions['dbengine'];
          }
  
          if ($this->external) {
              return null;
          }
  
          $engine = null;
  
          // Look for current engine of our config table (the first table that gets created),
          // so that we create all tables with the same engine.
          $sql = "SELECT engine
                    FROM INFORMATION_SCHEMA.TABLES
                   WHERE table_schema = DATABASE() AND table_name = '{$this->prefix}config'";
          $this->query_start($sql, NULL, SQL_QUERY_AUX);
          $result = $this->mysqli->query($sql);
          $this->query_end($result);
          if ($rec = $result->fetch_assoc()) {
              // MySQL 8 BC: information_schema.* returns the fields in upper case.
              $rec = array_change_key_case($rec, CASE_LOWER);
              $engine = $rec['engine'];
          }
          $result->close();
  
          if ($engine) {
              // Cache the result to improve performance.
              $this->dboptions['dbengine'] = $engine;
              return $engine;
          }
  
          // Get the default database engine.
          $sql = "SELECT @@default_storage_engine engine";
          $this->query_start($sql, NULL, SQL_QUERY_AUX);
          $result = $this->mysqli->query($sql);
          $this->query_end($result);
          if ($rec = $result->fetch_assoc()) {
              $engine = $rec['engine'];
          }
          $result->close();
  
          if ($engine === 'MyISAM') {
              // we really do not want MyISAM for Moodle, InnoDB or XtraDB is a reasonable defaults if supported
              $sql = "SHOW STORAGE ENGINES";
              $this->query_start($sql, NULL, SQL_QUERY_AUX);
              $result = $this->mysqli->query($sql);
              $this->query_end($result);
              $engines = array();
              while ($res = $result->fetch_assoc()) {
                  if ($res['Support'] === 'YES' or $res['Support'] === 'DEFAULT') {
                      $engines[$res['Engine']] = true;
                  }
              }
              $result->close();
              if (isset($engines['InnoDB'])) {
                  $engine = 'InnoDB';
              }
              if (isset($engines['XtraDB'])) {
                  $engine = 'XtraDB';
              }
          }
  
          // Cache the result to improve performance.
          $this->dboptions['dbengine'] = $engine;
          return $engine;
      }
code: public function get_dbengine() {
          if (isset($this->dboptions['dbengine'])) {
              return $this->dboptions['dbengine'];
          }
  
          if ($this->external) {
              return null;
          }
  
          $engine = null;
  
          // Look for current engine of our config table (the first table that gets created),
          // so that we create all tables with the same engine.
          $sql = "SELECT engine
                    FROM INFORMATION_SCHEMA.TABLES
                   WHERE table_schema = DATABASE() AND table_name = '{$this->prefix}config'";
          $this->query_start($sql, NULL, SQL_QUERY_AUX);
          $result = $this->mysqli->query($sql);
          $this->query_end($result);
          if ($rec = $result->fetch_assoc()) {
              // MySQL 8 BC: information_schema.* returns the fields in upper case.
              $rec = array_change_key_case($rec, CASE_LOWER);
              $engine = $rec['engine'];
          }
          $result->close();
  
          if ($engine) {
              // Cache the result to improve performance.
              $this->dboptions['dbengine'] = $engine;
              return $engine;
          }
  
          // Get the default database engine.
          $sql = "SELECT @@default_storage_engine engine";
          $this->query_start($sql, NULL, SQL_QUERY_AUX);
          $result = $this->mysqli->query($sql);
          $this->query_end($result);
          if ($rec = $result->fetch_assoc()) {
              $engine = $rec['engine'];
          }
          $result->close();
  
          if ($engine === 'MyISAM') {
              // we really do not want MyISAM for Moodle, InnoDB or XtraDB is a reasonable defaults if supported
              $sql = "SHOW STORAGE ENGINES";
              $this->query_start($sql, NULL, SQL_QUERY_AUX);
              $result = $this->mysqli->query($sql);
              $this->query_end($result);
              $engines = array();
              while ($res = $result->fetch_assoc()) {
                  if ($res['Support'] === 'YES' or $res['Support'] === 'DEFAULT') {
                      $engines[$res['Engine']] = true;
                  }
              }
              $result->close();
              if (isset($engines['InnoDB'])) {
                  $engine = 'InnoDB';
              }
              if (isset($engines['XtraDB'])) {
                  $engine = 'XtraDB';
              }
          }
  
          // Cache the result to improve performance.
          $this->dboptions['dbengine'] = $engine;
          return $engine;
      }
code_tokens: public function get_dbengine ( ) { if ( isset ( $ this -> dboptions [ 'dbengine' ] ) ) { return $ this -> dboptions [ 'dbengine' ] ; } if ( $ this -> external ) { return null ; } $ engine = null ; // Look for current engine of our config table (the first table that gets created), // so that we create all tables with the same engine. $ sql = "SELECT engine
                    FROM INFORMATION_SCHEMA.TABLES
                   WHERE table_schema = DATABASE() AND table_name = '{$this->prefix}config'" ; $ this -> query_start ( $ sql , NULL , SQL_QUERY_AUX ) ; $ result = $ this -> mysqli -> query ( $ sql ) ; $ this -> query_end ( $ result ) ; if ( $ rec = $ result -> fetch_assoc ( ) ) { // MySQL 8 BC: information_schema.* returns the fields in upper case. $ rec = array_change_key_case ( $ rec , CASE_LOWER ) ; $ engine = $ rec [ 'engine' ] ; } $ result -> close ( ) ; if ( $ engine ) { // Cache the result to improve performance. $ this -> dboptions [ 'dbengine' ] = $ engine ; return $ engine ; } // Get the default database engine. $ sql = "SELECT @@default_storage_engine engine" ; $ this -> query_start ( $ sql , NULL , SQL_QUERY_AUX ) ; $ result = $ this -> mysqli -> query ( $ sql ) ; $ this -> query_end ( $ result ) ; if ( $ rec = $ result -> fetch_assoc ( ) ) { $ engine = $ rec [ 'engine' ] ; } $ result -> close ( ) ; if ( $ engine === 'MyISAM' ) { // we really do not want MyISAM for Moodle, InnoDB or XtraDB is a reasonable defaults if supported $ sql = "SHOW STORAGE ENGINES" ; $ this -> query_start ( $ sql , NULL , SQL_QUERY_AUX ) ; $ result = $ this -> mysqli -> query ( $ sql ) ; $ this -> query_end ( $ result ) ; $ engines = array ( ) ; while ( $ res = $ result -> fetch_assoc ( ) ) { if ( $ res [ 'Support' ] === 'YES' or $ res [ 'Support' ] === 'DEFAULT' ) { $ engines [ $ res [ 'Engine' ] ] = true ; } } $ result -> close ( ) ; if ( isset ( $ engines [ 'InnoDB' ] ) ) { $ engine = 'InnoDB' ; } if ( isset ( $ engines [ 'XtraDB' ] ) ) { $ engine = 'XtraDB' ; } } // Cache the result to improve performance. $ this -> dboptions [ 'dbengine' ] = $ engine ; return $ engine ; }
docstring: Returns the current MySQL db engine.
  
  This is an ugly workaround for MySQL default engine problems,
  Moodle is designed to work best on ACID compliant databases
  with full transaction support. Do not use MyISAM.
  
  @return string or null MySQL engine name
docstring_tokens: Returns the current MySQL db engine .