summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Newnham <mark@newnhams.com>2026-02-17 21:12:43 -0700
committerGitHub <noreply@github.com>2026-02-17 21:12:43 -0700
commita085a30dffc6917a6bf4a80a1b85dceb897b7bc0 (patch)
treef838d41e10eab0f437c8a06260c07797ca38a253
parentd0d0e698fc0cfea3cf43a3b85eb3bd48eeb98057 (diff)
parent86a9cb7006edb799362002e8aeeaf906765020a1 (diff)
downloadadodb-a085a30dffc6917a6bf4a80a1b85dceb897b7bc0.tar.gz
adodb-a085a30dffc6917a6bf4a80a1b85dceb897b7bc0.tar.bz2
adodb-a085a30dffc6917a6bf4a80a1b85dceb897b7bc0.zip
Merge pull request #1188 from ADOdb:1187-mssqlnative-metadatabases-does-not-reset-to-the-current-database-after-method-is-called
Ensures the database names and fetch modes are reset after method call
-rw-r--r--drivers/adodb-mssqlnative.inc.php44
1 files changed, 32 insertions, 12 deletions
diff --git a/drivers/adodb-mssqlnative.inc.php b/drivers/adodb-mssqlnative.inc.php
index e4859a0d..c98c34a4 100644
--- a/drivers/adodb-mssqlnative.inc.php
+++ b/drivers/adodb-mssqlnative.inc.php
@@ -64,7 +64,7 @@ class ADODB_mssqlnative extends ADOConnection {
var $hasAffectedRows = true;
var $poorAffectedRows = false;
var $metaDatabasesSQL = "select name from sys.sysdatabases where name <> 'master'";
- var $metaTablesSQL="select name,case when type='U' then 'T' else 'V' end from sysobjects where (type='U' or type='V') and (name not in ('sysallocations','syscolumns','syscomments','sysdepends','sysfilegroups','sysfiles','sysfiles1','sysforeignkeys','sysfulltextcatalogs','sysindexes','sysindexkeys','sysmembers','sysobjects','syspermissions','sysprotects','sysreferences','systypes','sysusers','sysalternates','sysconstraints','syssegments','REFERENTIAL_CONSTRAINTS','CHECK_CONSTRAINTS','CONSTRAINT_TABLE_USAGE','CONSTRAINT_COLUMN_USAGE','VIEWS','VIEW_TABLE_USAGE','VIEW_COLUMN_USAGE','SCHEMATA','TABLES','TABLE_CONSTRAINTS','TABLE_PRIVILEGES','COLUMNS','COLUMN_DOMAIN_USAGE','COLUMN_PRIVILEGES','DOMAINS','DOMAIN_CONSTRAINTS','KEY_COLUMN_USAGE','dtproperties'))";
+
var $metaColumnsSQL =
"select c.name,
t.name as type,
@@ -809,21 +809,41 @@ class ADODB_mssqlnative extends ADOConnection {
return $arr2;
}
- //From: Fernando Moreira <FMoreira@imediata.pt>
- function MetaDatabases()
+ /**
+ * Returns a list of current visible databases
+ *
+ * @return array
+ */
+ public function MetaDatabases()
{
+ global $ADODB_FETCH_MODE;
+
+ $saveFetchModes = [
+ $ADODB_FETCH_MODE,
+ $this->fetchMode
+ ];
+
+ $saveDatabaseName = $this->database;
+
+ $this->SetFetchMode(ADODB_FETCH_NUM);
+
$this->SelectDB("master");
+
$rs = $this->Execute($this->metaDatabasesSQL);
$rows = $rs->GetRows();
- $ret = array();
- for($i=0;$i<count($rows);$i++) {
- $ret[] = $rows[$i][0];
- }
- $this->SelectDB($this->database);
- if($ret)
- return $ret;
- else
- return false;
+
+ $ADODB_FETCH_MODE = $saveFetchModes[0];
+ $this->fetchMode = $saveFetchModes[1];
+
+ /*
+ * Flatten and lowercase the array
+ */
+ $ret = array_map('strtolower',array_merge(...$rows));
+
+ $this->SelectDB($saveDatabaseName);
+
+ return $ret ? $ret : false;
+
}
// "Stein-Aksel Basma" <basma@accelero.no>