Update of /cvsroot/mantisbt/mantisbt/core/adodb/drivers In directory sc8-pr-cvs16:/tmp/cvs-serv22448/drivers Modified Files: adodb-access.inc.php adodb-ado.inc.php adodb-ado5.inc.php adodb-ado_access.inc.php adodb-ado_mssql.inc.php adodb-borland_ibase.inc.php adodb-csv.inc.php adodb-db2.inc.php adodb-fbsql.inc.php adodb-firebird.inc.php adodb-ibase.inc.php adodb-informix.inc.php adodb-informix72.inc.php adodb-ldap.inc.php adodb-mssql.inc.php adodb-mssqlpo.inc.php adodb-mysql.inc.php adodb-mysqli.inc.php adodb-mysqlt.inc.php adodb-netezza.inc.php adodb-oci8.inc.php adodb-oci805.inc.php adodb-oci8po.inc.php adodb-odbc.inc.php adodb-odbc_db2.inc.php adodb-odbc_mssql.inc.php adodb-odbc_oracle.inc.php adodb-odbtp.inc.php adodb-odbtp_unicode.inc.php adodb-oracle.inc.php adodb-pdo.inc.php adodb-pdo_mssql.inc.php adodb-pdo_mysql.inc.php adodb-pdo_oci.inc.php adodb-pdo_pgsql.inc.php adodb-postgres.inc.php adodb-postgres64.inc.php adodb-postgres7.inc.php adodb-postgres8.inc.php adodb-proxy.inc.php adodb-sapdb.inc.php adodb-sqlanywhere.inc.php adodb-sqlite.inc.php adodb-sqlitepo.inc.php adodb-sybase.inc.php adodb-sybase_ase.inc.php adodb-vfp.inc.php Added Files: adodb-mssql_n.inc.php Log Message: Upgrade to ADODB 4.95a - without porting the changes that were applied to 4.80. This will either be dropped or come back in follow up commits. Index: adodb-odbc_oracle.inc.php =================================================================== RCS file: /cvsroot/mantisbt/mantisbt/core/adodb/drivers/adodb-odbc_oracle.inc.php,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- adodb-odbc_oracle.inc.php 22 Apr 2006 11:10:21 -0000 1.7 +++ adodb-odbc_oracle.inc.php 22 May 2007 05:59:40 -0000 1.8 @@ -1,6 +1,6 @@ <?php /* -V4.80 8 Mar 2006 (c) 2000-2006 John Lim (jl...@na...). All rights reserved. +V4.94 23 Jan 2007 (c) 2000-2007 John Lim (jlim#natsoft.com.my). All rights reserved. Released under both BSD license and Lesser GPL library license. Whenever there is any discrepancy between the two licenses, the BSD license will take precedence. Index: adodb-odbtp_unicode.inc.php =================================================================== RCS file: /cvsroot/mantisbt/mantisbt/core/adodb/drivers/adodb-odbtp_unicode.inc.php,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- adodb-odbtp_unicode.inc.php 22 Apr 2006 11:10:21 -0000 1.3 +++ adodb-odbtp_unicode.inc.php 22 May 2007 05:59:40 -0000 1.4 @@ -1,6 +1,6 @@ <?php /* - V4.80 8 Mar 2006 (c) 2000-2006 John Lim (jl...@na...). All rights reserved. + V4.94 23 Jan 2007 (c) 2000-2007 John Lim (jlim#natsoft.com.my). All rights reserved. Released under both BSD license and Lesser GPL library license. Whenever there is any discrepancy between the two licenses, the BSD license will take precedence. See License.txt. Index: adodb-netezza.inc.php =================================================================== RCS file: /cvsroot/mantisbt/mantisbt/core/adodb/drivers/adodb-netezza.inc.php,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- adodb-netezza.inc.php 22 Apr 2006 11:10:21 -0000 1.4 +++ adodb-netezza.inc.php 22 May 2007 05:59:40 -0000 1.5 @@ -1,6 +1,6 @@ <?php /* - V4.80 8 Mar 2006 (c) 2000-2006 John Lim (jlim#natsoft.com.my). All rights reserved. + V4.94 23 Jan 2007 (c) 2000-2007 John Lim (jlim#natsoft.com.my). All rights reserved. First cut at the Netezza Driver by Josh Eldridge joshuae74#hotmail.com Based on the previous postgres drivers. Index: adodb-ado_access.inc.php =================================================================== RCS file: /cvsroot/mantisbt/mantisbt/core/adodb/drivers/adodb-ado_access.inc.php,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- adodb-ado_access.inc.php 22 Apr 2006 11:10:21 -0000 1.6 +++ adodb-ado_access.inc.php 22 May 2007 05:59:38 -0000 1.7 @@ -1,6 +1,6 @@ <?php /* -V4.80 8 Mar 2006 (c) 2000-2006 John Lim (jl...@na...). All rights reserved. +V4.94 23 Jan 2007 (c) 2000-2007 John Lim (jlim#natsoft.com.my). All rights reserved. Released under both BSD license and Lesser GPL library license. Whenever there is any discrepancy between the two licenses, the BSD license will take precedence. See License.txt. @@ -27,6 +27,7 @@ var $sysDate = "FORMAT(NOW,'yyyy-mm-dd')"; var $sysTimeStamp = 'NOW'; var $hasTransactions = false; + var $upperCase = 'ucase'; function ADODB_ado_access() { Index: adodb-postgres64.inc.php =================================================================== RCS file: /cvsroot/mantisbt/mantisbt/core/adodb/drivers/adodb-postgres64.inc.php,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- adodb-postgres64.inc.php 22 Apr 2006 11:10:21 -0000 1.7 +++ adodb-postgres64.inc.php 22 May 2007 05:59:41 -0000 1.8 @@ -1,6 +1,6 @@ <?php /* - V4.80 8 Mar 2006 (c) 2000-2006 John Lim (jl...@na...). All rights reserved. + V4.94 23 Jan 2007 (c) 2000-2007 John Lim (jlim#natsoft.com.my). All rights reserved. Released under both BSD license and Lesser GPL library license. Whenever there is any discrepancy between the two licenses, the BSD license will take precedence. @@ -174,7 +174,7 @@ { if ($this->transOff) return true; $this->transCnt += 1; - return @pg_Exec($this->_connectionID, "begin"); + return @pg_Exec($this->_connectionID, "begin ".$this->_transmode); } function RowLock($tables,$where,$flds='1 as ignore') @@ -237,6 +237,9 @@ function qstr($s,$magic_quotes=false) { if (!$magic_quotes) { + if (ADODB_PHPVER >= 0x5200) { + return "'".pg_escape_string($this->_connectionID,$s)."'"; + } if (ADODB_PHPVER >= 0x4200) { return "'".pg_escape_string($s)."'"; } @@ -424,6 +427,7 @@ */ function BlobEncode($blob) { + if (ADODB_PHPVER >= 0x5200) return pg_escape_bytea($this->_connectionID, $blob); if (ADODB_PHPVER >= 0x4200) return pg_escape_bytea($blob); /*92=backslash, 0=null, 39=single-quote*/ @@ -532,6 +536,8 @@ $fld->name = $rs->fields[0]; $fld->type = $rs->fields[1]; $fld->max_length = $rs->fields[2]; + $fld->attnum = $rs->fields[6]; + if ($fld->max_length <= 0) $fld->max_length = $rs->fields[3]-4; if ($fld->max_length <= 0) $fld->max_length = -1; if ($fld->type == 'numeric') { @@ -617,12 +623,14 @@ return $false; } - $col_names = $this->MetaColumnNames($table,true); + $col_names = $this->MetaColumnNames($table,true,true); + //3rd param is use attnum, + // see http://sourceforge.net/tracker/index.php?func=detail&aid=1451245&group_id=42718&atid=433976 $indexes = array(); while ($row = $rs->FetchRow()) { $columns = array(); foreach (explode(' ', $row[2]) as $col) { - $columns[] = $col_names[$col - 1]; + $columns[] = $col_names[$col]; } $indexes[$row[0]] = array( @@ -653,7 +661,7 @@ if ($str) { $host = split(":", $str); if ($host[0]) $str = "host=".adodb_addslashes($host[0]); - else $str = 'host=localhost'; + else $str = ''; if (isset($host[1])) $str .= " port=$host[1]"; else if (!empty($this->port)) $str .= " port=".$this->port; } @@ -679,6 +687,12 @@ } if ($this->_connectionID === false) return false; $this->Execute("set datestyle='ISO'"); + + $info = $this->ServerInfo(); + $this->pgVersion = (float) substr($info['version'],0,3); + if ($this->pgVersion >= 7.1) { // good till version 999 + $this->_nestedSQL = true; + } return true; } @@ -701,7 +715,7 @@ // returns queryID or false function _query($sql,$inputarr) { - + $this->_errorMsg = false; if ($inputarr) { /* It appears that PREPARE/EXECUTE is slower for many queries. @@ -731,6 +745,7 @@ if ($execp) $exsql = "EXECUTE $plan ($execp)"; else $exsql = "EXECUTE $plan"; + $rez = @pg_exec($this->_connectionID,$exsql); if (!$rez) { # Perhaps plan does not exist? Prepare/compile plan. @@ -755,13 +770,12 @@ } $s = "PREPARE $plan ($params) AS ".substr($sql,0,strlen($sql)-2); //adodb_pr($s); - pg_exec($this->_connectionID,$s); - echo $this->ErrorMsg(); + $rez = pg_exec($this->_connectionID,$s); + //echo $this->ErrorMsg(); } - - $rez = pg_exec($this->_connectionID,$exsql); + if ($rez) + $rez = pg_exec($this->_connectionID,$exsql); } else { - $this->_errorMsg = false; //adodb_backtrace(); $rez = pg_exec($this->_connectionID,$sql); } @@ -1000,6 +1014,7 @@ case 'BPCHAR': case '_VARCHAR': case 'INET': + case 'MACADDR': if ($len <= $this->blobSize) return 'C'; case 'TEXT': @@ -1019,6 +1034,8 @@ case 'DATE': return 'D'; + + case 'TIMESTAMP WITHOUT TIME ZONE': case 'TIME': case 'DATETIME': case 'TIMESTAMP': Index: adodb-proxy.inc.php =================================================================== RCS file: /cvsroot/mantisbt/mantisbt/core/adodb/drivers/adodb-proxy.inc.php,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- adodb-proxy.inc.php 22 Apr 2006 11:10:21 -0000 1.6 +++ adodb-proxy.inc.php 22 May 2007 05:59:41 -0000 1.7 @@ -1,6 +1,6 @@ <?php /* -V4.80 8 Mar 2006 (c) 2000-2006 John Lim (jl...@na...). All rights reserved. +V4.94 23 Jan 2007 (c) 2000-2007 John Lim (jlim#natsoft.com.my). All rights reserved. Released under both BSD license and Lesser GPL library license. Whenever there is any discrepancy between the two licenses, the BSD license will take precedence. Index: adodb-sqlanywhere.inc.php =================================================================== RCS file: /cvsroot/mantisbt/mantisbt/core/adodb/drivers/adodb-sqlanywhere.inc.php,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- adodb-sqlanywhere.inc.php 22 Apr 2006 11:10:21 -0000 1.7 +++ adodb-sqlanywhere.inc.php 22 May 2007 05:59:41 -0000 1.8 @@ -1,6 +1,6 @@ <?php /* -version V4.80 8 Mar 2006 (c) 2000-2006 John Lim (jl...@na...). All rights +version V4.94 23 Jan 2007 (c) 2000-2007 John Lim (jlim#natsoft.com.my). All rights reserved. Released under both BSD license and Lesser GPL library license. Whenever there is any discrepancy between the two licenses, Index: adodb-informix72.inc.php =================================================================== RCS file: /cvsroot/mantisbt/mantisbt/core/adodb/drivers/adodb-informix72.inc.php,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- adodb-informix72.inc.php 22 Apr 2006 11:10:21 -0000 1.6 +++ adodb-informix72.inc.php 22 May 2007 05:59:39 -0000 1.7 @@ -1,6 +1,6 @@ <?php /* -V4.80 8 Mar 2006 (c) 2000-2006 John Lim. All rights reserved. +V4.94 23 Jan 2007 (c) 2000-2007 John Lim. All rights reserved. Released under both BSD license and Lesser GPL library license. Whenever there is any discrepancy between the two licenses, the BSD license will take precedence. @@ -58,7 +58,7 @@ { // alternatively, use older method: //putenv("DBDATE=Y4MD-"); - + // force ISO date format putenv('GL_DATE=%Y-%m-%d'); @@ -192,7 +192,7 @@ } $rs->Close(); - $rspKey->Close(); //!eos + $rspkey->Close(); //!eos return $retarr; } Index: adodb-fbsql.inc.php =================================================================== RCS file: /cvsroot/mantisbt/mantisbt/core/adodb/drivers/adodb-fbsql.inc.php,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- adodb-fbsql.inc.php 22 Apr 2006 11:10:21 -0000 1.6 +++ adodb-fbsql.inc.php 22 May 2007 05:59:39 -0000 1.7 @@ -1,6 +1,6 @@ <?php /* - @version V4.80 8 Mar 2006 (c) 2000-2006 John Lim (jl...@na...). All rights reserved. + @version V4.94 23 Jan 2007 (c) 2000-2007 John Lim (jlim#natsoft.com.my). All rights reserved. Released under both BSD license and Lesser GPL library license. Whenever there is any discrepancy between the two licenses, the BSD license will take precedence. Index: adodb-vfp.inc.php =================================================================== RCS file: /cvsroot/mantisbt/mantisbt/core/adodb/drivers/adodb-vfp.inc.php,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- adodb-vfp.inc.php 22 Apr 2006 11:10:21 -0000 1.6 +++ adodb-vfp.inc.php 22 May 2007 05:59:42 -0000 1.7 @@ -1,6 +1,6 @@ <?php /* -V4.80 8 Mar 2006 (c) 2000-2006 John Lim (jl...@na...). All rights reserved. +V4.94 23 Jan 2007 (c) 2000-2007 John Lim (jlim#natsoft.com.my). All rights reserved. Released under both BSD license and Lesser GPL library license. Whenever there is any discrepancy between the two licenses, the BSD license will take precedence. Index: adodb-sapdb.inc.php =================================================================== RCS file: /cvsroot/mantisbt/mantisbt/core/adodb/drivers/adodb-sapdb.inc.php,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- adodb-sapdb.inc.php 22 Apr 2006 11:10:21 -0000 1.4 +++ adodb-sapdb.inc.php 22 May 2007 05:59:41 -0000 1.5 @@ -1,6 +1,6 @@ <?php /* -V4.80 8 Mar 2006 (c) 2000-2006 John Lim (jl...@na...). All rights reserved. +V4.94 23 Jan 2007 (c) 2000-2007 John Lim (jlim#natsoft.com.my). All rights reserved. Released under both BSD license and Lesser GPL library license. Whenever there is any discrepancy between the two licenses, the BSD license will take precedence. Index: adodb-odbc.inc.php =================================================================== RCS file: /cvsroot/mantisbt/mantisbt/core/adodb/drivers/adodb-odbc.inc.php,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -r1.8 -r1.9 --- adodb-odbc.inc.php 22 Apr 2006 11:10:21 -0000 1.8 +++ adodb-odbc.inc.php 22 May 2007 05:59:40 -0000 1.9 @@ -1,6 +1,6 @@ <?php /* -V4.80 8 Mar 2006 (c) 2000-2006 John Lim (jlim#natsoft.com.my). All rights reserved. +V4.94 23 Jan 2007 (c) 2000-2007 John Lim (jlim#natsoft.com.my). All rights reserved. Released under both BSD license and Lesser GPL library license. Whenever there is any discrepancy between the two licenses, the BSD license will take precedence. Index: adodb-sqlite.inc.php =================================================================== RCS file: /cvsroot/mantisbt/mantisbt/core/adodb/drivers/adodb-sqlite.inc.php,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- adodb-sqlite.inc.php 22 Apr 2006 11:10:21 -0000 1.4 +++ adodb-sqlite.inc.php 22 May 2007 05:59:41 -0000 1.5 @@ -1,6 +1,6 @@ <?php /* -V4.80 8 Mar 2006 (c) 2000-2006 John Lim (jl...@na...). All rights reserved. +V4.94 23 Jan 2007 (c) 2000-2007 John Lim (jlim#natsoft.com.my). All rights reserved. Released under both BSD license and Lesser GPL library license. Whenever there is any discrepancy between the two licenses, the BSD license will take precedence. Index: adodb-csv.inc.php =================================================================== RCS file: /cvsroot/mantisbt/mantisbt/core/adodb/drivers/adodb-csv.inc.php,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- adodb-csv.inc.php 22 Apr 2006 11:10:21 -0000 1.6 +++ adodb-csv.inc.php 22 May 2007 05:59:38 -0000 1.7 @@ -1,6 +1,6 @@ <?php /* -V4.80 8 Mar 2006 (c) 2000-2006 John Lim (jl...@na...). All rights reserved. +V4.94 23 Jan 2007 (c) 2000-2007 John Lim (jlim#natsoft.com.my). All rights reserved. Released under both BSD license and Lesser GPL library license. Whenever there is any discrepancy between the two licenses, the BSD license will take precedence. Index: adodb-oci8.inc.php =================================================================== RCS file: /cvsroot/mantisbt/mantisbt/core/adodb/drivers/adodb-oci8.inc.php,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- adodb-oci8.inc.php 22 Apr 2006 11:10:21 -0000 1.6 +++ adodb-oci8.inc.php 22 May 2007 05:59:40 -0000 1.7 @@ -1,7 +1,7 @@ <?php /* - version V4.80 8 Mar 2006 (c) 2000-2006 John Lim. All rights reserved. + version V4.94 23 Jan 2007 (c) 2000-2007 John Lim. All rights reserved. Released under both BSD license and Lesser GPL library license. Whenever there is any discrepancy between the two licenses, @@ -63,7 +63,7 @@ var $_stmt; var $_commit = OCI_COMMIT_ON_SUCCESS; var $_initdate = true; // init date to YYYY-MM-DD - var $metaTablesSQL = "select table_name,table_type from cat where table_type in ('TABLE','VIEW')"; + var $metaTablesSQL = "select table_name,table_type from cat where table_type in ('TABLE','VIEW') and table_name not like 'BIN\$%'"; // bin$ tables are recycle bin tables var $metaColumnsSQL = "select cname,coltype,width, SCALE, PRECISION, NULLS, DEFAULTVAL from col where tname='%s' order by colno"; //changed by smo...@us...urceforge. net var $_bindInputArray = true; var $hasGenID = true; @@ -75,6 +75,7 @@ var $noNullStrings = false; var $connectSID = false; var $_bind = false; + var $_nestedSQL = true; var $_hasOCIFetchStatement = false; var $_getarray = false; // currently not working var $leftOuter = ''; // oracle wierdness, $col = $value (+) for LEFT OUTER, $col (+)= $value for RIGHT OUTER @@ -82,6 +83,7 @@ var $firstrows = true; // enable first rows optimization on SelectLimit() var $selectOffsetAlg1 = 100; // when to use 1st algorithm of selectlimit. var $NLS_DATE_FORMAT = 'YYYY-MM-DD'; // To include time, use 'RRRR-MM-DD HH24:MI:SS' + var $dateformat = 'YYYY-MM-DD'; // for DBDate() var $useDBDateFormatForTextInput=false; var $datetime = false; // MetaType('DATE') returns 'D' (datetime==false) or 'T' (datetime == true) var $_refLOBs = array(); @@ -118,8 +120,8 @@ $fld->type = $rs->fields[1]; $fld->max_length = $rs->fields[2]; $fld->scale = $rs->fields[3]; - if ($rs->fields[1] == 'NUMBER' && $rs->fields[3] == 0) { - $fld->type ='INT'; + if ($rs->fields[1] == 'NUMBER') { + if ($rs->fields[3] == 0) $fld->type = 'INT'; $fld->max_length = $rs->fields[4]; } $fld->not_null = (strncmp($rs->fields[5], 'NOT',3) === 0); @@ -210,22 +212,22 @@ //if ($argHostname) print "<p>Connect: 1st argument should be left blank for $this->databaseType</p>"; if ($mode==1) { $this->_connectionID = ($this->charSet) ? - OCIPLogon($argUsername,$argPassword, $argDatabasename) + OCIPLogon($argUsername,$argPassword, $argDatabasename,$this->charSet) : - OCIPLogon($argUsername,$argPassword, $argDatabasename, $this->charSet) + OCIPLogon($argUsername,$argPassword, $argDatabasename) ; if ($this->_connectionID && $this->autoRollback) OCIrollback($this->_connectionID); } else if ($mode==2) { $this->_connectionID = ($this->charSet) ? - OCINLogon($argUsername,$argPassword, $argDatabasename) + OCINLogon($argUsername,$argPassword, $argDatabasename,$this->charSet) : - OCINLogon($argUsername,$argPassword, $argDatabasename, $this->charSet); + OCINLogon($argUsername,$argPassword, $argDatabasename); } else { $this->_connectionID = ($this->charSet) ? - OCILogon($argUsername,$argPassword, $argDatabasename) + OCILogon($argUsername,$argPassword, $argDatabasename,$this->charSet) : - OCILogon($argUsername,$argPassword, $argDatabasename,$this->charSet); + OCILogon($argUsername,$argPassword, $argDatabasename); } if (!$this->_connectionID) return false; if ($this->_initdate) { @@ -275,16 +277,31 @@ if (empty($d) && $d !== 0) return 'null'; if (is_string($d)) $d = ADORecordSet::UnixDate($d); - return "TO_DATE(".adodb_date($this->fmtDate,$d).",'".$this->NLS_DATE_FORMAT."')"; + return "TO_DATE(".adodb_date($this->fmtDate,$d).",'".$this->dateformat."')"; } + function BindDate($d) + { + $d = ADOConnection::DBDate($d); + if (strncmp($d,"'",1)) return $d; + + return substr($d,1,strlen($d)-2); + } + + function BindTimeStamp($d) + { + $d = ADOConnection::DBTimeStamp($d); + if (strncmp($d,"'",1)) return $d; + + return substr($d,1,strlen($d)-2); + } // format and return date string in database timestamp format function DBTimeStamp($ts) { if (empty($ts) && $ts !== 0) return 'null'; if (is_string($ts)) $ts = ADORecordSet::UnixTimeStamp($ts); - return 'TO_DATE('.adodb_date($this->fmtTimeStamp,$ts).",'RRRR-MM-DD, HH:MI:SS AM')"; + return 'TO_DATE('.adodb_date("'Y-m-d H:i:s'",$ts).",'RRRR-MM-DD, HH24:MI:SS')"; } function RowLock($tables,$where,$flds='1 as ignore') @@ -381,6 +398,8 @@ $this->transCnt += 1; $this->autoCommit = false; $this->_commit = OCI_DEFAULT; + + if ($this->_transmode) $this->Execute("SET TRANSACTION ".$this->_transmode); return true; } @@ -416,10 +435,10 @@ { if ($this->_errorMsg !== false) return $this->_errorMsg; - if (is_resource($this->_stmt)) $arr = @OCIerror($this->_stmt); + if (is_resource($this->_stmt)) $arr = @OCIError($this->_stmt); if (empty($arr)) { - $arr = @OCIerror($this->_connectionID); - if ($arr === false) $arr = @OCIError(); + if (is_resource($this->_connectionID)) $arr = @OCIError($this->_connectionID); + else $arr = @OCIError(); if ($arr === false) return ''; } $this->_errorMsg = $arr['message']; @@ -765,8 +784,17 @@ $stmt = OCIParse($this->_connectionID,$sql); - if (!$stmt) return false; - + if (!$stmt) { + $this->_errorMsg = false; + $this->_errorCode = false; + $arr = @OCIError($this->_connectionID); + if ($arr === false) return false; + + $this->_errorMsg = $arr['message']; + $this->_errorCode = $arr['code']; + return false; + } + $BINDNUM += 1; $sttype = @OCIStatementType($stmt); @@ -1356,10 +1384,11 @@ $arr =& $this->GetArray($nrows); return $arr; } + $arr = array(); for ($i=1; $i < $offset; $i++) - if (!@OCIFetch($this->_queryID)) return array(); + if (!@OCIFetch($this->_queryID)) return $arr; - if (!@OCIfetchinto($this->_queryID,$this->fields,$this->fetchMode)) return array(); + if (!@OCIfetchinto($this->_queryID,$this->fields,$this->fetchMode)) return $arr;; $results = array(); $cnt = 0; while (!$this->EOF && $nrows != $cnt) { Index: adodb-postgres7.inc.php =================================================================== RCS file: /cvsroot/mantisbt/mantisbt/core/adodb/drivers/adodb-postgres7.inc.php,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- adodb-postgres7.inc.php 22 Apr 2006 11:10:21 -0000 1.6 +++ adodb-postgres7.inc.php 22 May 2007 05:59:41 -0000 1.7 @@ -1,6 +1,6 @@ <?php /* - V4.80 8 Mar 2006 (c) 2000-2006 John Lim (jlim#natsoft.com.my). All rights reserved. + V4.94 23 Jan 2007 (c) 2000-2007 John Lim (jlim#natsoft.com.my). All rights reserved. Released under both BSD license and Lesser GPL library license. Whenever there is any discrepancy between the two licenses, the BSD license will take precedence. @@ -56,6 +56,7 @@ } */ + // from Edward Jaramilla, improved version - works on pg 7.4 function MetaForeignKeys($table, $owner=false, $upper=false) { @@ -73,21 +74,21 @@ $rs =& $this->Execute($sql); - if ($rs && !$rs->EOF) { - $arr =& $rs->GetArray(); - $a = array(); - foreach($arr as $v) - { - $data = explode(chr(0), $v['args']); - if ($upper) { - $a[strtoupper($data[2])][] = strtoupper($data[4].'='.$data[5]); - } else { - $a[$data[2]][] = $data[4].'='.$data[5]; - } + if (!$rs || $rs->EOF) return false; + + $arr =& $rs->GetArray(); + $a = array(); + foreach($arr as $v) { + $data = explode(chr(0), $v['args']); + $size = count($data)-1; //-1 because the last node is empty + for($i = 4; $i < $size; $i++) { + if ($upper) + $a[strtoupper($data[2])][] = strtoupper($data[$i].'='.$data[++$i]); + else + $a[$data[2]][] = $data[$i].'='.$data[++$i]; } - return $a; } - return false; + return $a; } function _query($sql,$inputarr) @@ -96,6 +97,7 @@ // We don't have native support for parameterized queries, so let's emulate it at the parent return ADODB_postgres64::_query($sql, $inputarr); } + $this->_errorMsg = false; // -- added Cristiano da Cunha Duarte if ($inputarr) { $sqlarr = explode('?',trim($sql)); Index: adodb-ibase.inc.php =================================================================== RCS file: /cvsroot/mantisbt/mantisbt/core/adodb/drivers/adodb-ibase.inc.php,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- adodb-ibase.inc.php 22 Apr 2006 11:10:21 -0000 1.6 +++ adodb-ibase.inc.php 22 May 2007 05:59:39 -0000 1.7 @@ -1,6 +1,6 @@ <?php /* -V4.80 8 Mar 2006 (c) 2000-2006 John Lim (jl...@na...). All rights reserved. +V4.94 23 Jan 2007 (c) 2000-2007 John Lim (jlim#natsoft.com.my). All rights reserved. Released under both BSD license and Lesser GPL library license. Whenever there is any discrepancy between the two licenses, the BSD license will take precedence. @@ -47,7 +47,7 @@ var $buffers = 0; var $dialect = 1; var $sysDate = "cast('TODAY' as timestamp)"; - var $sysTimeStamp = "cast('NOW' as timestamp)"; + var $sysTimeStamp = "CURRENT_TIMESTAMP"; //"cast('NOW' as timestamp)"; var $ansiOuter = true; var $hasAffectedRows = false; var $poorAffectedRows = true; @@ -556,9 +556,9 @@ // old blobdecode function // still used to auto-decode all blob's - function _BlobDecode( $blob ) + function _BlobDecode_old( $blob ) { - $blobid = ibase_blob_open( $blob ); + $blobid = ibase_blob_open($this->_connectionID, $blob ); $realblob = ibase_blob_get( $blobid,$this->maxblobsize); // 2nd param is max size of blob -- Kevin Boillet <kev...@ya...> while($string = ibase_blob_get($blobid, 8192)){ $realblob .= $string; @@ -568,6 +568,32 @@ return( $realblob ); } + function _BlobDecode( $blob ) + { + if (ADODB_PHPVER >= 0x5000) { + $blob_data = ibase_blob_info($this->_connectionID, $blob ); + $blobid = ibase_blob_open($this->_connectionID, $blob ); + } else { + + $blob_data = ibase_blob_info( $blob ); + $blobid = ibase_blob_open( $blob ); + } + + if( $blob_data[0] > $this->maxblobsize ) { + + $realblob = ibase_blob_get($blobid, $this->maxblobsize); + + while($string = ibase_blob_get($blobid, 8192)){ + $realblob .= $string; + } + } else { + $realblob = ibase_blob_get($blobid, $blob_data[0]); + } + + ibase_blob_close( $blobid ); + return( $realblob ); + } + function UpdateBlobFile($table,$column,$path,$where,$blobtype='BLOB') { $fd = fopen($path,'rb'); Index: adodb-postgres8.inc.php =================================================================== RCS file: /cvsroot/mantisbt/mantisbt/core/adodb/drivers/adodb-postgres8.inc.php,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- adodb-postgres8.inc.php 22 Apr 2006 11:10:21 -0000 1.1 +++ adodb-postgres8.inc.php 22 May 2007 05:59:41 -0000 1.2 @@ -1,6 +1,6 @@ <?php /* - V4.80 8 Mar 2006 (c) 2000-2006 John Lim (jl...@na...). All rights reserved. + V4.94 23 Jan 2007 (c) 2000-2007 John Lim (jlim#natsoft.com.my). All rights reserved. Released under both BSD license and Lesser GPL library license. Whenever there is any discrepancy between the two licenses, the BSD license will take precedence. Index: adodb-oracle.inc.php =================================================================== RCS file: /cvsroot/mantisbt/mantisbt/core/adodb/drivers/adodb-oracle.inc.php,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- adodb-oracle.inc.php 22 Apr 2006 11:10:21 -0000 1.6 +++ adodb-oracle.inc.php 22 May 2007 05:59:40 -0000 1.7 @@ -1,6 +1,6 @@ <?php /* -V4.80 8 Mar 2006 (c) 2000-2006 John Lim (jl...@na...). All rights reserved. +V4.94 23 Jan 2007 (c) 2000-2007 John Lim (jlim#natsoft.com.my). All rights reserved. Released under both BSD license and Lesser GPL library license. Whenever there is any discrepancy between the two licenses, the BSD license will take precedence. @@ -45,6 +45,24 @@ if (is_string($ts)) $d = ADORecordSet::UnixTimeStamp($ts); return 'TO_DATE('.adodb_date($this->fmtTimeStamp,$ts).",'RRRR-MM-DD, HH:MI:SS AM')"; } + + + function BindDate($d) + { + $d = ADOConnection::DBDate($d); + if (strncmp($d,"'",1)) return $d; + + return substr($d,1,strlen($d)-2); + } + + function BindTimeStamp($d) + { + $d = ADOConnection::DBTimeStamp($d); + if (strncmp($d,"'",1)) return $d; + + return substr($d,1,strlen($d)-2); + } + function BeginTrans() @@ -132,7 +150,7 @@ if ($argDatabasename) $argUsername .= "@$argDatabasename"; //if ($argHostname) print "<p>Connect: 1st argument should be left blank for $this->databaseType</p>"; - if ($mode = 1) + if ($mode == 1) $this->_connectionID = ora_plogon($argUsername,$argPassword); else $this->_connectionID = ora_logon($argUsername,$argPassword); Index: adodb-odbc_db2.inc.php =================================================================== RCS file: /cvsroot/mantisbt/mantisbt/core/adodb/drivers/adodb-odbc_db2.inc.php,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- adodb-odbc_db2.inc.php 22 Apr 2006 11:10:21 -0000 1.1 +++ adodb-odbc_db2.inc.php 22 May 2007 05:59:40 -0000 1.2 @@ -1,6 +1,6 @@ <?php /* -V4.80 8 Mar 2006 (c) 2000-2006 John Lim (jl...@na...). All rights reserved. +V4.94 23 Jan 2007 (c) 2000-2007 John Lim (jlim#natsoft.com.my). All rights reserved. Released under both BSD license and Lesser GPL library license. Whenever there is any discrepancy between the two licenses, the BSD license will take precedence. @@ -60,7 +60,7 @@ ======================== To set SQL_CUR_USE_ODBC for drivers that require it, do this: -$db = NewADOConnection('db2'); +$db = NewADOConnection('odbc_db2'); $db->curMode = SQL_CUR_USE_ODBC; $db->Connect($dsn, $userid, $pwd); @@ -80,6 +80,10 @@ > In case of DB2 I had to swap the first and last arguments in order to connect properly. +System Error 5 +============== +IF you get a System Error 5 when trying to Connect/Load, it could be a permission problem. Give the user connecting +to DB2 full rights to the DB2 SQLLIB directory, and place the user in the DBUSERS group. */ // security - hide paths @@ -88,13 +92,14 @@ if (!defined('_ADODB_ODBC_LAYER')) { include(ADODB_DIR."/drivers/adodb-odbc.inc.php"); } -if (!defined('ADODB_DB2')){ -define('ADODB_DB2',1); +if (!defined('ADODB_ODBC_DB2')){ +define('ADODB_ODBC_DB2',1); -class ADODB_DB2 extends ADODB_odbc { +class ADODB_ODBC_DB2 extends ADODB_odbc { var $databaseType = "db2"; var $concat_operator = '||'; - var $sysDate = 'CURRENT_DATE'; + var $sysTime = 'CURRENT TIME'; + var $sysDate = 'CURRENT DATE'; var $sysTimeStamp = 'CURRENT TIMESTAMP'; // The complete string representation of a timestamp has the form // yyyy-mm-dd-hh.mm.ss.nnnnnn. @@ -103,6 +108,7 @@ var $identitySQL = 'values IDENTITY_VAL_LOCAL()'; var $_bindInputArray = true; var $hasInsertID = true; + var $rsPrefix = 'ADORecordset_odbc_'; function ADODB_DB2() { @@ -294,7 +300,7 @@ }; -class ADORecordSet_db2 extends ADORecordSet_odbc { +class ADORecordSet_odbc_db2 extends ADORecordSet_odbc { var $databaseType = "db2"; Index: adodb-pdo_pgsql.inc.php =================================================================== RCS file: /cvsroot/mantisbt/mantisbt/core/adodb/drivers/adodb-pdo_pgsql.inc.php,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- adodb-pdo_pgsql.inc.php 22 Apr 2006 11:10:21 -0000 1.1 +++ adodb-pdo_pgsql.inc.php 22 May 2007 05:59:41 -0000 1.2 @@ -1,7 +1,7 @@ <?php /* -V4.80 8 Mar 2006 (c) 2000-2006 John Lim (jl...@na...). All rights reserved. +V4.94 23 Jan 2007 (c) 2000-2007 John Lim (jlim#natsoft.com.my). All rights reserved. Released under both BSD license and Lesser GPL library license. Whenever there is any discrepancy between the two licenses, the BSD license will take precedence. @@ -59,6 +59,7 @@ $parentDriver->hasTransactions = false; ## <<< BUG IN PDO pgsql driver $parentDriver->hasInsertID = true; + $parentDriver->_nestedSQL = true; } function ServerInfo() Index: adodb-oci805.inc.php =================================================================== RCS file: /cvsroot/mantisbt/mantisbt/core/adodb/drivers/adodb-oci805.inc.php,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- adodb-oci805.inc.php 22 Apr 2006 11:10:21 -0000 1.6 +++ adodb-oci805.inc.php 22 May 2007 05:59:40 -0000 1.7 @@ -1,6 +1,6 @@ <?php /** - * @version V4.80 8 Mar 2006 (c) 2000-2006 John Lim (jl...@na...). All rights reserved. + * @version V4.94 23 Jan 2007 (c) 2000-2007 John Lim (jlim#natsoft.com.my). All rights reserved. * Released under both BSD license and Lesser GPL library license. * Whenever there is any discrepancy between the two licenses, * the BSD license will take precedence. Index: adodb-sybase_ase.inc.php =================================================================== RCS file: /cvsroot/mantisbt/mantisbt/core/adodb/drivers/adodb-sybase_ase.inc.php,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- adodb-sybase_ase.inc.php 22 Apr 2006 11:10:21 -0000 1.1 +++ adodb-sybase_ase.inc.php 22 May 2007 05:59:42 -0000 1.2 @@ -1,6 +1,6 @@ <?php /* - V4.80 8 Mar 2006 (c) 2000-2006 John Lim (jl...@na...). All rights reserved. + V4.94 23 Jan 2007 (c) 2000-2007 John Lim (jlim#natsoft.com.my). All rights reserved. Released under both BSD license and Lesser GPL library license. Whenever there is any discrepancy between the two licenses, the BSD license will take precedence. @@ -9,6 +9,10 @@ Contributed by Interakt Online. Thx Cristian MARIN cristic#interaktonline.com */ + + +require_once ADODB_DIR."/drivers/adodb-sybase.inc.php"; + class ADODB_sybase_ase extends ADODB_sybase { var $databaseType = "sybase_ase"; --- NEW FILE: adodb-mssql_n.inc.php --- <?php /// $Id $ /////////////////////////////////////////////////////////////////////////// // // // NOTICE OF COPYRIGHT // // // // ADOdb - Database Abstraction Library for PHP // // http://adodb.sourceforge.net/ // // // // Copyright (C) 2000-2007 John Lim (jlim\@natsoft.com.my) // // All rights reserved. // // Released under both BSD license and LGPL library license. // // Whenever there is any discrepancy between the two licenses, // // the BSD license will take precedence // // // // Moodle - Modular Object-Oriented Dynamic Learning Environment // // http://moodle.com // // // // Copyright (C) 2001-3001 Martin Dougiamas http://dougiamas.com // // (C) 2001-3001 Eloy Lafuente (stronk7) http://contiento.com // // // // This program is free software; you can redistribute it and/or modify // // it under the terms of the GNU General Public License as published by // // the Free Software Foundation; either version 2 of the License, or // // (at your option) any later version. // // // // This program is distributed in the hope that it will be useful, // // but WITHOUT ANY WARRANTY; without even the implied warranty of // // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // // GNU General Public License for more details: // // // // http://www.gnu.org/copyleft/gpl.html // // // /////////////////////////////////////////////////////////////////////////// /** * MSSQL Driver with auto-prepended "N" for correct unicode storage * of SQL literal strings. Intended to be used with MSSQL drivers that * are sending UCS-2 data to MSSQL (FreeTDS and ODBTP) in order to get * true cross-db compatibility from the application point of view. */ // security - hide paths if (!defined('ADODB_DIR')) die(); // one useful constant if (!defined('SINGLEQUOTE')) define('SINGLEQUOTE', "'"); include_once(ADODB_DIR.'/drivers/adodb-mssql.inc.php'); class ADODB_mssql_n extends ADODB_mssql { var $databaseType = "mssql_n"; function ADODB_mssqlpo() { ADODB_mssql::ADODB_mssql(); } function _query($sql,$inputarr) { $sql = $this->_appendN($sql); return ADODB_mssql::_query($sql,$inputarr); } /** * This function will intercept all the literals used in the SQL, prepending the "N" char to them * in order to allow mssql to store properly data sent in the correct UCS-2 encoding (by freeTDS * and ODBTP) keeping SQL compatibility at ADOdb level (instead of hacking every project to add * the "N" notation when working against MSSQL. * * Note that this hack only must be used if ALL the char-based columns in your DB are of type nchar, * nvarchar and ntext */ function _appendN($sql) { $result = $sql; /// Check we have some single quote in the query. Exit ok. if (strpos($sql, SINGLEQUOTE) === false) { return $sql; } /// Check we haven't an odd number of single quotes (this can cause problems below /// and should be considered one wrong SQL). Exit with debug info. if ((substr_count($sql, SINGLEQUOTE) & 1)) { if ($this->debug) { ADOConnection::outp("{$this->databaseType} internal transformation: not converted. Wrong number of quotes (odd)"); } return $sql; } /// Check we haven't any backslash + single quote combination. It should mean wrong /// backslashes use (bad magic_quotes_sybase?). Exit with debug info. $regexp = '/(\\\\' . SINGLEQUOTE . '[^' . SINGLEQUOTE . '])/'; if (preg_match($regexp, $sql)) { if ($this->debug) { ADOConnection::outp("{$this->databaseType} internal transformation: not converted. Found bad use of backslash + single quote"); } return $sql; } /// Remove pairs of single-quotes $pairs = array(); $regexp = '/(' . SINGLEQUOTE . SINGLEQUOTE . ')/'; preg_match_all($regexp, $result, $list_of_pairs); if ($list_of_pairs) { foreach (array_unique($list_of_pairs[0]) as $key=>$value) { $pairs['<@#@#@PAIR-'.$key.'@#@#@>'] = $value; } if (!empty($pairs)) { $result = str_replace($pairs, array_keys($pairs), $result); } } /// Remove the rest of literals present in the query $literals = array(); $regexp = '/(N?' . SINGLEQUOTE . '.*?' . SINGLEQUOTE . ')/is'; preg_match_all($regexp, $result, $list_of_literals); if ($list_of_literals) { foreach (array_unique($list_of_literals[0]) as $key=>$value) { $literals['<#@#@#LITERAL-'.$key.'#@#@#>'] = $value; } if (!empty($literals)) { $result = str_replace($literals, array_keys($literals), $result); } } /// Analyse literals to prepend the N char to them if their contents aren't numeric if (!empty($literals)) { foreach ($literals as $key=>$value) { if (!is_numeric(trim($value, SINGLEQUOTE))) { /// Non numeric string, prepend our dear N $literals[$key] = 'N' . trim($value, 'N'); //Trimming potentially existing previous "N" } } } /// Re-apply literals to the text if (!empty($literals)) { $result = str_replace(array_keys($literals), $literals, $result); } /// Re-apply pairs of single-quotes to the text if (!empty($pairs)) { $result = str_replace(array_keys($pairs), $pairs, $result); } /// Print transformation if debug = on if ($result != $sql && $this->debug) { ADOConnection::outp("{$this->databaseType} internal transformation:<br>{$sql}<br>to<br>{$result}"); } return $result; } } class ADORecordset_mssql_n extends ADORecordset_mssql { var $databaseType = "mssql_n"; function ADORecordset_mssql_n($id,$mode=false) { $this->ADORecordset_mssql($id,$mode); } } ?> Index: adodb-sybase.inc.php =================================================================== RCS file: /cvsroot/mantisbt/mantisbt/core/adodb/drivers/adodb-sybase.inc.php,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- adodb-sybase.inc.php 22 Apr 2006 11:10:21 -0000 1.7 +++ adodb-sybase.inc.php 22 May 2007 05:59:42 -0000 1.8 @@ -1,6 +1,6 @@ <?php /* -V4.80 8 Mar 2006 (c) 2000-2006 John Lim. All rights reserved. +V4.94 23 Jan 2007 (c) 2000-2007 John Lim. All rights reserved. Released under both BSD license and Lesser GPL library license. Whenever there is any discrepancy between the two licenses, the BSD license will take precedence. Index: adodb-odbtp.inc.php =================================================================== RCS file: /cvsroot/mantisbt/mantisbt/core/adodb/drivers/adodb-odbtp.inc.php,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- adodb-odbtp.inc.php 22 Apr 2006 11:10:21 -0000 1.4 +++ adodb-odbtp.inc.php 22 May 2007 05:59:40 -0000 1.5 @@ -1,6 +1,6 @@ <?php /* - V4.80 8 Mar 2006 (c) 2000-2006 John Lim (jl...@na...). All rights reserved. + V4.94 23 Jan 2007 (c) 2000-2007 John Lim (jlim#natsoft.com.my). All rights reserved. Released under both BSD license and Lesser GPL library license. Whenever there is any discrepancy between the two licenses, the BSD license will take precedence. See License.txt. @@ -149,11 +149,14 @@ //if uid & pwd can be separate function _connect($HostOrInterface, $UserOrDSN='', $argPassword='', $argDatabase='') { - $this->_connectionID = @odbtp_connect($HostOrInterface,$UserOrDSN,$argPassword,$argDatabase); + $this->_connectionID = odbtp_connect($HostOrInterface,$UserOrDSN,$argPassword,$argDatabase); if ($this->_connectionID === false) { $this->_errorMsg = $this->ErrorMsg() ; return false; } + + odbtp_convert_datetime($this->_connectionID,true); + if ($this->_dontPoolDBC) { if (function_exists('odbtp_dont_pool_dbc')) @odbtp_dont_pool_dbc($this->_connectionID); @@ -215,6 +218,7 @@ $this->replaceQuote = "'+chr(39)+'"; $this->true = '.T.'; $this->false = '.F.'; + break; case 'oracle': $this->databaseType = 'odbtp_oci8'; @@ -286,7 +290,7 @@ for ($i=0; $i < sizeof($arr); $i++) { if ($arr[$i][3] == 'SYSTEM TABLE' ) continue; if ($arr[$i][2]) - $arr2[] = $showSchema ? $arr[$i][1].'.'.$arr[$i][2] : $arr[$i][2]; + $arr2[] = $showSchema && $arr[$i][1]? $arr[$i][1].'.'.$arr[$i][2] : $arr[$i][2]; } return $arr2; } @@ -322,10 +326,11 @@ $fld->max_length = $rs->fields[6]; $fld->not_null = !empty($rs->fields[9]); $fld->scale = $rs->fields[7]; - if (!is_null($rs->fields[12])) { - $fld->has_default = true; - $fld->default_value = $rs->fields[12]; - } + if (isset($rs->fields[12])) // vfp does not have field 12 + if (!is_null($rs->fields[12])) { + $fld->has_default = true; + $fld->default_value = $rs->fields[12]; + } $retarr[strtoupper($fld->name)] = $fld; } else if (!empty($retarr)) break; @@ -545,7 +550,7 @@ return false; } } else { - $stmtid = @odbtp_query($sql,$this->_connectionID); + $stmtid = odbtp_query($sql,$this->_connectionID); } $this->_lastAffectedRows = 0; if ($stmtid) { @@ -640,6 +645,12 @@ default: $this->fields = @odbtp_fetch_array($this->_queryID, $type); } + if ($this->databaseType = 'odbtp_vfp') { + if ($this->fields) + foreach($this->fields as $k => $v) { + if (strncmp($v,'1899-12-30',10) == 0) $this->fields[$k] = ''; + } + } return is_array($this->fields); } Index: adodb-ado.inc.php =================================================================== RCS file: /cvsroot/mantisbt/mantisbt/core/adodb/drivers/adodb-ado.inc.php,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- adodb-ado.inc.php 22 Apr 2006 11:10:21 -0000 1.6 +++ adodb-ado.inc.php 22 May 2007 05:59:38 -0000 1.7 @@ -1,6 +1,6 @@ <?php /* -V4.80 8 Mar 2006 (c) 2000-2006 John Lim (jl...@na...). All rights reserved. +V4.94 23 Jan 2007 (c) 2000-2007 John Lim (jlim#natsoft.com.my). All rights reserved. Released under both BSD license and Lesser GPL library license. Whenever there is any discrepancy between the two licenses, the BSD license will take precedence. @@ -263,6 +263,7 @@ $this->transCnt += 1; return true; } + function CommitTrans($ok=true) { if (!$ok) return $this->RollbackTrans(); @@ -283,7 +284,9 @@ function ErrorMsg() { + if (!$this->_connectionID) return "No connection established"; $errc = $this->_connectionID->Errors; + if (!$errc) return "No Errors object found"; if ($errc->Count == 0) return ''; $err = $errc->Item($errc->Count-1); return $err->Description; Index: adodb-borland_ibase.inc.php =================================================================== RCS file: /cvsroot/mantisbt/mantisbt/core/adodb/drivers/adodb-borland_ibase.inc.php,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- adodb-borland_ibase.inc.php 22 Apr 2006 11:10:21 -0000 1.6 +++ adodb-borland_ibase.inc.php 22 May 2007 05:59:38 -0000 1.7 @@ -1,6 +1,6 @@ <?php /* -V4.80 8 Mar 2006 (c) 2000-2006 John Lim (jl...@na...). All rights reserved. +V4.94 23 Jan 2007 (c) 2000-2007 John Lim (jlim#natsoft.com.my). All rights reserved. Released under both BSD license and Lesser GPL library license. Whenever there is any discrepancy between the two licenses, the BSD license will take precedence. @@ -20,6 +20,7 @@ class ADODB_borland_ibase extends ADODB_ibase { var $databaseType = "borland_ibase"; + function ADODB_borland_ibase() { $this->ADODB_ibase(); Index: adodb-postgres.inc.php =================================================================== RCS file: /cvsroot/mantisbt/mantisbt/core/adodb/drivers/adodb-postgres.inc.php,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- adodb-postgres.inc.php 22 Apr 2006 11:10:21 -0000 1.6 +++ adodb-postgres.inc.php 22 May 2007 05:59:41 -0000 1.7 @@ -1,6 +1,6 @@ <?php /* - V4.80 8 Mar 2006 (c) 2000-2006 John Lim (jl...@na...). All rights reserved. + V4.94 23 Jan 2007 (c) 2000-2007 John Lim (jlim#natsoft.com.my). All rights reserved. Released under both BSD license and Lesser GPL library license. Whenever there is any discrepancy between the two licenses, the BSD license will take precedence. Index: adodb-informix.inc.php =================================================================== RCS file: /cvsroot/mantisbt/mantisbt/core/adodb/drivers/adodb-informix.inc.php,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- adodb-informix.inc.php 22 Apr 2006 11:10:21 -0000 1.6 +++ adodb-informix.inc.php 22 May 2007 05:59:39 -0000 1.7 @@ -1,6 +1,6 @@ <?php /** -* @version V4.80 8 Mar 2006 (c) 2000-2006 John Lim (jl...@na...). All rights reserved. +* @version V4.94 23 Jan 2007 (c) 2000-2007 John Lim (jlim#natsoft.com.my). All rights reserved. * Released under both BSD license and Lesser GPL library license. * Whenever there is any discrepancy between the two licenses, * the BSD license will take precedence. @@ -22,6 +22,11 @@ var $databaseType = "informix"; var $hasTop = 'FIRST'; var $ansiOuter = true; + + function IfNull( $field, $ifNull ) + { + return " NVL($field, $ifNull) "; // if Informix 9.X or 10.X + } } class ADORecordset_informix extends ADORecordset_informix72 { Index: adodb-mssql.inc.php =================================================================== RCS file: /cvsroot/mantisbt/mantisbt/core/adodb/drivers/adodb-mssql.inc.php,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- adodb-mssql.inc.php 22 Apr 2006 11:10:21 -0000 1.6 +++ adodb-mssql.inc.php 22 May 2007 05:59:39 -0000 1.7 @@ -1,6 +1,6 @@ <?php /* -V4.80 8 Mar 2006 (c) 2000-2006 John Lim (jl...@na...). All rights reserved. +V4.94 23 Jan 2007 (c) 2000-2007 John Lim (jlim#natsoft.com.my). All rights reserved. Released under both BSD license and Lesser GPL library license. Whenever there is any discrepancy between the two licenses, the BSD license will take precedence. @@ -112,19 +112,21 @@ { global $ADODB_FETCH_MODE; - $stmt = $this->PrepareSP('sp_server_info'); - $val = 2; + if ($this->fetchMode === false) { $savem = $ADODB_FETCH_MODE; $ADODB_FETCH_MODE = ADODB_FETCH_NUM; } else $savem = $this->SetFetchMode(ADODB_FETCH_NUM); + + if (0) { + $stmt = $this->PrepareSP('sp_server_info'); + $val = 2; + $this->Parameter($stmt,$val,'attribute_id'); + $row = $this->GetRow($stmt); + } - - $this->Parameter($stmt,$val,'attribute_id'); - $row = $this->GetRow($stmt); - - //$row = $this->GetRow("execute sp_server_info 2"); + $row = $this->GetRow("execute sp_server_info 2"); if ($this->fetchMode === false) { @@ -296,6 +298,17 @@ return true; } + function SetTransactionMode( $transaction_mode ) + { + $this->_transmode = $transaction_mode; + if (empty($transaction_mode)) { + $this->Execute('SET TRANSACTION ISOLATION LEVEL READ COMMITTED'); + return; + } + if (!stristr($transaction_mode,'isolation')) $transaction_mode = 'ISOLATION LEVEL '.$transaction_mode; + $this->Execute("SET TRANSACTION ".$transaction_mode); + } + /* Usage: @@ -399,7 +412,7 @@ { if(@mssql_select_db("master")) { $qry=$this->metaDatabasesSQL; - if($rs=@mssql_query($qry)){ + if($rs=@mssql_query($qry,$this->_connectionID)){ $tmpAr=$ar=array(); while($tmpAr=@mssql_fetch_row($rs)) $ar[]=$tmpAr[0]; @@ -687,7 +700,7 @@ } $decl = $this->qstr($decl); if ($this->debug) ADOConnection::outp("<font size=-1>sp_executesql N{$sql[1]},N$decl,$params</font>"); - $rez = mssql_query("sp_executesql N{$sql[1]},N$decl,$params"); + $rez = mssql_query("sp_executesql N{$sql[1]},N$decl,$params", $this->_connectionID); } else if (is_array($sql)) { # PrepareSP() Index: adodb-pdo.inc.php =================================================================== RCS file: /cvsroot/mantisbt/mantisbt/core/adodb/drivers/adodb-pdo.inc.php,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- adodb-pdo.inc.php 22 Apr 2006 11:10:21 -0000 1.4 +++ adodb-pdo.inc.php 22 May 2007 05:59:40 -0000 1.5 @@ -1,6 +1,6 @@ <?php /* -V4.80 8 Mar 2006 (c) 2000-2006 John Lim (jlim#natsoft.com.my). All rights reserved. +V4.94 23 Jan 2007 (c) 2000-2007 John Lim (jlim#natsoft.com.my). All rights reserved. Released under both BSD license and Lesser GPL library license. Whenever there is any discrepancy between the two licenses, the BSD license will take precedence. @@ -133,7 +133,12 @@ $this->random = $d->random; $this->concat_operator = $d->concat_operator; $this->nameQuote = $d->nameQuote; - + + $this->hasGenID = $d->hasGenID; + $this->_genIDSQL = $d->_genIDSQL; + $this->_genSeqSQL = $d->_genSeqSQL; + $this->_dropSeqSQL = $d->_dropSeqSQL; + $d->_init($this); } @@ -325,7 +330,8 @@ $obj = new ADOPDOStatement($stmt,$this); return $obj; } - + + /* returns queryID or false */ function _query($sql,$inputarr=false) { @@ -334,7 +340,8 @@ } else { $stmt = $this->_connectionID->prepare($sql); } - + #adodb_backtrace(); + #var_dump($this->_bindInputArray); if ($stmt) { $this->_driver->debug = $this->debug; if ($inputarr) $ok = $stmt->execute($inputarr); @@ -515,7 +522,7 @@ } //adodb_pr($arr); $o->name = $arr['name']; - if (isset($arr['native_type'])) $o->type = $arr['native_type']; + if (isset($arr['native_type']) && $arr['native_type'] <> "null") $o->type = $arr['native_type']; else $o->type = adodb_pdo_type($arr['pdo_type']); $o->max_length = $arr['len']; $o->precision = $arr['precision']; Index: adodb-pdo_mssql.inc.php =================================================================== RCS file: /cvsroot/mantisbt/mantisbt/core/adodb/drivers/adodb-pdo_mssql.inc.php,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- adodb-pdo_mssql.inc.php 22 Apr 2006 11:10:21 -0000 1.1 +++ adodb-pdo_mssql.inc.php 22 May 2007 05:59:41 -0000 1.2 @@ -2,7 +2,7 @@ /* -V4.80 8 Mar 2006 (c) 2000-2006 John Lim (jl...@na...). All rights reserved. +V4.94 23 Jan 2007 (c) 2000-2007 John Lim (jlim#natsoft.com.my). All rights reserved. Released under both BSD license and Lesser GPL library license. Whenever there is any discrepancy between the two licenses, the BSD license will take precedence. @@ -36,6 +36,17 @@ return $ret; } + function SetTransactionMode( $transaction_mode ) + { + $this->_transmode = $transaction_mode; + if (empty($transaction_mode)) { + $this->Execute('SET TRANSACTION ISOLATION LEVEL READ COMMITTED'); + return; + } + if (!stristr($transaction_mode,'isolation')) $transaction_mode = 'ISOLATION LEVEL '.$transaction_mode; + $this->Execute("SET TRANSACTION ".$transaction_mode); + } + function MetaTables() { return false; Index: adodb-pdo_mysql.inc.php =================================================================== RCS file: /cvsroot/mantisbt/mantisbt/core/adodb/drivers/adodb-pdo_mysql.inc.php,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- adodb-pdo_mysql.inc.php 22 Apr 2006 11:10:21 -0000 1.1 +++ adodb-pdo_mysql.inc.php 22 May 2007 05:59:41 -0000 1.2 @@ -2,7 +2,7 @@ /* -V4.80 8 Mar 2006 (c) 2000-2006 John Lim (jl...@na...). All rights reserved. +V4.94 23 Jan 2007 (c) 2000-2007 John Lim (jlim#natsoft.com.my). All rights reserved. Released under both BSD license and Lesser GPL library license. Whenever there is any discrepancy between the two licenses, the BSD license will take precedence. @@ -12,20 +12,31 @@ class ADODB_pdo_mysql extends ADODB_pdo { var $metaTablesSQL = "SHOW TABLES"; - var $metaColumnsSQL = "SHOW COLUMNS FROM %s"; - var $_bindInputArray = false; + var $metaColumnsSQL = "SHOW COLUMNS FROM `%s`"; var $sysDate = 'CURDATE()'; var $sysTimeStamp = 'NOW()'; - + var $nameQuote = '`'; + function _init($parentDriver) { $parentDriver->hasTransactions = false; - $parentDriver->_bindInputArray = true; + $parentDriver->_bindInputArray = false; $parentDriver->hasInsertID = true; $parentDriver->_connectionID->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY,true); } + // dayFraction is a day in floating point + function OffsetDate($dayFraction,$date=false) + { + if (!$date) $date = $this->sysDate; + + $fraction = $dayFraction * 24 * 3600; + return $date . ' + INTERVAL ' . $fraction.' SECOND'; + +// return "from_unixtime(unix_timestamp($date)+$fraction)"; + } + function ServerInfo() { $arr['description'] = ADOConnection::GetOne("select version()"); @@ -50,6 +61,17 @@ return $ret; } + function SetTransactionMode( $transaction_mode ) + { + $this->_transmode = $transaction_mode; + if (empty($transaction_mode)) { + $this->Execute('SET TRANSACTION ISOLATION LEVEL REPEATABLE READ'); + return; + } + if (!stristr($transaction_mode,'isolation')) $transaction_mode = 'ISOLATION LEVEL '.$transaction_mode; + $this->Execute("SET SESSION TRANSACTION ".$transaction_mode); + } + function &MetaColumns($table) { $this->_findschema($table,$schema); Index: adodb-sqlitepo.inc.php =================================================================== RCS file: /cvsroot/mantisbt/mantisbt/core/adodb/drivers/adodb-sqlitepo.inc.php,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- adodb-sqlitepo.inc.php 22 Apr 2006 11:10:21 -0000 1.4 +++ adodb-sqlitepo.inc.php 22 May 2007 05:59:42 -0000 1.5 @@ -1,6 +1,6 @@ <?php /* -V4.80 8 Mar 2006 (c) 2000-2006 John Lim (jl...@na...). All rights reserved. +V4.94 23 Jan 2007 (c) 2000-2007 John Lim (jlim#natsoft.com.my). All rights reserved. Released under both BSD license and Lesser GPL library license. Whenever there is any discrepancy between the two licenses, the BSD license will take precedence. Index: adodb-db2.inc.php =================================================================== RCS file: /cvsroot/mantisbt/mantisbt/core/adodb/drivers/adodb-db2.inc.php,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- adodb-db2.inc.php 22 Apr 2006 11:10:21 -0000 1.6 +++ adodb-db2.inc.php 22 May 2007 05:59:39 -0000 1.7 @@ -1,13 +1,15 @@ <?php /* - V4.80 8 Mar 2006 (c) 2006 John Lim (jl...@na...). All rights reserved. + V4.94 23 Jan 2007 (c) 2006 John Lim (jlim#natsoft.com.my). All rights reserved. -This is a version of the ADODB driver for DB2. It uses the 'ibm_db2' PECL extension for PHP - (http://pecl.php.net/package/ibm_db2), which in turn requires DB2 V8.2.2. + This is a version of the ADODB driver for DB2. It uses the 'ibm_db2' PECL extension + for PHP (http://pecl.php.net/package/ibm_db2), which in turn requires DB2 V8.2.2 or + higher. - Tested with PHP 5.1.1 and Apache 2.0.55 on Windows XP SP2. + Originally tested with PHP 5.1.1 and Apache 2.0.55 on Windows XP SP2. + More recently tested with PHP 5.1.2 and Apache 2.0.55 on Windows XP SP2. - This file was ported from "adodb-odbc.inc.php" by Larry Menard, "lar...@ro...". + This file was ported from "adodb-odbc.inc.php" by Larry Menard, "larry.menard#rogers.com". I ripped out what I believed to be a lot of redundant or obsolete code, but there are probably still some remnants of the ODBC support in this file; I'm relying on reviewers of this code to point out any other things that can be removed. @@ -25,7 +27,13 @@ class ADODB_db2 extends ADOConnection { var $databaseType = "db2"; var $fmtDate = "'Y-m-d'"; - var $fmtTimeStamp = "'Y-m-d, h:i:sA'"; + var $concat_operator = '||'; + + var $sysTime = 'CURRENT TIME'; + var $sysDate = 'CURRENT DATE'; + var $sysTimeStamp = 'CURRENT TIMESTAMP'; + + var $fmtTimeStamp = "'Y-m-d-H:i:s'"; var $replaceQuote = "''"; // string to use to replace quotes var $dataProvider = "db2"; var $hasAffectedRows = true; @@ -35,11 +43,19 @@ var $useFetchArray = false; // setting this to true will make array elements in FETCH_ASSOC mode case-sensitive // breaking backward-compat var $_bindInputArray = false; - var $_genSeqSQL = "create table %s (id integer)"; + var $_genIDSQL = "VALUES NEXTVAL FOR %s"; + var $_genSeqSQL = "CREATE SEQUENCE %s START WITH 1 NO MAXVALUE NO CYCLE"; + var $_dropSeqSQL = "DROP SEQUENCE %s"; var $_autocommit = true; var $_haserrorfunctions = true; var $_lastAffectedRows = 0; var $uCaseTables = true; // for meta* functions, uppercase table names + var $hasInsertID = true; + + function _insertid() + { + return ADOConnection::GetOne('VALUES IDENTITY_VAL_LOCAL()'); + } function ADODB_db2() { @@ -69,7 +85,8 @@ ... [truncated message content] |