mirror of
https://github.com/moodle/moodle.git
synced 2025-04-13 20:42:22 +02:00
Merge branch 'MDL-39389' of git://github.com/stronk7/moodle
This commit is contained in:
commit
e947caf4a1
@ -410,11 +410,16 @@ class mssql_native_moodle_database extends moodle_database {
|
||||
* @return array array of database_column_info objects indexed with column names
|
||||
*/
|
||||
public function get_columns($table, $usecache=true) {
|
||||
if ($usecache and isset($this->columns[$table])) {
|
||||
return $this->columns[$table];
|
||||
|
||||
if ($usecache) {
|
||||
$properties = array('dbfamily' => $this->get_dbfamily(), 'settings' => $this->get_settings_hash());
|
||||
$cache = cache::make('core', 'databasemeta', $properties);
|
||||
if ($data = $cache->get($table)) {
|
||||
return $data;
|
||||
}
|
||||
}
|
||||
|
||||
$this->columns[$table] = array();
|
||||
$structure = array();
|
||||
|
||||
if (!$this->temptables->is_temptable($table)) { // normal table, get metadata from own schema
|
||||
$sql = "SELECT column_name AS name,
|
||||
@ -494,11 +499,15 @@ class mssql_native_moodle_database extends moodle_database {
|
||||
// Process binary
|
||||
$info->binary = $info->meta_type == 'B' ? true : false;
|
||||
|
||||
$this->columns[$table][$info->name] = new database_column_info($info);
|
||||
$structure[$info->name] = new database_column_info($info);
|
||||
}
|
||||
$this->free_result($result);
|
||||
|
||||
return $this->columns[$table];
|
||||
if ($usecache) {
|
||||
$result = $cache->set($table, $structure);
|
||||
}
|
||||
|
||||
return $structure;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -469,15 +469,20 @@ class oci_native_moodle_database extends moodle_database {
|
||||
* @return array array of database_column_info objects indexed with column names
|
||||
*/
|
||||
public function get_columns($table, $usecache=true) {
|
||||
if ($usecache and isset($this->columns[$table])) {
|
||||
return $this->columns[$table];
|
||||
|
||||
if ($usecache) {
|
||||
$properties = array('dbfamily' => $this->get_dbfamily(), 'settings' => $this->get_settings_hash());
|
||||
$cache = cache::make('core', 'databasemeta', $properties);
|
||||
if ($data = $cache->get($table)) {
|
||||
return $data;
|
||||
}
|
||||
}
|
||||
|
||||
if (!$table) { // table not specified, return empty array directly
|
||||
return array();
|
||||
}
|
||||
|
||||
$this->columns[$table] = array();
|
||||
$structure = array();
|
||||
|
||||
// We give precedence to CHAR_LENGTH for VARCHAR2 columns over WIDTH because the former is always
|
||||
// BYTE based and, for cross-db operations, we want CHAR based results. See MDL-29415
|
||||
@ -656,10 +661,14 @@ class oci_native_moodle_database extends moodle_database {
|
||||
$info->meta_type = '?';
|
||||
}
|
||||
|
||||
$this->columns[$table][$info->name] = new database_column_info($info);
|
||||
$structure[$info->name] = new database_column_info($info);
|
||||
}
|
||||
|
||||
return $this->columns[$table];
|
||||
if ($usecache) {
|
||||
$result = $cache->set($table, $structure);
|
||||
}
|
||||
|
||||
return $structure;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -197,9 +197,17 @@ class sqlite3_pdo_moodle_database extends pdo_moodle_database {
|
||||
* @return array array of database_column_info objects indexed with column names
|
||||
*/
|
||||
public function get_columns($table, $usecache=true) {
|
||||
if ($usecache and isset($this->columns[$table])) {
|
||||
return $this->columns[$table];
|
||||
|
||||
if ($usecache) {
|
||||
$properties = array('dbfamily' => $this->get_dbfamily(), 'settings' => $this->get_settings_hash());
|
||||
$cache = cache::make('core', 'databasemeta', $properties);
|
||||
if ($data = $cache->get($table)) {
|
||||
return $data;
|
||||
}
|
||||
}
|
||||
|
||||
$structure = array();
|
||||
|
||||
// get table's CREATE TABLE command (we'll need it for autoincrement fields)
|
||||
$sql = 'SELECT sql FROM sqlite_master WHERE type="table" AND tbl_name="'.$this->prefix.$table.'"';
|
||||
if ($this->debug) {
|
||||
@ -211,7 +219,6 @@ class sqlite3_pdo_moodle_database extends pdo_moodle_database {
|
||||
}
|
||||
$createsql = $createsql['sql'];
|
||||
|
||||
$columns = array();
|
||||
$sql = 'PRAGMA table_info("'. $this->prefix.$table.'")';
|
||||
if ($this->debug) {
|
||||
$this->debug_query($sql);
|
||||
@ -287,11 +294,14 @@ class sqlite3_pdo_moodle_database extends pdo_moodle_database {
|
||||
// trim extra quotes from text default values
|
||||
$columninfo['default_value'] = substr($columninfo['default_value'], 1, -1);
|
||||
}
|
||||
$columns[$columninfo['name']] = new database_column_info($columninfo);
|
||||
$structure[$columninfo['name']] = new database_column_info($columninfo);
|
||||
}
|
||||
|
||||
$this->columns[$table] = $columns;
|
||||
return $columns;
|
||||
if ($usecache) {
|
||||
$result = $cache->set($table, $structure);
|
||||
}
|
||||
|
||||
return $structure;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -476,11 +476,15 @@ class sqlsrv_native_moodle_database extends moodle_database {
|
||||
* @return array array of database_column_info objects indexed with column names
|
||||
*/
|
||||
public function get_columns($table, $usecache = true) {
|
||||
if ($usecache and isset($this->columns[$table])) {
|
||||
return $this->columns[$table];
|
||||
if ($usecache) {
|
||||
$properties = array('dbfamily' => $this->get_dbfamily(), 'settings' => $this->get_settings_hash());
|
||||
$cache = cache::make('core', 'databasemeta', $properties);
|
||||
if ($data = $cache->get($table)) {
|
||||
return $data;
|
||||
}
|
||||
}
|
||||
|
||||
$this->columns[$table] = array ();
|
||||
$structure = array();
|
||||
|
||||
if (!$this->temptables->is_temptable($table)) { // normal table, get metadata from own schema
|
||||
$sql = "SELECT column_name AS name,
|
||||
@ -560,11 +564,15 @@ class sqlsrv_native_moodle_database extends moodle_database {
|
||||
// Process binary
|
||||
$info->binary = $info->meta_type == 'B' ? true : false;
|
||||
|
||||
$this->columns[$table][$info->name] = new database_column_info($info);
|
||||
$structure[$info->name] = new database_column_info($info);
|
||||
}
|
||||
$this->free_result($result);
|
||||
|
||||
return $this->columns[$table];
|
||||
if ($usecache) {
|
||||
$result = $cache->set($table, $structure);
|
||||
}
|
||||
|
||||
return $structure;
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
x
Reference in New Issue
Block a user