original_string: public function get_dbcollation() {
          if (isset($this->dboptions['dbcollation'])) {
              return $this->dboptions['dbcollation'];
          }
          if ($this->external) {
              return null;
          }
  
          $collation = null;
  
          // Look for current collation of our config table (the first table that gets created),
          // so that we create all tables with the same collation.
          $sql = "SELECT collation_name
                    FROM INFORMATION_SCHEMA.COLUMNS
                   WHERE table_schema = DATABASE() AND table_name = '{$this->prefix}config' AND column_name = 'value'";
          $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);
              $collation = $rec['collation_name'];
          }
          $result->close();
  
  
          if (!$collation) {
              // Get the default database collation, but only if using UTF-8.
              $sql = "SELECT @@collation_database";
              $this->query_start($sql, NULL, SQL_QUERY_AUX);
              $result = $this->mysqli->query($sql);
              $this->query_end($result);
              if ($rec = $result->fetch_assoc()) {
                  if (strpos($rec['@@collation_database'], 'utf8_') === 0 || strpos($rec['@@collation_database'], 'utf8mb4_') === 0) {
                      $collation = $rec['@@collation_database'];
                  }
              }
              $result->close();
          }
  
          if (!$collation) {
              // We want only utf8 compatible collations.
              $collation = null;
              $sql = "SHOW COLLATION WHERE Collation LIKE 'utf8mb4\_%' AND Charset = 'utf8mb4'";
              $this->query_start($sql, NULL, SQL_QUERY_AUX);
              $result = $this->mysqli->query($sql);
              $this->query_end($result);
              while ($res = $result->fetch_assoc()) {
                  $collation = $res['Collation'];
                  if (strtoupper($res['Default']) === 'YES') {
                      $collation = $res['Collation'];
                      break;
                  }
              }
              $result->close();
          }
  
          // Cache the result to improve performance.
          $this->dboptions['dbcollation'] = $collation;
          return $collation;
      }
code: public function get_dbcollation() {
          if (isset($this->dboptions['dbcollation'])) {
              return $this->dboptions['dbcollation'];
          }
          if ($this->external) {
              return null;
          }
  
          $collation = null;
  
          // Look for current collation of our config table (the first table that gets created),
          // so that we create all tables with the same collation.
          $sql = "SELECT collation_name
                    FROM INFORMATION_SCHEMA.COLUMNS
                   WHERE table_schema = DATABASE() AND table_name = '{$this->prefix}config' AND column_name = 'value'";
          $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);
              $collation = $rec['collation_name'];
          }
          $result->close();
  
  
          if (!$collation) {
              // Get the default database collation, but only if using UTF-8.
              $sql = "SELECT @@collation_database";
              $this->query_start($sql, NULL, SQL_QUERY_AUX);
              $result = $this->mysqli->query($sql);
              $this->query_end($result);
              if ($rec = $result->fetch_assoc()) {
                  if (strpos($rec['@@collation_database'], 'utf8_') === 0 || strpos($rec['@@collation_database'], 'utf8mb4_') === 0) {
                      $collation = $rec['@@collation_database'];
                  }
              }
              $result->close();
          }
  
          if (!$collation) {
              // We want only utf8 compatible collations.
              $collation = null;
              $sql = "SHOW COLLATION WHERE Collation LIKE 'utf8mb4\_%' AND Charset = 'utf8mb4'";
              $this->query_start($sql, NULL, SQL_QUERY_AUX);
              $result = $this->mysqli->query($sql);
              $this->query_end($result);
              while ($res = $result->fetch_assoc()) {
                  $collation = $res['Collation'];
                  if (strtoupper($res['Default']) === 'YES') {
                      $collation = $res['Collation'];
                      break;
                  }
              }
              $result->close();
          }
  
          // Cache the result to improve performance.
          $this->dboptions['dbcollation'] = $collation;
          return $collation;
      }
code_tokens: public function get_dbcollation ( ) { if ( isset ( $ this -> dboptions [ 'dbcollation' ] ) ) { return $ this -> dboptions [ 'dbcollation' ] ; } if ( $ this -> external ) { return null ; } $ collation = null ; // Look for current collation of our config table (the first table that gets created), // so that we create all tables with the same collation. $ sql = "SELECT collation_name
                    FROM INFORMATION_SCHEMA.COLUMNS
                   WHERE table_schema = DATABASE() AND table_name = '{$this->prefix}config' AND column_name = 'value'" ; $ 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 ) ; $ collation = $ rec [ 'collation_name' ] ; } $ result -> close ( ) ; if ( ! $ collation ) { // Get the default database collation, but only if using UTF-8. $ sql = "SELECT @@collation_database" ; $ this -> query_start ( $ sql , NULL , SQL_QUERY_AUX ) ; $ result = $ this -> mysqli -> query ( $ sql ) ; $ this -> query_end ( $ result ) ; if ( $ rec = $ result -> fetch_assoc ( ) ) { if ( strpos ( $ rec [ '@@collation_database' ] , 'utf8_' ) === 0 || strpos ( $ rec [ '@@collation_database' ] , 'utf8mb4_' ) === 0 ) { $ collation = $ rec [ '@@collation_database' ] ; } } $ result -> close ( ) ; } if ( ! $ collation ) { // We want only utf8 compatible collations. $ collation = null ; $ sql = "SHOW COLLATION WHERE Collation LIKE 'utf8mb4\_%' AND Charset = 'utf8mb4'" ; $ this -> query_start ( $ sql , NULL , SQL_QUERY_AUX ) ; $ result = $ this -> mysqli -> query ( $ sql ) ; $ this -> query_end ( $ result ) ; while ( $ res = $ result -> fetch_assoc ( ) ) { $ collation = $ res [ 'Collation' ] ; if ( strtoupper ( $ res [ 'Default' ] ) === 'YES' ) { $ collation = $ res [ 'Collation' ] ; break ; } } $ result -> close ( ) ; } // Cache the result to improve performance. $ this -> dboptions [ 'dbcollation' ] = $ collation ; return $ collation ; }
docstring: Returns the current MySQL db collation.
  
  This is an ugly workaround for MySQL default collation problems.
  
  @return string or null MySQL collation name
docstring_tokens: Returns the current MySQL db collation .