Update of /cvsroot/moregroupware/mgw/include/adodb/drivers In directory sc8-pr-cvs1:/tmp/cvs-serv29753/drivers Modified Files: adodb-access.inc.php adodb-ado.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-mssql.inc.php adodb-mssqlpo.inc.php adodb-mysql.inc.php adodb-mysqlt.inc.php adodb-oci8.inc.php adodb-oci805.inc.php adodb-oci8po.inc.php adodb-odbc.inc.php adodb-odbc_mssql.inc.php adodb-odbc_oracle.inc.php adodb-oracle.inc.php adodb-postgres.inc.php adodb-postgres64.inc.php adodb-postgres7.inc.php adodb-proxy.inc.php adodb-sqlanywhere.inc.php adodb-sybase.inc.php adodb-vfp.inc.php Log Message: ADOdb update to 3.31. See ChangeLog for more info! Index: adodb-access.inc.php =================================================================== RCS file: /cvsroot/moregroupware/mgw/include/adodb/drivers/adodb-access.inc.php,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** adodb-access.inc.php 9 Jan 2003 12:29:52 -0000 1.4 --- adodb-access.inc.php 31 Mar 2003 12:01:48 -0000 1.5 *************** *** 1,5 **** <?php /* ! V3.00 6 Jan 2003 (c) 2000-2003 John Lim (jl...@na...). All rights reserved. Released under both BSD license and Lesser GPL library license. Whenever there is any discrepancy between the two licenses, --- 1,5 ---- <?php /* ! V3.31 17 March 2003 (c) 2000-2003 John Lim (jl...@na...). All rights reserved. Released under both BSD license and Lesser GPL library license. Whenever there is any discrepancy between the two licenses, *************** *** 29,32 **** --- 29,35 ---- function ADODB_access() { + global $ADODB_EXTENSION; + + $ADODB_EXTENSION = false; $this->ADODB_odbc(); } *************** *** 48,55 **** $arr = &$rs->GetArray(); ! $arr2 = array(); for ($i=0; $i < sizeof($arr); $i++) { ! if ($arr[$i][2] && substr($arr[$i][2],0,4) != 'MSys') $arr2[] = $arr[$i][2]; } --- 51,58 ---- $arr = &$rs->GetArray(); ! //print_pre($arr); $arr2 = array(); for ($i=0; $i < sizeof($arr); $i++) { ! if ($arr[$i][2] && $arr[$i][3] != 'SYSTEM TABLE') $arr2[] = $arr[$i][2]; } *************** *** 67,71 **** return $this->ADORecordSet_odbc($id,$mode); } ! } ! } // class ?> --- 70,74 ---- return $this->ADORecordSet_odbc($id,$mode); } ! }// class ! } ?> Index: adodb-ado.inc.php =================================================================== RCS file: /cvsroot/moregroupware/mgw/include/adodb/drivers/adodb-ado.inc.php,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** adodb-ado.inc.php 9 Jan 2003 12:29:52 -0000 1.4 --- adodb-ado.inc.php 31 Mar 2003 12:01:48 -0000 1.5 *************** *** 1,5 **** <?php /* ! V3.00 6 Jan 2003 (c) 2000-2003 John Lim (jl...@na...). All rights reserved. Released under both BSD license and Lesser GPL library license. Whenever there is any discrepancy between the two licenses, --- 1,5 ---- <?php /* ! V3.31 17 March 2003 (c) 2000-2003 John Lim (jl...@na...). All rights reserved. Released under both BSD license and Lesser GPL library license. Whenever there is any discrepancy between the two licenses, *************** *** 35,38 **** --- 35,39 ---- function ADODB_ado() { + $this->_affectedRows = new VARIANT; } *************** *** 45,49 **** function _affectedrows() { ! return $this->_affectedRows; } --- 46,50 ---- function _affectedrows() { ! return $this->_affectedRows->value; } *************** *** 517,521 **** { $rs = $this->_queryID; ! if (!$rs or $rs->EOF) return false; $this->fields = array(); --- 518,525 ---- { $rs = $this->_queryID; ! if (!$rs or $rs->EOF) { ! $this->fields = false; ! return false; ! } $this->fields = array(); Index: adodb-ado_access.inc.php =================================================================== RCS file: /cvsroot/moregroupware/mgw/include/adodb/drivers/adodb-ado_access.inc.php,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** adodb-ado_access.inc.php 9 Jan 2003 12:29:52 -0000 1.4 --- adodb-ado_access.inc.php 31 Mar 2003 12:01:48 -0000 1.5 *************** *** 1,5 **** <?php /* ! V3.00 6 Jan 2003 (c) 2000-2003 John Lim (jl...@na...). All rights reserved. Released under both BSD license and Lesser GPL library license. Whenever there is any discrepancy between the two licenses, --- 1,5 ---- <?php /* ! V3.31 17 March 2003 (c) 2000-2003 John Lim (jl...@na...). All rights reserved. Released under both BSD license and Lesser GPL library license. Whenever there is any discrepancy between the two licenses, *************** *** 27,30 **** --- 27,31 ---- function ADODB_ado_access() { + $this->ADODB_ado(); } Index: adodb-ado_mssql.inc.php =================================================================== RCS file: /cvsroot/moregroupware/mgw/include/adodb/drivers/adodb-ado_mssql.inc.php,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** adodb-ado_mssql.inc.php 9 Jan 2003 12:29:52 -0000 1.4 --- adodb-ado_mssql.inc.php 31 Mar 2003 12:01:49 -0000 1.5 *************** *** 1,5 **** <?php /* ! V3.00 6 Jan 2003 (c) 2000-2003 John Lim (jl...@na...). All rights reserved. Released under both BSD license and Lesser GPL library license. Whenever there is any discrepancy between the two licenses, --- 1,5 ---- <?php /* ! V3.31 17 March 2003 (c) 2000-2003 John Lim (jl...@na...). All rights reserved. Released under both BSD license and Lesser GPL library license. Whenever there is any discrepancy between the two licenses, *************** *** 33,36 **** --- 33,37 ---- function ADODB_ado_mssql() { + $this->ADODB_ado(); } Index: adodb-borland_ibase.inc.php =================================================================== RCS file: /cvsroot/moregroupware/mgw/include/adodb/drivers/adodb-borland_ibase.inc.php,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** adodb-borland_ibase.inc.php 9 Jan 2003 12:29:52 -0000 1.4 --- adodb-borland_ibase.inc.php 31 Mar 2003 12:01:49 -0000 1.5 *************** *** 1,5 **** <?php /* ! V3.00 6 Jan 2003 (c) 2000-2003 John Lim (jl...@na...). All rights reserved. Released under both BSD license and Lesser GPL library license. Whenever there is any discrepancy between the two licenses, --- 1,5 ---- <?php /* ! V3.31 17 March 2003 (c) 2000-2003 John Lim (jl...@na...). All rights reserved. Released under both BSD license and Lesser GPL library license. Whenever there is any discrepancy between the two licenses, *************** *** 21,24 **** --- 21,39 ---- { $this->ADODB_ibase(); + } + + function ServerInfo() + { + $arr['dialect'] = $this->dialect; + switch($arr['dialect']) { + case '': + case '1': $s = 'Interbase 6.5, Dialect 1'; break; + case '2': $s = 'Interbase 6.5, Dialect 2'; break; + default: + case '3': $s = 'Interbase 6.5, Dialect 3'; break; + } + $arr['version'] = '6.5'; + $arr['description'] = $s; + return $arr; } Index: adodb-csv.inc.php =================================================================== RCS file: /cvsroot/moregroupware/mgw/include/adodb/drivers/adodb-csv.inc.php,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** adodb-csv.inc.php 9 Jan 2003 12:29:52 -0000 1.4 --- adodb-csv.inc.php 31 Mar 2003 12:01:49 -0000 1.5 *************** *** 1,5 **** <?php /* ! V3.00 6 Jan 2003 (c) 2000-2003 John Lim (jl...@na...). All rights reserved. Released under both BSD license and Lesser GPL library license. Whenever there is any discrepancy between the two licenses, --- 1,5 ---- <?php /* ! V3.31 17 March 2003 (c) 2000-2003 John Lim (jl...@na...). All rights reserved. Released under both BSD license and Lesser GPL library license. Whenever there is any discrepancy between the two licenses, *************** *** 28,31 **** --- 28,32 ---- var $replaceQuote = "''"; // string to use to replace quotes var $hasTransactions = false; + var $_errorNo = false; function ADODB_csv() Index: adodb-db2.inc.php =================================================================== RCS file: /cvsroot/moregroupware/mgw/include/adodb/drivers/adodb-db2.inc.php,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** adodb-db2.inc.php 9 Jan 2003 12:29:52 -0000 1.4 --- adodb-db2.inc.php 31 Mar 2003 12:01:49 -0000 1.5 *************** *** 1,5 **** <?php /* ! V3.00 6 Jan 2003 (c) 2000-2003 John Lim (jl...@na...). All rights reserved. Released under both BSD license and Lesser GPL library license. Whenever there is any discrepancy between the two licenses, --- 1,5 ---- <?php /* ! V3.31 17 March 2003 (c) 2000-2003 John Lim (jl...@na...). All rights reserved. Released under both BSD license and Lesser GPL library license. Whenever there is any discrepancy between the two licenses, *************** *** 57,60 **** --- 57,68 ---- odbc driver. + Setting SQL_CUR_USE_ODBC + ======================== + To set SQL_CUR_USE_ODBC for drivers that require it, do this: + + $db = NewADOConnection('db2'); + $db->curMode = SQL_CUR_USE_ODBC; + $db->Connect($dsn, $userid, $pwd); + */ *************** *** 76,105 **** { $this->ADODB_odbc(); - } - - // returns true or false - // curmode is not properly supported by DB2 odbc driver according to Mark Newnham - function _connect($argDSN, $argUsername, $argPassword, $argDatabasename) - { - global $php_errormsg; - - $php_errormsg = ''; - $this->_connectionID = odbc_connect($argDSN,$argUsername,$argPassword); - $this->_errorMsg = $php_errormsg; - - //if ($this->_connectionID) odbc_autocommit($this->_connectionID,true); - return $this->_connectionID != false; - } - - // returns true or false - function _pconnect($argDSN, $argUsername, $argPassword, $argDatabasename) - { - global $php_errormsg; - $php_errormsg = ''; - $this->_connectionID = odbc_pconnect($argDSN,$argUsername,$argPassword); - $this->_errorMsg = $php_errormsg; - - //if ($this->_connectionID) odbc_autocommit($this->_connectionID,true); - return $this->_connectionID != false; } --- 84,87 ---- Index: adodb-fbsql.inc.php =================================================================== RCS file: /cvsroot/moregroupware/mgw/include/adodb/drivers/adodb-fbsql.inc.php,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** adodb-fbsql.inc.php 9 Jan 2003 12:29:52 -0000 1.4 --- adodb-fbsql.inc.php 31 Mar 2003 12:01:49 -0000 1.5 *************** *** 1,5 **** <?php /* ! @version V3.00 6 Jan 2003 (c) 2000-2003 John Lim (jl...@na...). All rights reserved. Released under both BSD license and Lesser GPL library license. Whenever there is any discrepancy between the two licenses, --- 1,5 ---- <?php /* ! @version V3.31 17 March 2003 (c) 2000-2003 John Lim (jl...@na...). All rights reserved. Released under both BSD license and Lesser GPL library license. Whenever there is any discrepancy between the two licenses, Index: adodb-firebird.inc.php =================================================================== RCS file: /cvsroot/moregroupware/mgw/include/adodb/drivers/adodb-firebird.inc.php,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** adodb-firebird.inc.php 9 Jan 2003 12:29:53 -0000 1.4 --- adodb-firebird.inc.php 31 Mar 2003 12:01:50 -0000 1.5 *************** *** 1,5 **** <?php /* ! V3.00 6 Jan 2003 (c) 2000-2003 John Lim (jl...@na...). All rights reserved. Released under both BSD license and Lesser GPL library license. Whenever there is any discrepancy between the two licenses, --- 1,5 ---- <?php /* ! V3.31 17 March 2003 (c) 2000-2003 John Lim (jl...@na...). All rights reserved. Released under both BSD license and Lesser GPL library license. Whenever there is any discrepancy between the two licenses, *************** *** 22,25 **** --- 22,40 ---- } + function ServerInfo() + { + $arr['dialect'] = $this->dialect; + switch($arr['dialect']) { + case '': + case '1': $s = 'Firebird Dialect 1'; break; + case '2': $s = 'Firebird Dialect 2'; break; + default: + case '3': $s = 'Firebird Dialect 3'; break; + } + $arr['version'] = ADOConnection::_findvers($s); + $arr['description'] = $s; + return $arr; + } + // Note that Interbase 6.5 uses this ROWS instead - don't you love forking wars! // SELECT col1, col2 FROM table ROWS 5 -- get 5 rows *************** *** 37,40 **** --- 52,56 ---- $this->Execute($sql,$inputarr,$arg3); } + }; Index: adodb-ibase.inc.php =================================================================== RCS file: /cvsroot/moregroupware/mgw/include/adodb/drivers/adodb-ibase.inc.php,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** adodb-ibase.inc.php 9 Jan 2003 12:29:53 -0000 1.4 --- adodb-ibase.inc.php 31 Mar 2003 12:01:50 -0000 1.5 *************** *** 1,5 **** <?php /* ! V3.00 6 Jan 2003 (c) 2000-2003 John Lim (jl...@na...). All rights reserved. Released under both BSD license and Lesser GPL library license. Whenever there is any discrepancy between the two licenses, --- 1,5 ---- <?php /* ! V3.31 17 March 2003 (c) 2000-2003 John Lim (jl...@na...). All rights reserved. Released under both BSD license and Lesser GPL library license. Whenever there is any discrepancy between the two licenses, *************** *** 28,32 **** var $databaseType = "ibase"; var $dataProvider = "ibase"; ! var $replaceQuote = "\'"; // string to use to replace quotes var $fmtDate = "'Y-m-d'"; var $fmtTimeStamp = "'Y-m-d, H:i:s'"; --- 28,33 ---- var $databaseType = "ibase"; var $dataProvider = "ibase"; ! var $replaceQuote = "''"; // string to use to replace quotes ! var $ibase_timefmt = '%Y-%m-%d'; var $fmtDate = "'Y-m-d'"; var $fmtTimeStamp = "'Y-m-d, H:i:s'"; *************** *** 49,55 **** function ADODB_ibase() { - ibase_timefmt('%Y-%m-%d'); } function ServerInfo() { --- 50,71 ---- function ADODB_ibase() { } + function MetaPrimaryKeys($table,$owner_notused=false,$internalKey=false) + { + if ($internalKey) return array('RDB$DB_KEY'); + + $table = strtoupper($table); + + $sql = 'SELECT S.RDB$FIELD_NAME AFIELDNAME + FROM RDB$INDICES I JOIN RDB$INDEX_SEGMENTS S ON I.RDB$INDEX_NAME=S.RDB$INDEX_NAME + WHERE I.RDB$RELATION_NAME=\''.$table.'\' and I.RDB$INDEX_NAME like \'RDB$PRIMARY%\' + ORDER BY I.RDB$INDEX_NAME,S.RDB$FIELD_POSITION'; + + $a = $this->GetCol($sql,false,true); + if ($a && sizeof($a)>0) return $a; + return false; + } + function ServerInfo() { *************** *** 112,116 **** } ! // use delete and insert instead function Replace($table, $fieldArray, $keyCol,$autoQuote=false) { --- 128,132 ---- } ! /*// use delete and insert instead function Replace($table, $fieldArray, $keyCol,$autoQuote=false) { *************** *** 157,161 **** return ($ok) ? 2 : 0; } ! function CreateSequence($seqname,$startID=1) { --- 173,177 ---- return ($ok) ? 2 : 0; } ! */ function CreateSequence($seqname,$startID=1) { *************** *** 188,192 **** } ! function SelectDB($dbName) { return false; } --- 204,209 ---- } ! function SelectDB($dbName) ! { return false; } *************** *** 197,206 **** } ! function ErrorNo() { ! if (preg_match('/error code = ([\-0-9]*)/i', $this->_errorMsg,$arr)) return (integer) $arr[1]; ! else return 0; } ! function ErrorMsg() { return $this->_errorMsg; } --- 214,225 ---- } ! function ErrorNo() ! { ! if (preg_match('/error code = ([\-0-9]*)/i', $this->_errorMsg,$arr)) return (integer) $arr[1]; ! else return 0; } ! function ErrorMsg() ! { return $this->_errorMsg; } *************** *** 209,213 **** function _connect($argHostname, $argUsername, $argPassword, $argDatabasename) { ! $this->_connectionID = ibase_connect($argHostname,$argUsername,$argPassword,$this->charSet,$this->buffers,$this->dialect); if ($this->dialect != 1) { // http://www.ibphoenix.com/ibp_60_del_id_ds.html --- 228,232 ---- function _connect($argHostname, $argUsername, $argPassword, $argDatabasename) { ! if ($argDatabasename) $argHostname .= ':'.$argDatabasename; $this->_connectionID = ibase_connect($argHostname,$argUsername,$argPassword,$this->charSet,$this->buffers,$this->dialect); if ($this->dialect != 1) { // http://www.ibphoenix.com/ibp_60_del_id_ds.html *************** *** 218,222 **** return false; } ! return true; } --- 237,242 ---- return false; } ! ! ibase_timefmt($this->ibase_timefmt); return true; } *************** *** 224,227 **** --- 244,248 ---- function _pconnect($argHostname, $argUsername, $argPassword, $argDatabasename) { + if ($argDatabasename) $argHostname .= ':'.$argDatabasename; $this->_connectionID = ibase_pconnect($argHostname,$argUsername,$argPassword,$this->charSet,$this->buffers,$this->dialect); if ($this->dialect != 1) { // http://www.ibphoenix.com/ibp_60_del_id_ds.html *************** *** 233,236 **** --- 254,258 ---- } + ibase_timefmt($this->ibase_timefmt); return true; } *************** *** 238,242 **** function Prepare($sql) { ! return $sql; $stmt = ibase_prepare($sql); if (!$stmt) return false; --- 260,264 ---- function Prepare($sql) { ! // return $sql; $stmt = ibase_prepare($sql); if (!$stmt) return false; *************** *** 248,257 **** function _query($sql,$iarr=false) { ! if (is_array($sql)) { ! $fn = 'ibase_execute'; ! $sql = $sql[1]; ! } else ! $fn = 'ibase_query'; ! if (!$this->autoCommit && $this->_transactionID) { $conn = $this->_transactionID; --- 270,274 ---- function _query($sql,$iarr=false) { ! if (!$this->autoCommit && $this->_transactionID) { $conn = $this->_transactionID; *************** *** 261,278 **** $docommit = true; } ! if (is_array($iarr)) { ! switch(sizeof($iarr)) { ! case 1: $ret = $fn($conn,$sql,$iarr[0]); break; ! case 2: $ret = $fn($conn,$sql,$iarr[0],$iarr[1]); break; ! case 3: $ret = $fn($conn,$sql,$iarr[0],$iarr[1],$iarr[2]); break; ! case 4: $ret = $fn($conn,$sql,$iarr[0],$iarr[1],$iarr[2],$iarr[3]); break; ! case 5: $ret = $fn($conn,$sql,$iarr[0],$iarr[1],$iarr[2],$iarr[3],$iarr[4]); break; ! case 6: $ret = $fn($conn,$sql,$iarr[0],$iarr[1],$iarr[2],$iarr[3],$iarr[4],$iarr[5]); break; ! case 7: $ret = $fn($conn,$sql,$iarr[0],$iarr[1],$iarr[2],$iarr[3],$iarr[4],$iarr[5],$iarr[6]); break; ! default: ADOConnection::outp( "Too many parameters to ibase query $sql"); ! case 8: $ret = $fn($conn,$sql,$iarr[0],$iarr[1],$iarr[2],$iarr[3],$iarr[4],$iarr[5],$iarr[6],$iarr[7]); break; ! } ! } else $ret = $fn($conn,$sql); ! if ($docommit && $ret === true) ibase_commit($this->_connectionID); --- 278,325 ---- $docommit = true; } ! if (is_array($sql)) { ! $fn = 'ibase_execute'; ! $sql = $sql[1]; ! ! if (is_array($iarr)) { ! if (ADODB_PHPVER >= 0x4050) { // actually 4.0.4 ! $fnarr = array_merge( array($sql) , $iarr); ! $ret = call_user_func_array($fn,$fnarr); ! } else { ! switch(sizeof($iarr)) { ! case 1: $ret = $fn($sql,$iarr[0]); break; ! case 2: $ret = $fn($sql,$iarr[0],$iarr[1]); break; ! case 3: $ret = $fn($sql,$iarr[0],$iarr[1],$iarr[2]); break; ! case 4: $ret = $fn($sql,$iarr[0],$iarr[1],$iarr[2],$iarr[3]); break; ! case 5: $ret = $fn($sql,$iarr[0],$iarr[1],$iarr[2],$iarr[3],$iarr[4]); break; ! case 6: $ret = $fn($sql,$iarr[0],$iarr[1],$iarr[2],$iarr[3],$iarr[4],$iarr[5]); break; ! case 7: $ret = $fn($sql,$iarr[0],$iarr[1],$iarr[2],$iarr[3],$iarr[4],$iarr[5],$iarr[6]); break; ! default: ADOConnection::outp( "Too many parameters to ibase query $sql"); ! case 8: $ret = $fn($sql,$iarr[0],$iarr[1],$iarr[2],$iarr[3],$iarr[4],$iarr[5],$iarr[6],$iarr[7]); break; ! } ! } ! } else $ret = $fn($sql); ! } else { ! $fn = 'ibase_query'; ! ! if (is_array($iarr)) { ! if (ADODB_PHPVER >= 0x4050) { // actually 4.0.4 ! $fnarr = array_merge( array($conn,$sql) , $iarr); ! $ret = call_user_func_array($fn,$fnarr); ! } else { ! switch(sizeof($iarr)) { ! case 1: $ret = $fn($conn,$sql,$iarr[0]); break; ! case 2: $ret = $fn($conn,$sql,$iarr[0],$iarr[1]); break; ! case 3: $ret = $fn($conn,$sql,$iarr[0],$iarr[1],$iarr[2]); break; ! case 4: $ret = $fn($conn,$sql,$iarr[0],$iarr[1],$iarr[2],$iarr[3]); break; ! case 5: $ret = $fn($conn,$sql,$iarr[0],$iarr[1],$iarr[2],$iarr[3],$iarr[4]); break; ! case 6: $ret = $fn($conn,$sql,$iarr[0],$iarr[1],$iarr[2],$iarr[3],$iarr[4],$iarr[5]); break; ! case 7: $ret = $fn($conn,$sql,$iarr[0],$iarr[1],$iarr[2],$iarr[3],$iarr[4],$iarr[5],$iarr[6]); break; ! default: ADOConnection::outp( "Too many parameters to ibase query $sql"); ! case 8: $ret = $fn($conn,$sql,$iarr[0],$iarr[1],$iarr[2],$iarr[3],$iarr[4],$iarr[5],$iarr[6],$iarr[7]); break; ! } ! } ! } else $ret = $fn($conn,$sql); ! } if ($docommit && $ret === true) ibase_commit($this->_connectionID); *************** *** 306,310 **** while (!$rs->EOF) { //print_r($rs->fields); $fld = new ADOFieldObject(); ! $fld->name = $rs->fields[0]; $tt = $rs->fields[1]; switch($tt) --- 353,357 ---- while (!$rs->EOF) { //print_r($rs->fields); $fld = new ADOFieldObject(); ! $fld->name = trim($rs->fields[0]); $tt = $rs->fields[1]; switch($tt) *************** *** 322,325 **** --- 369,373 ---- case 37:$tt = 'VARCHAR'; break; case 261:$tt = 'BLOB'; break; + case 14: $tt = 'TEXT'; break; case 13: case 35:$tt = 'TIMESTAMP'; break; *************** *** 356,360 **** { $blobid = ibase_blob_open( $blob ); ! $realblob = ibase_blob_get( $blobid,MAX_BLOB_SIZE); // 2nd param is max size of blob -- Kevin Boillet <kev...@ya...> while($string = ibase_blob_get($blobid, 8192)){ $realblob .= $string; --- 404,408 ---- { $blobid = ibase_blob_open( $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; *************** *** 373,377 **** /* fill with data */ ! while ($val = fread($fd,8192)){ ibase_blob_add($blob_id, $val); } --- 421,425 ---- /* fill with data */ ! while ($val = fread($fd,32768)){ ibase_blob_add($blob_id, $val); } *************** *** 393,397 **** $conn->UpdateBlob('blobtable','blobcol',$blob,'id=1'); */ ! function UpdateBlob($table,$column,$val,$where,$blobtype='BLOB') { $blob_id = ibase_blob_create($this->_connectionID); --- 441,479 ---- $conn->UpdateBlob('blobtable','blobcol',$blob,'id=1'); */ ! function UpdateBlob($table,$column,$val,$where,$blobtype='BLOB') ! { ! $blob_id = ibase_blob_create($this->_connectionID); ! ! // ibase_blob_add($blob_id, $val); ! ! // replacement that solves the problem by which only the first modulus 64K / ! // of $val are stored at the blob field //////////////////////////////////// ! // Thx Abel Berenstein aberenstein#afip.gov.ar ! $len = strlen($val); ! $chunk_size = 32768; ! $tail_size = $len % $chunk_size; ! $n_chunks = ($len - $tail_size) / $chunk_size; ! ! for ($n = 0; $n < $n_chunks; $n++) { ! $start = $n * $chunk_size; ! $data = substr($val, $start, $chunk_size); ! ibase_blob_add($blob_id, $data); ! } ! ! if ($tail_size) { ! $start = $n_chunks * $chunk_size; ! $data = substr($val, $start, $tail_size); ! ibase_blob_add($blob_id, $data); ! } ! // end replacement ///////////////////////////////////////////////////////// ! ! $blob_id_str = ibase_blob_close($blob_id); ! ! return $this->Execute("UPDATE $table SET $column=(?) WHERE $where",array($blob_id_str)) != false; ! ! } ! ! ! function OldUpdateBlob($table,$column,$val,$where,$blobtype='BLOB') { $blob_id = ibase_blob_create($this->_connectionID); *************** *** 400,403 **** --- 482,526 ---- return $this->Execute("UPDATE $table SET $column=(?) WHERE $where",array($blob_id_str)) != false; } + + // Format date column in sql string given an input format that understands Y M D + // Only since Interbase 6.0 - uses EXTRACT + // problem - does not zero-fill the day and month yet + function SQLDate($fmt, $col=false) + { + if (!$col) $col = $this->sysDate; + $s = ''; + + $len = strlen($fmt); + for ($i=0; $i < $len; $i++) { + if ($s) $s .= '||'; + $ch = $fmt[$i]; + switch($ch) { + case 'Y': + case 'y': + $s .= "extract(year from $col)"; + break; + case 'M': + case 'm': + $s .= "extract(month from $col)"; + break; + case 'Q': + case 'q': + $s .= "cast(((extract(month from $col)+2) / 3) as integer)"; + break; + case 'D': + case 'd': + $s .= "(extract(day from $col))"; + break; + default: + if ($ch == '\\') { + $i++; + $ch = substr($fmt,$i,1); + } + $s .= $this->qstr($ch); + break; + } + } + return $s; + } } *************** *** 430,434 **** $fld = new ADOFieldObject; $ibf = ibase_field_info($this->_queryID,$fieldOffset); - $fld->name = strtolower($ibf['alias']); if (empty($fld->name)) $fld->name = strtolower($ibf['name']); --- 553,556 ---- *************** *** 457,466 **** function _fetch() { ! $f = ibase_fetch_row($this->_queryID); ! if ($f === false) return false; ! // OPN stuff start - optimized ! // fix missing nulls and decode blobs automatically ! // WARNING - this could break bc. for ($i=0, $max = $this->_numOfFields; $i < $max; $i++) { if ($this->_cacheType[$i]=="BLOB") { --- 579,589 ---- function _fetch() { ! $f = @ibase_fetch_row($this->_queryID); ! if ($f === false) { ! $this->fields = false; ! return false; ! } // OPN stuff start - optimized ! // fix missing nulls and decode blobs automatically for ($i=0, $max = $this->_numOfFields; $i < $max; $i++) { if ($this->_cacheType[$i]=="BLOB") { Index: adodb-informix.inc.php =================================================================== RCS file: /cvsroot/moregroupware/mgw/include/adodb/drivers/adodb-informix.inc.php,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** adodb-informix.inc.php 9 Jan 2003 12:29:53 -0000 1.4 --- adodb-informix.inc.php 31 Mar 2003 12:01:50 -0000 1.5 *************** *** 1,5 **** <?php /** ! * @version V3.00 6 Jan 2003 (c) 2000-2003 John Lim (jl...@na...). All rights reserved. * Released under both BSD license and Lesser GPL library license. * Whenever there is any discrepancy between the two licenses, --- 1,5 ---- <?php /** ! * @version V3.31 17 March 2003 (c) 2000-2003 John Lim (jl...@na...). 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/moregroupware/mgw/include/adodb/drivers/adodb-informix72.inc.php,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** adodb-informix72.inc.php 9 Jan 2003 12:29:53 -0000 1.3 --- adodb-informix72.inc.php 31 Mar 2003 12:01:50 -0000 1.4 *************** *** 1,5 **** <?php /* ! V3.00 6 Jan 2003 (c) 2000-2003 John Lim. All rights reserved. Released under both BSD license and Lesser GPL library license. Whenever there is any discrepancy between the two licenses, --- 1,5 ---- <?php /* ! V3.31 17 March 2003 (c) 2000-2003 John Lim. All rights reserved. Released under both BSD license and Lesser GPL library license. Whenever there is any discrepancy between the two licenses, *************** *** 101,105 **** } ! function ErrorNo() { return ifx_error(); } --- 101,106 ---- } ! function ErrorNo() ! { return ifx_error(); } *************** *** 110,114 **** --- 111,125 ---- } + function UpdateBlob($table, $column, $val, $where, $blobtype = 'BLOB') + { + $type = ($blobtype == 'TEXT') ? 1 : 0; + $blobid = ifx_create_blob($type,0,$val); + return $this->Execute("UPDATE $table SET $column=(?) WHERE $where",array($blobid)); + } + function BlobDecode($blobid) + { + return @ifx_get_blob($blobid); + } // returns true or false function _connect($argHostname, $argUsername, $argPassword, $argDatabasename) Index: adodb-mssql.inc.php =================================================================== RCS file: /cvsroot/moregroupware/mgw/include/adodb/drivers/adodb-mssql.inc.php,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** adodb-mssql.inc.php 9 Jan 2003 12:29:53 -0000 1.4 --- adodb-mssql.inc.php 31 Mar 2003 12:01:51 -0000 1.5 *************** *** 1,5 **** <?php /* ! V3.00 6 Jan 2003 (c) 2000-2003 John Lim (jl...@na...). All rights reserved. Released under both BSD license and Lesser GPL library license. Whenever there is any discrepancy between the two licenses, --- 1,5 ---- <?php /* ! V3.31 17 March 2003 (c) 2000-2003 John Lim (jl...@na...). All rights reserved. Released under both BSD license and Lesser GPL library license. Whenever there is any discrepancy between the two licenses, *************** *** 33,40 **** //---------------------------------------------------------------- - global $ADODB_PHPVER; // 'dmy' and 'mdy' supported // has datetime converstion to YYYY-MM-DD format, and also mssql_fetch_assoc ! if ($ADODB_PHPVER >= 0x4300) { // docs say 4.2.0, but testing shows only since 4.3.0 does it work! ini_set('mssql.datetimeconvert',0); --- 33,39 ---- //---------------------------------------------------------------- // has datetime converstion to YYYY-MM-DD format, and also mssql_fetch_assoc ! if (ADODB_PHPVER >= 0x4300) { // docs say 4.2.0, but testing shows only since 4.3.0 does it work! ini_set('mssql.datetimeconvert',0); *************** *** 90,93 **** --- 89,94 ---- var $rightOuter = '=*'; var $ansiOuter = true; // for mssql7 or later + var $poorAffectedRows = true; + var $identitySQL = 'select @@IDENTITY'; // 'select SCOPE_IDENTITY'; # for mssql 2000 function ADODB_mssql() *************** *** 126,130 **** function _insertid() { ! return $this->GetOne('select @@identity'); } --- 127,136 ---- function _insertid() { ! // SCOPE_IDENTITY() ! // Returns the last IDENTITY value inserted into an IDENTITY column in ! // the same scope. A scope is a module -- a stored procedure, trigger, ! // function, or batch. Thus, two statements are in the same scope if ! // they are in the same stored procedure, function, or batch. ! return $this->GetOne($this->identitySQL); } *************** *** 276,279 **** --- 282,301 ---- } + // "Stein-Aksel Basma" <ba...@ac...> + // tested with MSSQL 2000 + function MetaPrimaryKeys($table) + { + $sql = "select k.column_name from information_schema.key_column_usage k, + information_schema.table_constraints tc + where tc.constraint_name = k.constraint_name and tc.constraint_type = + 'PRIMARY KEY' and k.table_name = '$table'"; + + $a = $this->GetCol($sql); + if ($a && sizeof($a)>0) return $a; + return false; + } + + + function SelectDB($dbName) { *************** *** 520,537 **** $this->_currentRow++; if ($this->fetchMode & ADODB_FETCH_ASSOC) { ! global $ADODB_PHPVER; ! if ($ADODB_PHPVER >= 0x4200) // only for PHP 4.2.0 or later ! $this->fields = @mssql_fetch_assoc($this->_queryID); else { ! $flds = @mssql_fetch_array($this->_queryID); ! if (is_array($flds)) { ! $fassoc = array(); ! foreach($flds as $k => $v) { ! if (is_numeric($k)) continue; ! $fassoc[$k] = $v; } ! $this->fields = $fassoc; ! } else ! $this->fields = $flds; } --- 542,563 ---- $this->_currentRow++; if ($this->fetchMode & ADODB_FETCH_ASSOC) { ! if ($this->fetchMode & ADODB_FETCH_NUM) { ! //ADODB_FETCH_BOTH mode ! $this->fields = @mssql_fetch_array($this->_queryID); ! } else { ! if (ADODB_PHPVER >= 0x4200) {// only for PHP 4.2.0 or later ! $this->fields = @mssql_fetch_assoc($this->_queryID); ! } else { ! $flds = @mssql_fetch_array($this->_queryID); ! if (is_array($flds)) { ! $fassoc = array(); ! foreach($flds as $k => $v) { ! if (is_numeric($k)) continue; ! $fassoc[$k] = $v; ! } ! $this->fields = $fassoc; } ! } } *************** *** 550,554 **** $this->fields = @mssql_fetch_row($this->_queryID); } ! if (is_array($this->fields)) return true; $this->EOF = true; } --- 576,580 ---- $this->fields = @mssql_fetch_row($this->_queryID); } ! if ($this->fields) return true; $this->EOF = true; } *************** *** 562,579 **** { if ($this->fetchMode & ADODB_FETCH_ASSOC) { ! global $ADODB_PHPVER; ! if ($ADODB_PHPVER >= 0x4200) // only for PHP 4.2.0 or later ! $this->fields = @mssql_fetch_assoc($this->_queryID); ! else { ! $flds = @mssql_fetch_array($this->_queryID); ! if (is_array($flds)) { ! $fassoc = array(); ! foreach($flds as $k => $v) { ! if (is_integer($k)) continue; ! $fassoc[$k] = $v; } ! $this->fields = $fassoc; ! } else ! $this->fields = $flds; } --- 588,608 ---- { if ($this->fetchMode & ADODB_FETCH_ASSOC) { ! if ($this->fetchMode & ADODB_FETCH_NUM) { ! //ADODB_FETCH_BOTH mode ! $this->fields = @mssql_fetch_array($this->_queryID); ! } else { ! if (ADODB_PHPVER >= 0x4200) // only for PHP 4.2.0 or later ! $this->fields = @mssql_fetch_assoc($this->_queryID); ! else { ! $this->fields = @mssql_fetch_array($this->_queryID); ! if (is_array($$this->fields)) { ! $fassoc = array(); ! foreach($$this->fields as $k => $v) { ! if (is_integer($k)) continue; ! $fassoc[$k] = $v; ! } ! $this->fields = $fassoc; } ! } } *************** *** 591,595 **** $this->fields = @mssql_fetch_row($this->_queryID); } ! return (!empty($this->fields)); } --- 620,624 ---- $this->fields = @mssql_fetch_row($this->_queryID); } ! return $this->fields; } *************** *** 626,632 **** function UnixDate($v) { - global $ADODB_PHPVER; ! if (is_numeric(substr($v,0,1)) && $ADODB_PHPVER >= 0x4200) return parent::UnixDate($v); global $ADODB_mssql_mths,$ADODB_mssql_date_order; --- 655,660 ---- function UnixDate($v) { ! if (is_numeric(substr($v,0,1)) && ADODB_PHPVER >= 0x4200) return parent::UnixDate($v); global $ADODB_mssql_mths,$ADODB_mssql_date_order; *************** *** 658,664 **** function UnixTimeStamp($v) { - global $ADODB_PHPVER; ! if (is_numeric(substr($v,0,1)) && $ADODB_PHPVER >= 0x4200) return parent::UnixTimeStamp($v); global $ADODB_mssql_mths,$ADODB_mssql_date_order; --- 686,691 ---- function UnixTimeStamp($v) { ! if (is_numeric(substr($v,0,1)) && ADODB_PHPVER >= 0x4200) return parent::UnixTimeStamp($v); global $ADODB_mssql_mths,$ADODB_mssql_date_order; *************** *** 699,701 **** } ! ?> --- 726,728 ---- } ! ?> \ No newline at end of file Index: adodb-mssqlpo.inc.php =================================================================== RCS file: /cvsroot/moregroupware/mgw/include/adodb/drivers/adodb-mssqlpo.inc.php,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** adodb-mssqlpo.inc.php 9 Jan 2003 12:29:53 -0000 1.3 --- adodb-mssqlpo.inc.php 31 Mar 2003 12:01:51 -0000 1.4 *************** *** 1,5 **** <?php /** ! * @version V3.00 6 Jan 2003 (c) 2000-2003 John Lim (jl...@na...). All rights reserved. * Released under both BSD license and Lesser GPL library license. * Whenever there is any discrepancy between the two licenses, --- 1,5 ---- <?php /** ! * @version V3.31 17 March 2003 (c) 2000-2003 John Lim (jl...@na...). All rights reserved. * Released under both BSD license and Lesser GPL library license. * Whenever there is any discrepancy between the two licenses, *************** *** 18,21 **** --- 18,22 ---- var $databaseType = "mssqlpo"; var $concat_operator = '||'; + function ADODB_mssqlpo() { *************** *** 23,26 **** --- 24,57 ---- } + + function ServerInfo() + { + global $ADODB_FETCH_MODE; + $this->debug=1; + $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); + + + $this->Parameter($stmt,$val,'attribute_id'); + $row = $this->GetRow($stmt); + + //$row = $this->GetRow("execute sp_server_info 2"); + + if ($this->fetchMode === false) { + $ADODB_FETCH_MODE = $savem; + } else + $this->SetFetchMode($savem); + + $arr['description'] = $row[2]; + $arr['version'] = ADOConnection::_findvers($arr['description']); + return $arr; + } + + /* The big difference between mssqlpo and it's parent mssql is that mssqlpo supports *************** *** 29,33 **** function _query($sql,$inputarr) { ! return ADODB_mssql::_query(str_replace('||','+',$sql),$inputarr); } } --- 60,65 ---- function _query($sql,$inputarr) { ! if (is_string($sql)) $sql = str_replace('||','+',$sql); ! return ADODB_mssql::_query($sql,$inputarr); } } *************** *** 38,80 **** { $this->ADORecordset_mssql($id,$mode); - } - - function MoveNext() - { - if (!$this->EOF) { - $this->_currentRow++; - if ($this->fetchMode & ADODB_FETCH_ASSOC) { - global $ADODB_mssql_has_datetimeconvert; - if ($ADODB_mssql_has_datetimeconvert) // only for PHP 4.2.0 or later - $this->fields = @mssql_fetch_assoc($this->_queryID); - else { - $flds = @mssql_fetch_array($this->_queryID); - if (is_array($flds)) { - $fassoc = array(); - foreach($flds as $k => $v) { - if (is_numeric($k)) continue; - $fassoc[$k] = $v; - } - $this->fields = $fassoc; - } else - $this->fields = $flds; - } - if (ADODB_ASSOC_CASE == 0) { - foreach($this->fields as $k=>$v) { - $this->fields[strtolower($k)] = $v; - } - } else if (ADODB_ASSOC_CASE == 1) { - foreach($this->fields as $k=>$v) { - $this->fields[strtoupper($k)] = $v; - } - } - - } else { - $this->fields = @mssql_fetch_row($this->_queryID); - } - if (is_array($this->fields)) return true; - $this->EOF = true; - } - return false; } } --- 70,73 ---- Index: adodb-mysql.inc.php =================================================================== RCS file: /cvsroot/moregroupware/mgw/include/adodb/drivers/adodb-mysql.inc.php,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** adodb-mysql.inc.php 9 Jan 2003 12:29:53 -0000 1.4 --- adodb-mysql.inc.php 31 Mar 2003 12:01:51 -0000 1.5 *************** *** 1,5 **** <?php /* ! V3.00 6 Jan 2003 (c) 2000-2003 John Lim (jl...@na...). All rights reserved. Released under both BSD license and Lesser GPL library license. Whenever there is any discrepancy between the two licenses, --- 1,5 ---- <?php /* ! V3.31 17 March 2003 (c) 2000-2003 John Lim (jl...@na...). All rights reserved. Released under both BSD license and Lesser GPL library license. Whenever there is any discrepancy between the two licenses, *************** *** 35,38 **** --- 35,39 ---- var $poorAffectedRows = true; var $clientFlags = 0; + var $dbxDriver = 1; function ADODB_mysql() *************** *** 47,50 **** --- 48,72 ---- } + // if magic quotes disabled, use mysql_real_escape_string() + function qstr($s,$magic_quotes=false) + { + if (!$magic_quotes) { + + if (ADODB_PHPVER >= 0x4300) { + if (is_resource($this->_connectionID)) + return "'".mysql_real_escape_string($s,$this->_connectionID)."'"; + else + return "'".mysql_real_escape_string($s)."'"; + } + if ($this->replaceQuote[0] == '\\'){ + $s = adodb_str_replace(array('\\',"\0"),array('\\\\',"\\\0"),$s); + } + return "'".str_replace("'",$this->replaceQuote,$s)."'"; + } + + // undo magic quotes for " + $s = str_replace('\\"','"',$s); + return "'$s'"; + } function _insertid() *************** *** 185,193 **** function _connect($argHostname, $argUsername, $argPassword, $argDatabasename) { ! global $ADODB_PHPVER; ! if ($ADODB_PHPVER >= 0x4300) $this->_connectionID = mysql_connect($argHostname,$argUsername,$argPassword, $this->forceNewConnect,$this->clientFlags); ! else if ($ADODB_PHPVER >= 0x4200) $this->_connectionID = mysql_connect($argHostname,$argUsername,$argPassword, $this->forceNewConnect); --- 207,214 ---- function _connect($argHostname, $argUsername, $argPassword, $argDatabasename) { ! if (ADODB_PHPVER >= 0x4300) $this->_connectionID = mysql_connect($argHostname,$argUsername,$argPassword, $this->forceNewConnect,$this->clientFlags); ! else if (ADODB_PHPVER >= 0x4200) $this->_connectionID = mysql_connect($argHostname,$argUsername,$argPassword, $this->forceNewConnect); *************** *** 203,208 **** function _pconnect($argHostname, $argUsername, $argPassword, $argDatabasename) { ! global $ADODB_PHPVER; ! if ($ADODB_PHPVER >= 0x4300) $this->_connectionID = mysql_pconnect($argHostname,$argUsername,$argPassword,$this->clientFlags); else --- 224,228 ---- function _pconnect($argHostname, $argUsername, $argPassword, $argDatabasename) { ! if (ADODB_PHPVER >= 0x4300) $this->_connectionID = mysql_pconnect($argHostname,$argUsername,$argPassword,$this->clientFlags); else *************** *** 295,301 **** function _query($sql,$inputarr) { ! global $ADODB_COUNTRECS; ! if($ADODB_COUNTRECS) return mysql_query($sql,$this->_connectionID); ! else return mysql_unbuffered_query($sql,$this->_connectionID); // requires PHP >= 4.0.6 } --- 315,322 ---- function _query($sql,$inputarr) { ! //global $ADODB_COUNTRECS; ! //if($ADODB_COUNTRECS) ! return mysql_query($sql,$this->_connectionID); ! //else return @mysql_unbuffered_query($sql,$this->_connectionID); // requires PHP >= 4.0.6 } *************** *** 324,350 **** } - function ActualType($meta) - { - switch($meta) { - case 'C': return 'VARCHAR'; - case 'X': return 'LONGTEXT'; - - case 'C2': return 'VARCHAR'; - case 'X2': return 'LONGTEXT'; - - case 'B': return 'LONGBLOB'; - - case 'D': return 'DATE'; - case 'T': return 'DATETIME'; - case 'L': return 'TINYINT'; - case 'R': return 'INTEGER NOT NULL AUTO_INCREMENT'; - case 'I': return 'INTEGER'; // enough for 9 petabytes! - - case 'F': return 'DOUBLE'; - case 'N': return 'NUMERIC'; - default: - return false; - } - } /* --- 345,348 ---- *************** *** 395,400 **** function _initrs() { ! GLOBAL $ADODB_COUNTRECS; ! $this->_numOfRows = ($ADODB_COUNTRECS) ? @mysql_num_rows($this->_queryID):-1; $this->_numOfFields = @mysql_num_fields($this->_queryID); } --- 393,399 ---- function _initrs() { ! //GLOBAL $ADODB_COUNTRECS; ! // $this->_numOfRows = ($ADODB_COUNTRECS) ? @mysql_num_rows($this->_queryID):-1; ! $this->_numOfRows = @mysql_num_rows($this->_queryID); $this->_numOfFields = @mysql_num_fields($this->_queryID); } *************** *** 451,460 **** function MoveNext() { if (!$this->EOF) { $this->_currentRow++; // using & below slows things down by 20%! $this->fields = @mysql_fetch_array($this->_queryID,$this->fetchMode); - if (is_array($this->fields)) return true; $this->EOF = true; } --- 450,461 ---- function MoveNext() { + //global $ADODB_EXTENSION;if ($ADODB_EXTENSION) return adodb_movenext($this); + if (!$this->EOF) { $this->_currentRow++; // using & below slows things down by 20%! $this->fields = @mysql_fetch_array($this->_queryID,$this->fetchMode); if (is_array($this->fields)) return true; + $this->EOF = true; } *************** *** 471,476 **** function _fetch() { ! $this->fields = @mysql_fetch_array($this->_queryID,$this->fetchMode); ! return (is_array($this->fields)); } --- 472,477 ---- function _fetch() { ! $this->fields = @mysql_fetch_array($this->_queryID,$this->fetchMode); ! return is_array($this->fields); } *************** *** 511,515 **** case 'MEDIUMBLOB': return !empty($fieldobj->binary) ? 'B' : 'X'; ! case 'DATE': return 'D'; --- 512,516 ---- case 'MEDIUMBLOB': return !empty($fieldobj->binary) ? 'B' : 'X'; ! case 'YEAR': case 'DATE': return 'D'; Index: adodb-mysqlt.inc.php =================================================================== RCS file: /cvsroot/moregroupware/mgw/include/adodb/drivers/adodb-mysqlt.inc.php,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** adodb-mysqlt.inc.php 9 Jan 2003 12:29:53 -0000 1.4 --- adodb-mysqlt.inc.php 31 Mar 2003 12:01:52 -0000 1.5 *************** *** 2,6 **** /* ! V3.00 6 Jan 2003 (c) 2000-2003 John Lim (jl...@na...). All rights reserved. Released under both BSD license and Lesser GPL library license. Whenever there is any discrepancy between the two licenses, --- 2,6 ---- /* ! V3.31 17 March 2003 (c) 2000-2003 John Lim (jl...@na...). All rights reserved. Released under both BSD license and Lesser GPL library license. Whenever there is any discrepancy between the two licenses, *************** *** 62,74 **** function MoveNext() ! { if (!$this->EOF) { $this->_currentRow++; // using & below slows things down by 20%! ! $this->fields = @mysql_fetch_array($this->_queryID,$this->fetchMode); ! ! if (is_array($this->fields)) return true; $this->EOF = true; } return false; } --- 62,74 ---- function MoveNext() ! { if (!$this->EOF) { $this->_currentRow++; // using & below slows things down by 20%! ! $this->fields = @mysql_fetch_array($this->_queryID,$this->fetchMode); ! if ($this->fields) return true; $this->EOF = true; } + return false; } Index: adodb-oci8.inc.php =================================================================== RCS file: /cvsroot/moregroupware/mgw/include/adodb/drivers/adodb-oci8.inc.php,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** adodb-oci8.inc.php 9 Jan 2003 12:29:53 -0000 1.4 --- adodb-oci8.inc.php 31 Mar 2003 12:01:54 -0000 1.5 *************** *** 2,6 **** /* ! version V3.00 6 Jan 2003 (c) 2000-2003 John Lim. All rights reserved. Released under both BSD license and Lesser GPL library license. --- 2,6 ---- /* ! version V3.31 17 March 2003 (c) 2000-2003 John Lim. All rights reserved. Released under both BSD license and Lesser GPL library license. *************** *** 71,77 **** function ADODB_oci8() { - global $ADODB_PHPVER; ! $this->_hasOCIFetchStatement = $ADODB_PHPVER >= 0x4200; } --- 71,76 ---- function ADODB_oci8() { ! $this->_hasOCIFetchStatement = ADODB_PHPVER >= 0x4200; } *************** *** 79,92 **** /* ! 4 modes of connection are supported: ! a. $conn->Connect(false,'scott','tiger'); // local database ! b. $conn->Connect(false,'scott','tiger',$tnsname); // from tnsnames.ora ! c. $conn->Connect($serveraddress,'scott,'tiger',$service_name); ! d. $conn->connectSID = true; ! $conn->Connect($serveraddress,'scott,'tiger',$SID); --- 78,96 ---- /* ! Multiple modes of connection are supported: ! a. Local Database ! $conn->Connect(false,'scott','tiger'); ! b. From tnsnames.ora ! $conn->Connect(false,'scott','tiger',$tnsname); ! $conn->Connect($tnsname,'scott','tiger'); ! c. Server + service name ! $conn->Connect($serveraddress,'scott,'tiger',$service_name); ! d. Server + SID ! $conn->connectSID = true; ! $conn->Connect($serveraddress,'scott,'tiger',$SID); *************** *** 106,127 **** */ - // returns true or false function _connect($argHostname, $argUsername, $argPassword, $argDatabasename,$mode=0) { if($argHostname) { // added by Jorma Tuomainen <jor...@pp...> ! if(strpos($argHostname,":")) { ! $argHostinfo=explode(":",$argHostname); ! $argHostname=$argHostinfo[0]; ! $argHostport=$argHostinfo[1]; ! } else { ! $argHostport="1521"; ! } ! ! if ($this->connectSID) { ! $argDatabasename="(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=".$argHostname ! .")(PORT=$argHostport))(CONNECT_DATA=(SID=$argDatabasename)))"; ! } else ! $argDatabasename="(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=".$argHostname ! .")(PORT=$argHostport))(CONNECT_DATA=(SERVICE_NAME=$argDatabasename)))"; } --- 110,133 ---- */ function _connect($argHostname, $argUsername, $argPassword, $argDatabasename,$mode=0) { if($argHostname) { // added by Jorma Tuomainen <jor...@pp...> ! if (empty($argDatabasename)) $argDatabasename = $argHostname; ! else { ! if(strpos($argHostname,":")) { ! $argHostinfo=explode(":",$argHostname); ! $argHostname=$argHostinfo[0]; ! $argHostport=$argHostinfo[1]; ! } else { ! $argHostport="1521"; ! } ! ! if ($this->connectSID) { ! $argDatabasename="(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=".$argHostname ! .")(PORT=$argHostport))(CONNECT_DATA=(SID=$argDatabasename)))"; ! } else ! $argDatabasename="(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=".$argHostname ! .")(PORT=$argHostport))(CONNECT_DATA=(SERVICE_NAME=$argDatabasename)))"; ! } } *************** *** 177,181 **** if (is_string($d)) $d = ADORecordSet::UnixDate($d); ! return "TO_DATE(".date($this->fmtDate,$d).",'".$this->NLS_DATE_FORMAT."')"; } --- 183,187 ---- if (is_string($d)) $d = ADORecordSet::UnixDate($d); ! return "TO_DATE(".adodb_date($this->fmtDate,$d).",'".$this->NLS_DATE_FORMAT."')"; } *************** *** 186,190 **** if (empty($ts) && $ts !== 0) return 'null'; if (is_string($ts)) $ts = ADORecordSet::UnixTimeStamp($ts); ! return 'TO_DATE('.date($this->fmtTimeStamp,$ts).",'RRRR-MM-DD, HH:MI:SS AM')"; } --- 192,196 ---- 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')"; } *************** *** 509,516 **** Example: Note: we return a cursor variable in :RS2 ! $rs = $db->RunCursor("BEGIN adodb.open_tab(:RS2); END;",'RS2'); */ ! function &ExecuteCursor($sql,$cursorName='rs') { $stmt = ADODB_oci8::Prepare($sql); --- 515,527 ---- Example: Note: we return a cursor variable in :RS2 ! $rs = $db->ExecuteCursor("BEGIN adodb.open_tab(:RS2); END;",'RS2'); ! ! $rs = $db->ExecuteCursor( ! "BEGIN :RS2 = adodb.getdata(:VAR1); END;", ! 'RS2', ! array('VAR1' => 'Mr Bean')); */ ! function &ExecuteCursor($sql,$cursorName='rs',$params=false) { $stmt = ADODB_oci8::Prepare($sql); *************** *** 518,521 **** --- 529,538 ---- if (is_array($stmt) && sizeof($stmt) >= 5) { $this->Parameter($stmt, $ignoreCur, $cursorName, false, -1, OCI_B_CURSOR); + if ($params) { + reset($params); + while (list($k,$v) = each($params)) { + $this->Parameter($stmt,$params[$k], $k); + } + } } return $this->Execute($stmt); *************** *** 698,703 **** } ! function MetaPrimaryKeys($table, $owner=false) { // tested with oracle 8.1.7 $table = strtoupper($table); --- 715,722 ---- } ! function MetaPrimaryKeys($table, $owner=false,$internalKey=false) { + if ($internalKey) return array('ROWID'); + // tested with oracle 8.1.7 $table = strtoupper($table); *************** *** 728,754 **** - function ActualType($meta) - { - switch($meta) { - case 'C': return 'VARCHAR'; - case 'X': return 'VARCHAR(4000)'; - - case 'C2': return 'NVARCHAR'; - case 'X2': return 'NVARCHAR(4000)'; - - case 'B': return 'BLOB'; - - case 'D': - case 'T': return 'DATE'; - case 'L': return 'NUMBER(1)'; - case 'R': return false; - case 'I': return 'NUMBER(16)'; // enough for 9 petabytes! - - case 'F': return 'NUMBER'; - case 'N': return 'NUMBER'; - default: - return false; - } - } function CharMax() --- 747,750 ---- *************** *** 832,846 **** $this->_inited = true; - $this->fields = array(); if ($this->_queryID) { $this->_currentRow = 0; - @$this->_initrs(); - $this->EOF = !$this->_fetch(); ! } else { $this->_numOfRows = 0; $this->_numOfFields = 0; --- 828,843 ---- $this->_inited = true; if ($this->_queryID) { $this->_currentRow = 0; @$this->_initrs(); $this->EOF = !$this->_fetch(); ! if (!is_array($this->fields)) { ! $this->_numOfRows = 0; ! $this->fields = array(); ! } } else { + $this->fields = array(); $this->_numOfRows = 0; $this->_numOfFields = 0; *************** *** 886,916 **** } - /** - * return recordset as a 2-dimensional array. - * - * @param [nRows] is the number of rows to return. -1 means every row. - * - * @return an array indexed by the rows (0-based) from the recordset - */ - function GetArray($nRows = -1) - { - // if ($this->_arr) return $this->_arr; - $results = array(); - $cnt = 0; - while (!$this->EOF && $nRows != $cnt) { - $results[$cnt++] = $this->fields; - $this->MoveNext(); - } - return $results; - } // 10% speedup to move MoveNext to child class function MoveNext() { if (!$this->EOF) { $this->_currentRow++; if(@OCIfetchinto($this->_queryID,$this->fields,$this->fetchMode)) return true; - $this->EOF = true; } --- 883,896 ---- } // 10% speedup to move MoveNext to child class function MoveNext() { + //global $ADODB_EXTENSION;if ($ADODB_EXTENSION) return @adodb_movenext($this); + if (!$this->EOF) { $this->_currentRow++; if(@OCIfetchinto($this->_queryID,$this->fields,$this->fetchMode)) return true; $this->EOF = true; } *************** *** 990,994 **** case 'NCLOB': ! case 'LONG': case 'LONG VARCHAR': case 'CLOB'; --- 970,974 ---- case 'NCLOB': ! case 'LONG': case 'LONG VARCHAR': case 'CLOB'; Index: adodb-oci805.inc.php =================================================================== RCS file: /cvsroot/moregroupware/mgw/include/adodb/drivers/adodb-oci805.inc.php,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** adodb-oci805.inc.php 9 Jan 2003 12:29:53 -0000 1.3 --- adodb-oci805.inc.php 31 Mar 2003 12:01:54 -0000 1.4 *************** *** 1,5 **** <?php /** ! * @version V3.00 6 Jan 2003 (c) 2000-2003 John Lim (jl...@na...). All rights reserved. * Released under both BSD license and Lesser GPL library license. * Whenever there is any discrepancy between the two licenses, --- 1,5 ---- <?php /** ! * @version V3.31 17 March 2003 (c) 2000-2003 John Lim (jl...@na...). All rights reserved. * Released under both BSD license and Lesser GPL library license. * Whenever there is any discrepancy between the two licenses, Index: adodb-oci8po.inc.php =================================================================== RCS file: /cvsroot/moregroupware/mgw/include/adodb/drivers/adodb-oci8po.inc.php,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** adodb-oci8po.inc.php 9 Jan 2003 12:29:53 -0000 1.4 --- adodb-oci8po.inc.php 31 Mar 2003 12:01:54 -0000 1.5 *************** *** 1,5 **** <?php /* ! V3.00 6 Jan 2003 (c) 2000-2003 John Lim. All rights reserved. Released under both BSD license and Lesser GPL library license. Whenever there is any discrepancy between the two licenses, --- 1,5 ---- <?php /* ! V3.31 17 March 2003 (c) 2000-2003 John Lim. All rights reserved. Released under both BSD license and Lesser GPL library license. Whenever there is any discrepancy between the two licenses, *************** *** 23,26 **** --- 23,27 ---- var $databaseType = 'oci8po'; var $dataProvider = 'oci8'; + var $metaColumnsSQL = "select lower(cname),coltype,width from col where tname='%s' order by colno"; function Prepare($sql) *************** *** 53,56 **** --- 54,58 ---- return ADODB_oci8::_query($sql,$inputarr); } + } *************** *** 108,112 **** return true; } - $this->EOF = true; } --- 110,113 ---- *************** *** 133,137 **** } ! // Uggh - a useless slowdown function _updatefields() { --- 134,138 ---- } ! // Create associative array function _updatefields() { *************** *** 154,158 **** { $ret = @OCIfetchinto($this->_queryID,$this->fields,$this->fetchMode); ! if ($ret && $this->fetchMode & OCI_ASSOC) $this->_updatefields(); return $ret; } --- 155,161 ---- { $ret = @OCIfetchinto($this->_queryID,$this->fields,$this->fetchMode); ! if ($ret) { ! if ($this->fetchMode & OCI_ASSOC) $this->_updatefields(); ! } return $ret; } Index: adodb-odbc.inc.php =================================================================== RCS file: /cvsroot/moregroupware/mgw/include/adodb/drivers/adodb-odbc.inc.php,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** adodb-odbc.inc.php 9 Jan 2003 12:29:53 -0000 1.4 --- adodb-odbc.inc.php 31 Mar 2003 12:01:56 -0000 1.5 *************** *** 1,5 **** <?php /* ! V3.00 6 Jan 2003 (c) 2000-2003 John Lim (jl...@na...). All rights reserved. Released under both BSD license and Lesser GPL library license. Whenever there is any discrepancy between the two licenses, --- 1,5 ---- <?php /* ! V3.31 17 March 2003 (c) 2000-2003 John Lim (jl...@na...). All rights reserved. Released under both BSD license and Lesser GPL library license. Whenever there is any discrepancy between the two licenses, *************** *** 38,51 **** function ADODB_odbc() { ! global $ADODB_PHPVER; ! $this->_haserrorfunctions = $ADODB_PHPVER >= 0x4050; ! $this->_has_stupid_odbc_fetch_api_change = $ADODB_PHPVER >= 0x4200; } function ServerInfo() { - global $ADODB_PHPVER; ! if (!empty($this->host) && $ADODB_PHPVER >= 0x4300) { $dsn = strtoupper($this->host); $first = true; --- 38,49 ---- function ADODB_odbc() { ! $this->_haserrorfunctions = ADODB_PHPVER >= 0x4050; ! $this->_has_stupid_odbc_fetch_api_change = ADODB_PHPVER >= 0x4200; } function ServerInfo() { ! if (!empty($this->host) && ADODB_PHPVER >= 0x4300) { $dsn = strtoupper($this->host); $first = true; *************** *** 247,250 **** --- 245,249 ---- //print_r($rs); $arr = $rs->GetArray(); + ... [truncated message content] |