1## 4.990/5.05 - 11 Jul 2008
2
3- Added support for multiple recordsets in mysqli Geisel Sierote <geisel#4up.com.br>. See PHPLens Issue No: 15917
4- Malcolm Cook added new Reload() function to Active Record. See PHPLens Issue No: 17474
5- Thanks Zoltan Monori [monzol#fotoprizma.hu] for bug fixes in iterator, SelectLimit, GetRandRow, etc.
6- Under heavy loads, the performance monitor for oci8 disables Ixora views.
7- Fixed sybase driver SQLDate to use str_replace(). Also for adodb5, changed sybase driver UnixDate and UnixTimeStamp calls to static.
8- Changed oci8 lob handler to use &amp; reference $this-&gt;_refLOBs[$numlob]['VAR'] = &amp;$var.
9- We now strtolower the get_class() function in PEAR::isError() for php5 compat.
10- CacheExecute did not retrieve cache recordsets properly for 5.04 (worked in 4.98). Fixed.
11- New ADODB_Cache_File class for file caching defined in adodb.inc.php.
12- Farsi language file contribution by Peyman Hooshmandi Raad (phooshmand#gmail.com)
13- New API for creating your custom caching class which is stored in $ADODB_CACHE:
14  ```
15include "/path/to/adodb.inc.php";
16$ADODB_CACHE_CLASS = 'MyCacheClass';
17
18class MyCacheClass extends ADODB_Cache_File
19{
20	function writecache($filename, $contents,$debug=false){...}
21	function &readcache($filename, &$err, $secs2cache, $rsClass){ ...}
22		:
23}
24
25$DB = NewADOConnection($driver);
26$DB->Connect(...);  ## MyCacheClass created here and stored in $ADODB_CACHE global variable.
27
28$data = $rs->CacheGetOne($sql); ## MyCacheClass is used here for caching...
29  ```
30- Memcache supports multiple pooled hosts now. Only if none of the pooled servers can be contacted will a connect error be generated. Usage example below:
31  ```
32$db = NewADOConnection($driver);
33$db->memCache = true; /// should we use memCache instead of caching in files
34$db->memCacheHost = array($ip1, $ip2, $ip3); /// $db->memCacheHost = $ip1; still works
35$db->memCachePort = 11211; /// this is default memCache port
36$db->memCacheCompress = false; /// Use 'true' to store the item compressed (uses zlib)
37
38$db->Connect(...);
39$db->CacheExecute($sql);
40  ```
41
42## 4.98/5.04 - 13 Feb 2008
43
44- Fixed adodb_mktime problem which causes a performance bottleneck in $hrs.
45- Added mysqli support to adodb_getcount().
46- Removed MYSQLI_TYPE_CHAR from MetaType().
47
48## 4.97/5.03 - 22 Jan 2008
49
50- Active Record: $ADODB_ASSOC_CASE=1 did not work properly. Fixed.
51- Modified Fields() in recordset class to support display null fields in FetchNextObject().
52- In ADOdb5, active record implementation, we now support column names with spaces in them - we autoconvert the spaces to _ using __set(). Thx Daniel Cook. PHPLens Issue No: 17200
53- Removed $arg3 from mysqli SelectLimit. See PHPLens Issue No: 16243. Thx Zsolt Szeberenyi.
54- Changed oci8 FetchField, which returns the max_length of BLOB/CLOB/NCLOB as 4000 (incorrectly) to -1.
55- CacheExecute would sometimes return an error on Windows if it was unable to lock the cache file. This is harmless and has been changed to a warning that can be ignored. Also adodb_write_file() code revised.
56- ADOdb perf code changed to only log sql if execution time &gt;= 0.05 seconds. New $ADODB_PERF_MIN variable holds min sql timing. Any SQL with timing value below this and is not causing an error is not logged.
57- Also adodb_backtrace() now traces 1 level deeper as sometimes actual culprit function is not displayed.
58- Fixed a group by problem with adodb_getcount() for db's which are not postgres/oci8 based.
59- Changed mssql driver Parameter() from SQLCHAR to SQLVARCHAR: case 'string': $type = SQLVARCHAR; break.
60- Problem with mssql driver in php5 (for adodb 5.03) because some functions are not static. Fixed.
61
62## 4.96/5.02 - 24 Sept 2007
63
64ADOdb perf for oci8 now has non-table-locking code when clearing the sql. Slower but better transparency. Added in 4.96a and 5.02a.
65Fix adodb count optimisation. Preg_match did not work properly. Also rewrote the ORDER BY stripping code in _adodb_getcount(), adodb-lib.inc.php.
66SelectLimit for oci8 not optimal for large recordsets when offset=0. Changed $nrows check.
67Active record optimizations. Added support for assoc arrays in Set().
68Now GetOne returns null if EOF (no records found), and false if error occurs. Use ErrorMsg()/ErrorNo() to get the error.
69Also CacheGetRow and CacheGetCol will return false if error occurs, or empty array() if EOF, just like GetRow and GetCol.
70Datadict now allows changing of types which are not resizable, eg. VARCHAR to TEXT in ChangeTableSQL. -- Mateo Tibaquirá
71Added BIT data type support to adodb-ado.inc.php and adodb-ado5.inc.php.
72Ldap driver did not return actual ldap error messages. Fixed.
73Implemented GetRandRow($sql, $inputarr). Optimized for Oci8.
74Changed adodb5 active record to use static SetDatabaseAdapter() and removed php4 constructor. Bas van Beek bas.vanbeek#gmail.com.
75Also in adodb5, changed adodb-session2 to use static function declarations in class. Thx Daniel Berlin.
76Added "Clear SQL Log" to bottom of Performance screen.
77Sessions2 code echo'ed directly to the screen in debug mode. Now uses ADOConnection::outp().
78In mysql/mysqli, qstr(null) will return the string "null" instead of empty quoted string "''".
79postgresql optimizeTable in perf-postgres.inc.php added by Daniel Berlin (mail#daniel-berlin.de)
80Added 5.2.1 compat code for oci8.
81Changed @@identity to SCOPE_IDENTITY() for multiple mssql drivers. Thx Stefano Nari.
82Code sanitization introduced in 4.95 caused problems in European locales (as float 3.2 was typecast to 3,2). Now we only sanitize if is_numeric fails.
83Added support for customizing ADORecordset_empty using $this-&gt;rsPrefix.'empty'. By Josh Truwin.
84Added proper support for ALterColumnSQL for Postgresql in datadict code. Thx. Josh Truwin.
85Added better support for MetaType() in mysqli when using an array recordset.
86Changed parser for pgsql error messages in adodb-error.inc.php to case-insensitive regex.
87
88## 4.95/5.01 - 17 May 2007
89
90CacheFlush debug outp() passed in invalid parameters. Fixed.
91Added Thai language file for adodb. Thx Trirat Petchsingh rosskouk#gmail.com
92and Marcos Pont
93Added zerofill checking support to MetaColumns for mysql and mysqli.
94CacheFlush no longer deletes all files/directories. Only *.cache files
95deleted.
96DB2 timestamp format changed to var $fmtTimeStamp =
97&quot;'Y-m-d-H:i:s'&quot;;
98Added some code sanitization to AutoExecute in adodb-lib.inc.php.
99Due to typo, all connections in adodb-oracle.inc.php would become
100persistent, even non-persistent ones. Fixed.
101Oci8 DBTimeStamp uses 24 hour time for input now, so you can perform string
102comparisons between 2 DBTimeStamp values.
103Some PHP4.4 compat issues fixed in adodb-session2.inc.php
104For ADOdb 5.01, fixed some adodb-datadict.inc.php MetaType compat issues
105with PHP5.
106The $argHostname was wiped out in adodb-ado5.inc.php. Fixed.
107Adodb5 version, added iterator support for adodb_recordset_empty.
108Adodb5 version,more error checking code now will use exceptions if
109available.
110