summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Newnham <mark@newnhams.com>2025-10-30 17:41:25 -0600
committerGitHub <noreply@github.com>2025-10-30 17:41:25 -0600
commite66802d19633230d85c26f19fdb497f528e88783 (patch)
tree3518e58f1df90c6d995a6947c12be62b2483c833
parent31f9b9262bd5df26e32e7921f901d444fe008176 (diff)
parent00130b0abea943530449ec0ac1759a87ab1bc8e0 (diff)
downloadadodb-e66802d19633230d85c26f19fdb497f528e88783.tar.gz
adodb-e66802d19633230d85c26f19fdb497f528e88783.tar.bz2
adodb-e66802d19633230d85c26f19fdb497f528e88783.zip
Merge pull request #1145 from ADOdb/1144-update-db2-actualtypes-to-match-current-db-features
Updare Actual types and identify auto-increment column in metacolumns
-rw-r--r--drivers/adodb-db2.inc.php57
1 files changed, 47 insertions, 10 deletions
diff --git a/drivers/adodb-db2.inc.php b/drivers/adodb-db2.inc.php
index c5f9992a..cedab5b9 100644
--- a/drivers/adodb-db2.inc.php
+++ b/drivers/adodb-db2.inc.php
@@ -1245,6 +1245,7 @@ See http://msdn.microsoft.com/library/default.asp?url=/library/en-us/db2/htm/db2
case -1: //text
return 'X';
case -4: //image
+ case -98: //blob
return 'B';
case 9:
@@ -1257,18 +1258,25 @@ See http://msdn.microsoft.com/library/default.asp?url=/library/en-us/db2/htm/db2
case 93:
return 'T';
- case 4:
- case 5:
- case -6:
+ case 4: //BIGINT
return 'I';
+ case -6:
+ return 'I8';
case -11: // uniqidentifier
return 'R';
+ case 5: //Logical I2
case -7: //bit
return 'L';
+ case 3:
+ return "N";
+ case -5:
+ return "I4";
+
default:
- return 'N';
+
+ return ADODB_DEFAULT_METATYPE;
}
}
@@ -1277,9 +1285,13 @@ See http://msdn.microsoft.com/library/default.asp?url=/library/en-us/db2/htm/db2
global $ADODB_FETCH_MODE;
$schema = '%';
- $this->_findschema($table,$schema);
+ $this->_findschema($table, $schema);
+
+
+ $table = $this->getTableCasedValue($table);
+
+ $findMatchingTable = $this->metaTables('T', '', $table);
- $findMatchingTable = $this->metaTables('T','',$table);
if ($findMatchingTable === false)
return false;
@@ -1309,9 +1321,12 @@ See http://msdn.microsoft.com/library/default.asp?url=/library/en-us/db2/htm/db2
$rs = new ADORecordSet_db2($qid);
- if (!$rs)
+ if (!$rs) {
+ print "NO RECORDSET\n";
+ $this->setFetchMode($savem);
return false;
-
+
+ }
$rs->_fetch();
$retarr = array();
@@ -1340,6 +1355,7 @@ See http://msdn.microsoft.com/library/default.asp?url=/library/en-us/db2/htm/db2
while (!$rs->EOF)
{
+
if ($rs->fields[2] == $table)
{
@@ -1362,6 +1378,7 @@ See http://msdn.microsoft.com/library/default.asp?url=/library/en-us/db2/htm/db2
$fld->scale = $rs->fields[8];
$fld->primary_key = 0;
+ $fld->actualType = $rs->fields[4];
//$columnName = $this->getMetaCasedValue($fld->name);
$columnName = strtoupper($fld->name);
$retarr[$columnName] = $fld;
@@ -1374,6 +1391,20 @@ See http://msdn.microsoft.com/library/default.asp?url=/library/en-us/db2/htm/db2
}
+ $sql = "SELECT COLNAME
+ FROM SYSCAT.COLUMNS
+ WHERE TABNAME='$table'
+ AND IDENTITY = 'Y'";
+
+ $identityColumns = $this->getCol($sql);
+
+ foreach ($identityColumns as $identityColumn) {
+ $identityColumn = strtoupper($identityColumn);
+ if (isset($retarr[$identityColumn])) {
+ $retarr[$identityColumn]->auto_increment = true;
+ }
+ }
+
$this->setFetchMode($savem);
$rs->Close();
@@ -1386,14 +1417,14 @@ See http://msdn.microsoft.com/library/default.asp?url=/library/en-us/db2/htm/db2
/*
* Now we find out if the column is part of a primary key
*/
+
$primaryKeys = $this->metaPrimaryKeys($table);
if (!$primaryKeys) {
return $retarr;
}
- foreach ($primaryKeys as $pk)
- {
+ foreach ($primaryKeys as $pk) {
$pk = strtoupper($pk);
if (isset($retarr[$pk])) {
$retarr[$pk]->primary_key = true;
@@ -2214,6 +2245,12 @@ class ADORecordSet_db2 extends ADORecordSet {
function _close()
{
+ if (!is_resource($this->_queryID)) {
+ /*
+ * Already closed
+ */
+ return false;
+ }
$ok = @db2_free_result($this->_queryID);
if (!$ok)
{