1<?xml version="1.0" encoding="UTF-8"?>
2<package packagerversion="1.9.4" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0 http://pear.php.net/dtd/tasks-1.0.xsd http://pear.php.net/dtd/package-2.0 http://pear.php.net/dtd/package-2.0.xsd">
3 <name>MDB2</name>
4 <channel>pear.php.net</channel>
5 <extends>MDB</extends>
6 <summary>database abstraction layer</summary>
7 <description>PEAR MDB2 is a merge of the PEAR DB and Metabase php database abstraction layers.
8
9It provides a common API for all supported RDBMS. The main difference to most
10other DB abstraction packages is that MDB2 goes much further to ensure
11portability. MDB2 provides most of its many features optionally that
12can be used to construct portable SQL statements:
13* Object-Oriented API
14* A DSN (data source name) or array format for specifying database servers
15* Datatype abstraction and on demand datatype conversion
16* Various optional fetch modes to fix portability issues
17* Portable error codes
18* Sequential and non sequential row fetching as well as bulk fetching
19* Ability to make buffered and unbuffered queries
20* Ordered array and associative array for the fetched rows
21* Prepare/execute (bind) named and unnamed placeholder emulation
22* Sequence/autoincrement emulation
23* Replace emulation
24* Limited sub select emulation
25* Row limit emulation
26* Transactions/savepoint support
27* Large Object support
28* Index/Unique Key/Primary Key support
29* Pattern matching abstraction
30* Module framework to load advanced functionality on demand
31* Ability to read the information schema
32* RDBMS management methods (creating, dropping, altering)
33* Reverse engineering schemas from an existing database
34* SQL function call abstraction
35* Full integration into the PEAR Framework
36* PHPDoc API documentation</description>
37 <lead>
38  <name>Lukas Kahwe Smith</name>
39  <user>lsmith</user>
40  <email>smith@pooteeweet.org</email>
41  <active>no</active>
42 </lead>
43 <lead>
44  <name>Lorenzo Alberton</name>
45  <user>quipo</user>
46  <email>l.alberton@quipo.it</email>
47  <active>yes</active>
48 </lead>
49 <lead>
50  <name>Daniel Convissor</name>
51  <user>danielc</user>
52  <email>danielc@php.net</email>
53  <active>yes</active>
54 </lead>
55 <contributor>
56  <name>Paul Cooper</name>
57  <user>pgc</user>
58  <email>pgc@ucecom.com</email>
59  <active>no</active>
60 </contributor>
61 <helper>
62  <name>David Coallier</name>
63  <user>davidc</user>
64  <email>david@jaws.com.mx</email>
65  <active>yes</active>
66 </helper>
67 <helper>
68  <name>Ali Fazelzadeh</name>
69  <user>afz</user>
70  <email>afz@dev-code.com</email>
71  <active>yes</active>
72 </helper>
73 <date>2012-10-29</date>
74 <time>15:41:51</time>
75 <version>
76  <release>2.5.0b5</release>
77  <api>2.5.0b5</api>
78 </version>
79 <stability>
80  <release>beta</release>
81  <api>beta</api>
82 </stability>
83 <license>BSD License</license>
84 <notes>
85- fixed bug #18494: _compareIntegerDefinition() ignores length change.
86- fixed bug #16280: compareDefinition() turns NULL defaults into empty strings for NOT NULL columns.
87- fixed bug #19677: Call to undefined function: MDB2_Driver_mysql::isError()
88
89open todo items:
90- handle autoincrement fields in alterTable()
91- add length handling to LOB reverse engineering
92- add EXPLAIN abstraction
93- add cursor support along the lines of PDO (Request #3660 etc.)
94- add PDO based drivers, especially a driver to support SQLite 3 (Request #6907)
95- add support to export/import in CSV format
96- add more functions to the Function module (MD5(), IFNULL(), etc.)
97- add support for database/table/row LOCKs
98- add support for CHECK (ENUM as possible mysql fallback) constraints
99- generate STATUS file from test suite results and allow users to submit test results
100- add support for full text index creation and querying
101- add tests to check if the RDBMS specific handling with portability options
102  disabled behaves as expected
103- handle implicit commits (like for DDL) in any affected driver (mysql, sqlite..)
104- add a getTableFieldsDefinitions() method to be used in tableInfo()
105- drop ILIKE from matchPattern() and instead add a second parameter to
106  handle case sensitivity with arbitrary operators
107- handle LOBs in buffered result sets (Request #8793)
108 </notes>
109 <contents>
110  <dir baseinstalldir="/" name="/">
111   <file baseinstalldir="/" md5sum="5a689ee5fa18f686905e6bd55bea11be" name="docs/examples/example.php" role="doc">
112    <tasks:replace from="@package_version@" to="version" type="package-info" />
113   </file>
114   <file baseinstalldir="/" md5sum="a89ca12c63535e42b75c5c1177689747" name="docs/examples/example_php5.php" role="doc">
115    <tasks:replace from="@package_version@" to="version" type="package-info" />
116   </file>
117   <file baseinstalldir="/" md5sum="74b2bb45de61eccbffed7d75d5268af9" name="docs/examples/metapear_test_db.schema" role="doc">
118    <tasks:replace from="@package_version@" to="version" type="package-info" />
119   </file>
120   <file baseinstalldir="/" md5sum="a253b37e185622112acfef6c94b79aef" name="docs/CONTRIBUTORS" role="doc">
121    <tasks:replace from="@package_version@" to="version" type="package-info" />
122   </file>
123   <file baseinstalldir="/" md5sum="fb6255492763a38f2ad95d86e7ccbbf1" name="docs/datatypes.html" role="doc">
124    <tasks:replace from="@package_version@" to="version" type="package-info" />
125   </file>
126   <file baseinstalldir="/" md5sum="a70b17bcd8e56911f74a4dff61a3ff8d" name="docs/MAINTAINERS" role="doc">
127    <tasks:replace from="@package_version@" to="version" type="package-info" />
128   </file>
129   <file baseinstalldir="/" md5sum="c7b68ea23aa2ae6d91913703a2246f15" name="docs/README" role="doc">
130    <tasks:replace from="@package_version@" to="version" type="package-info" />
131   </file>
132   <file baseinstalldir="/" md5sum="9eca356459bd2c74976e2dc08114ccdd" name="docs/STATUS" role="doc">
133    <tasks:replace from="@package_version@" to="version" type="package-info" />
134   </file>
135   <file baseinstalldir="/" md5sum="ec0c4383ddfd3af69d577344d0d5b4dd" name="docs/TODO" role="doc">
136    <tasks:replace from="@package_version@" to="version" type="package-info" />
137   </file>
138   <file baseinstalldir="/" md5sum="76f4aef169e3249e89946b1a4ee1e72e" name="MDB2/Driver/Datatype/Common.php" role="php">
139    <tasks:replace from="@package_version@" to="version" type="package-info" />
140   </file>
141   <file baseinstalldir="/" md5sum="06ac8297c5b84810e244ef3f296c9909" name="MDB2/Driver/Function/Common.php" role="php">
142    <tasks:replace from="@package_version@" to="version" type="package-info" />
143   </file>
144   <file baseinstalldir="/" md5sum="1f2671765f855b4e42317584c5c5cefc" name="MDB2/Driver/Manager/Common.php" role="php">
145    <tasks:replace from="@package_version@" to="version" type="package-info" />
146   </file>
147   <file baseinstalldir="/" md5sum="977e6c68269ab679f233bf72cfa46db6" name="MDB2/Driver/Native/Common.php" role="php">
148    <tasks:replace from="@package_version@" to="version" type="package-info" />
149   </file>
150   <file baseinstalldir="/" md5sum="7ede6c3c81506349871e68949ff4cbe9" name="MDB2/Driver/Reverse/Common.php" role="php">
151    <tasks:replace from="@package_version@" to="version" type="package-info" />
152   </file>
153   <file baseinstalldir="/" md5sum="9431ecf0ca9aa4be2278b5a67d56692f" name="MDB2/Date.php" role="php">
154    <tasks:replace from="@package_version@" to="version" type="package-info" />
155   </file>
156   <file baseinstalldir="/" md5sum="bb05a17304899664eeef90d4185d2c90" name="MDB2/Extended.php" role="php">
157    <tasks:replace from="@package_version@" to="version" type="package-info" />
158   </file>
159   <file baseinstalldir="/" md5sum="dff24e2d856068d6ae716289fc5fa602" name="MDB2/Iterator.php" role="php">
160    <tasks:replace from="@package_version@" to="version" type="package-info" />
161   </file>
162   <file baseinstalldir="/" md5sum="0995b814a2269ee98e56810ee7c56743" name="MDB2/LOB.php" role="php">
163    <tasks:replace from="@package_version@" to="version" type="package-info" />
164   </file>
165   <file baseinstalldir="/" md5sum="495ce610af17e85504bcaa4948dd674b" name="tests/Nonstandard/Base.php" role="test" />
166   <file baseinstalldir="/" md5sum="88180b869efe23dcc10dc335d1a86cc9" name="tests/Nonstandard/SqlservHelper.php" role="test" />
167   <file baseinstalldir="/" md5sum="6154365fbc935bff18d09ce85631c591" name="tests/Standard/Abstract.php" role="test" />
168   <file baseinstalldir="/" md5sum="4c1b01bcbff9f867fcc4334bfc1e5741" name="tests/Standard/ApiTest.php" role="test" />
169   <file baseinstalldir="/" md5sum="867da09d597872d66b475319b63147f0" name="tests/Standard/BugsTest.php" role="test" />
170   <file baseinstalldir="/" md5sum="4805340558ca79c65620450a716a33ba" name="tests/Standard/DatatypeTest.php" role="test" />
171   <file baseinstalldir="/" md5sum="49b9e7b6b6734038e8d099571e1c75b8" name="tests/Standard/ExtendedTest.php" role="test" />
172   <file baseinstalldir="/" md5sum="fca11883f6012a7b22bf37341b3ca8bb" name="tests/Standard/FunctionTest.php" role="test" />
173   <file baseinstalldir="/" md5sum="124d2c68bfc8dc924f0a31201c98134e" name="tests/Standard/InternalsTest.php" role="test">
174    <tasks:replace from="@package_version@" to="version" type="package-info" />
175   </file>
176   <file baseinstalldir="/" md5sum="55dd0b2ab097bed18f472116f5b55eae" name="tests/Standard/ManagerTest.php" role="test" />
177   <file baseinstalldir="/" md5sum="7d65b9467fc024c78ea45698cf0bae0d" name="tests/Standard/ReverseTest.php" role="test" />
178   <file baseinstalldir="/" md5sum="359888848e14308dc4d22fa4c292aa09" name="tests/Standard/UsageTest.php" role="test" />
179   <file baseinstalldir="/" md5sum="a4ad7d4f5bb1caf918d6922674dd1c41" name="tests/AllTests.php" role="test" />
180   <file baseinstalldir="/" md5sum="5ef86f767c99dc2fdf5ee9ac5a0db9a6" name="tests/autoload.inc" role="test">
181    <tasks:replace from="@php_dir@" to="php_dir" type="pear-config" />
182   </file>
183   <file baseinstalldir="/" md5sum="8a1c23383cab0a3aa2c5e977c5cfdc49" name="tests/Debug.php" role="test" />
184   <file baseinstalldir="/" md5sum="e9d8a45ae62be18000f51a08c5cdf143" name="tests/dsn.inc" role="test" />
185   <file baseinstalldir="/" md5sum="dd740b466aff47209486c0a967cef86a" name="tests/functions.inc" role="test" />
186   <file baseinstalldir="/" md5sum="64882e6a2b9bd1b459c0c52f34db396b" name="tests/import.schema.php" role="test" />
187   <file baseinstalldir="/" md5sum="997685ec0ba37bd6a2db8e9ec728e61c" name="tests/README" role="test" />
188   <file baseinstalldir="/" md5sum="8f37058a24d6b0b343370452483595ea" name="tests/schema.xml" role="test" />
189   <file baseinstalldir="/" md5sum="a5019765abfd14334f25231c61c568ef" name="LICENSE" role="data" />
190   <file baseinstalldir="/" md5sum="e5bd768cca253a9ff668b3c0afe07396" name="MDB2.php" role="php">
191    <tasks:replace from="@package_version@" to="version" type="package-info" />
192   </file>
193  </dir>
194 </contents>
195 <dependencies>
196  <required>
197   <php>
198    <min>5.2.0</min>
199   </php>
200   <pearinstaller>
201    <min>1.9.1</min>
202   </pearinstaller>
203   <package>
204    <name>PEAR</name>
205    <channel>pear.php.net</channel>
206    <min>1.3.6</min>
207   </package>
208  </required>
209  <group hint="Frontbase SQL driver for MDB2" name="fbsql">
210   <subpackage>
211    <name>MDB2_Driver_fbsql</name>
212    <channel>pear.php.net</channel>
213    <min>0.3.0</min>
214   </subpackage>
215  </group>
216  <group hint="Interbase/Firebird driver for MDB2" name="ibase">
217   <subpackage>
218    <name>MDB2_Driver_ibase</name>
219    <channel>pear.php.net</channel>
220    <min>1.5.0b4</min>
221   </subpackage>
222  </group>
223  <group hint="MS SQL Server driver for MDB2" name="mssql">
224   <subpackage>
225    <name>MDB2_Driver_mssql</name>
226    <channel>pear.php.net</channel>
227    <min>1.5.0b4</min>
228   </subpackage>
229  </group>
230  <group hint="MySQL driver for MDB2" name="mysql">
231   <subpackage>
232    <name>MDB2_Driver_mysql</name>
233    <channel>pear.php.net</channel>
234    <min>1.5.0b4</min>
235   </subpackage>
236  </group>
237  <group hint="MySQLi driver for MDB2" name="mysqli">
238   <subpackage>
239    <name>MDB2_Driver_mysqli</name>
240    <channel>pear.php.net</channel>
241    <min>1.5.0b4</min>
242   </subpackage>
243  </group>
244  <group hint="Oracle driver for MDB2" name="oci8">
245   <subpackage>
246    <name>MDB2_Driver_oci8</name>
247    <channel>pear.php.net</channel>
248    <min>1.5.0b4</min>
249   </subpackage>
250  </group>
251  <group hint="ODBC driver for MDB2" name="odbc">
252   <subpackage>
253    <name>MDB2_Driver_odbc</name>
254    <channel>pear.php.net</channel>
255    <min>0.2.0</min>
256   </subpackage>
257  </group>
258  <group hint="PostgreSQL driver for MDB2" name="pgsql">
259   <subpackage>
260    <name>MDB2_Driver_pgsql</name>
261    <channel>pear.php.net</channel>
262    <min>1.5.0b4</min>
263   </subpackage>
264  </group>
265  <group hint="Querysim driver for MDB2" name="querysim">
266   <subpackage>
267    <name>MDB2_Driver_querysim</name>
268    <channel>pear.php.net</channel>
269    <min>0.7.0</min>
270   </subpackage>
271  </group>
272  <group hint="SQLite2 driver for MDB2" name="sqlite">
273   <subpackage>
274    <name>MDB2_Driver_sqlite</name>
275    <channel>pear.php.net</channel>
276    <min>1.5.0b4</min>
277   </subpackage>
278  </group>
279  <group hint="MS SQL Server driver for MDB2" name="sqlsrv">
280   <subpackage>
281    <name>MDB2_Driver_sqlsrv</name>
282    <channel>pear.php.net</channel>
283    <min>1.5.0b5</min>
284   </subpackage>
285  </group>
286 </dependencies>
287 <phprelease />
288 <changelog>
289  <release>
290   <version>
291    <release>2.5.0b5</release>
292    <api>2.5.0b5</api>
293   </version>
294   <stability>
295    <release>beta</release>
296    <api>beta</api>
297   </stability>
298   <date>2012-10-29</date>
299   <license>BSD License</license>
300   <notes>
301- fixed bug #18494: _compareIntegerDefinition() ignores length change.
302- fixed bug #16280: compareDefinition() turns NULL defaults into empty strings for NOT NULL columns.
303- fixed bug #19677: Call to undefined function: MDB2_Driver_mysql::isError()
304
305open todo items:
306- handle autoincrement fields in alterTable()
307- add length handling to LOB reverse engineering
308- add EXPLAIN abstraction
309- add cursor support along the lines of PDO (Request #3660 etc.)
310- add PDO based drivers, especially a driver to support SQLite 3 (Request #6907)
311- add support to export/import in CSV format
312- add more functions to the Function module (MD5(), IFNULL(), etc.)
313- add support for database/table/row LOCKs
314- add support for CHECK (ENUM as possible mysql fallback) constraints
315- generate STATUS file from test suite results and allow users to submit test results
316- add support for full text index creation and querying
317- add tests to check if the RDBMS specific handling with portability options
318  disabled behaves as expected
319- handle implicit commits (like for DDL) in any affected driver (mysql, sqlite..)
320- add a getTableFieldsDefinitions() method to be used in tableInfo()
321- drop ILIKE from matchPattern() and instead add a second parameter to
322  handle case sensitivity with arbitrary operators
323- handle LOBs in buffered result sets (Request #8793)
324   </notes>
325  </release>
326  <release>
327   <version>
328    <release>2.5.0b4</release>
329    <api>2.5.0b4</api>
330   </version>
331   <stability>
332    <release>beta</release>
333    <api>beta</api>
334   </stability>
335   <date>2012-10-23</date>
336   <license>BSD License</license>
337   <notes>
338- MDB2 is now E_STRICT compliant! [danielc]
339- Fix Bug #9502: Strong typing query result misbehaves [danielc]
340- Fix Bug #16508: mdb2-2.5.0b1 not working with PHP 5.3.0 [quipo]
341- Fix Bug #17552: MDB2_Driver_Manager_ibase::listTableConstraints returns list of indices [quipo]
342- Fix Bug #17890: Improper use of array_search in psgsql.php v1.173  prepare function [quipo]
343- Fix Bug #18050: Many &amp;quot;Deprecated&amp;quot; [quipo]
344- Fix Bug #18175: Using MDB2::factory raises fatal error [quipo]
345- Fix Bug #18203: Type introspection breaks with associative arrays if names are identical [danielc] (patch by Peter Bex)
346- Fix Bug #18398: non-static functions called statically [danielc]
347- Fix Bug #18427: Notices appear while debugging [quipo]
348- Fix Bug #18721: DSN URLs do not support &amp;quot;@&amp;quot; in database names [danielc]
349- Fix Bug #18826: Crash and security problem with is_a() in combination with value escaping [doconnor]
350- Fix Bug #18886: Deprecated code generates warnings [astembridge]
351- Fix Bug #18978: upgrade from alpha2 to beta3 breaks iterator.php [danielc]
352- Fix Bug #19008: remove error_reporting (for PEAR QA team) [danielc]
353- Fix Bug #19136: Infinite Recurcsion makes result object unuseable [danielc]
354- Fix Bug #19148: &amp;quot;undefined variable result&amp;quot; in MDB2_Driver_Common::_wrapQuery() [danielc]
355- Fix Bug #19191: Have dropSequence() return MDB2_OK on success, as documented [danielc]
356- Fix Bug #19192: Have createSequence() return MDB2_OK on success, as documented [danielc]
357- Fix Bug #19193: Have createConstraint() return MDB2_OK on success, as documented [danielc]
358- Fix Bug #19194: Have dropConstraint() return MDB2_OK on success, as documented [danielc]
359- Fix Bug #19195: Have createIndex() return MDB2_OK on success, as documented [danielc]
360- Fix Bug #19196: Have vacuum() return MDB2_OK on success, as documented [danielc]
361- Fix Bug #19199: Have dropTable() return MDB2_OK on success, as documented [danielc]
362- Fix Bug #19200: Have alterTable() return MDB2_OK on success, as documented [danielc]
363- Fix Bug #19201: Have truncateTable() return MDB2_OK on success, as documented [danielc]
364- Fix Bug #19202: sqlite foreign key violations produce generic MDB2_ERROR [danielc]
365- Fix Bug #19262: Fetchmode constants WERE bitwise [gauthierm]
366- Implement Feature #17367: Documentation Sync Drift [quipo]
367- Implement Feature #18759: User note that is a documentation problem [danielc]
368- small performance tweaks
369
370open todo items:
371- handle autoincrement fields in alterTable()
372- add length handling to LOB reverse engineering
373- add EXPLAIN abstraction
374- add cursor support along the lines of PDO (Request #3660 etc.)
375- add PDO based drivers, especially a driver to support SQLite 3 (Request #6907)
376- add support to export/import in CSV format
377- add more functions to the Function module (MD5(), IFNULL(), etc.)
378- add support for database/table/row LOCKs
379- add support for CHECK (ENUM as possible mysql fallback) constraints
380- generate STATUS file from test suite results and allow users to submit test results
381- add support for full text index creation and querying
382- add tests to check if the RDBMS specific handling with portability options
383  disabled behaves as expected
384- handle implicit commits (like for DDL) in any affected driver (mysql, sqlite..)
385- add a getTableFieldsDefinitions() method to be used in tableInfo()
386- drop ILIKE from matchPattern() and instead add a second parameter to
387  handle case sensitivity with arbitrary operators
388- handle LOBs in buffered result sets (Request #8793)
389   </notes>
390  </release>
391  <release>
392   <version>
393    <release>2.5.0b3</release>
394    <api>2.5.0b3</api>
395   </version>
396   <stability>
397    <release>beta</release>
398    <api>beta</api>
399   </stability>
400   <date>2010-08-29</date>
401   <license>BSD License</license>
402   <notes>
403- fixed bug #15912: MDB2::loadClass can return MDB2_OK without loading class
404- fixed bug #16020: unable to set params via dsn string in parseDSN()
405- fixed bug #16508: reusing var name + return by ref [rix0r]
406- fixed bug #16727: quote(url, &apos;clob&apos;)) fetches URL even if lob_allow_url_include option is false
407- fixed unreported bug in parseDSN() and oracle&apos;s Easy Connect syntax
408- fixed bug #16973 and #17039: Wrong _skipDelimitedStrings behavior with escaped quotes
409- fixed bug #16994: incompatible declaration of setTransactionIsolation() in some drivers
410- dropped PHP 4 support
411- PHP 5.3 compatibility fixes
412- performance tweaks (reduced number of internal function calls)
413- added new sqlsrv driver (native SQL Server driver) [Chris Pucci, Mike Ketcham]
414- added new ODBC experimental driver [pschellhaas]
415- Switched test suite to PHPUnit 3.5
416
417open todo items:
418- handle autoincrement fields in alterTable()
419- add length handling to LOB reverse engineering
420- add EXPLAIN abstraction
421- add cursor support along the lines of PDO (Request #3660 etc.)
422- add PDO based drivers, especially a driver to support SQLite 3 (Request #6907)
423- add support to export/import in CSV format
424- add more functions to the Function module (MD5(), IFNULL(), etc.)
425- add support for database/table/row LOCKs
426- add support for CHECK (ENUM as possible mysql fallback) constraints
427- generate STATUS file from test suite results and allow users to submit test results
428- add support for full text index creation and querying
429- add tests to check if the RDBMS specific handling with portability options
430  disabled behaves as expected
431- handle implicit commits (like for DDL) in any affected driver (mysql, sqlite..)
432- add a getTableFieldsDefinitions() method to be used in tableInfo()
433- drop ILIKE from matchPattern() and instead add a second parameter to
434  handle case sensitivity with arbitrary operators
435- handle LOBs in buffered result sets (Request #8793)
436   </notes>
437  </release>
438  <release>
439   <version>
440    <release>2.5.0b2</release>
441    <api>2.5.0b2</api>
442   </version>
443   <stability>
444    <release>beta</release>
445    <api>beta</api>
446   </stability>
447   <date>2009-01-14</date>
448   <license>BSD License</license>
449   <notes>
450- fixed bug #12117: disconnect() does not work as documented
451- fixed bug #12912: replace() documentation
452- fixed bug #13811: _skipDelimitedStrings() fails on empty strings
453- fixed bug #13898: more tolerant check for &apos;new_link&apos; DSN option
454- request #13929: added &apos;default_fk_action_ondelete&apos; and &apos;default_fk_action_onupdate&apos;
455  options for default FOREIGN KEY constraints actions
456- fixed bug #14124: _skipDelimitedStrings() and prepare() fail with sql comments
457  inside quoted strings
458- fixed bug #14179: declaration of MDB2_Driver_Common::raiseError() must be
459  compatible with that of PEAR::raiseError()
460- fixed doc bug #14290: connect should mention the type of object returned
461- fixed bug #14831: $ignores in _skipDelimitedStrings() [patch by Aleksander Machniak]
462
463open todo items:
464- handle autoincrement fields in alterTable()
465- add length handling to LOB reverse engineering
466- add EXPLAIN abstraction
467- add cursor support along the lines of PDO (Request #3660 etc.)
468- add PDO based drivers, especially a driver to support SQLite 3 (Request #6907)
469- add support to export/import in CSV format
470- add more functions to the Function module (MD5(), IFNULL(), etc.)
471- add support for database/table/row LOCKs
472- add support for CHECK (ENUM as possible mysql fallback) constraints
473- generate STATUS file from test suite results and allow users to submit test results
474- add support for full text index creation and querying
475- add tests to check if the RDBMS specific handling with portability options
476  disabled behaves as expected
477- handle implicit commits (like for DDL) in any affected driver (mysql, sqlite..)
478- add a getTableFieldsDefinitions() method to be used in tableInfo()
479- drop ILIKE from matchPattern() and instead add a second parameter to
480  handle case sensitivity with arbitrary operators
481- handle LOBs in buffered result sets (Request #8793)
482   </notes>
483  </release>
484  <release>
485   <version>
486    <release>2.5.0b1</release>
487    <api>2.5.0b1</api>
488   </version>
489   <stability>
490    <release>alpha</release>
491    <api>alpha</api>
492   </stability>
493   <date>2008-03-15</date>
494   <license>BSD License</license>
495   <notes>
496- request #12731: added truncateTable() in the Manager module
497- request #12732: added vacuum() in the Manager module for OPTIMIZE/VACUUM TABLE abstraction
498- request #12800: added alterDatabase() in the Manager module [afz]
499- fixed bug #12924: correctly handle internal expected errors even with custom error handling
500- fixed bug #12991: new error code in errorInfo() [afz]
501- added databaseExists() method [afz]
502- request #13106: added unixtimestamp() in the Function module
503- added max_identifiers_length option
504
505open todo items:
506- handle autoincrement fields in alterTable()
507- add length handling to LOB reverse engineering
508- add EXPLAIN abstraction
509- add cursor support along the lines of PDO (Request #3660 etc.)
510- add PDO based drivers, especially a driver to support SQLite 3 (Request #6907)
511- add support to export/import in CSV format
512- add more functions to the Function module (MD5(), IFNULL(), etc.)
513- add support for database/table/row LOCKs
514- add support for CHECK (ENUM as possible mysql fallback) constraints
515- generate STATUS file from test suite results and allow users to submit test results
516- add support for full text index creation and querying
517- add tests to check if the RDBMS specific handling with portability options
518  disabled behaves as expected
519- handle implicit commits (like for DDL) in any affected driver (mysql, sqlite..)
520- add a getTableFieldsDefinitions() method to be used in tableInfo()
521- drop ILIKE from matchPattern() and instead add a second parameter to
522  handle case sensitivity with arbitrary operators
523- handle LOBs in buffered result sets (Request #8793)
524   </notes>
525  </release>
526  <release>
527   <version>
528    <release>2.5.0a2</release>
529    <api>2.5.0a2</api>
530   </version>
531   <stability>
532    <release>alpha</release>
533    <api>alpha</api>
534   </stability>
535   <date>2007-12-06</date>
536   <license>BSD License</license>
537   <notes>
538- fixed bug #12358: E_STRICT changes in latest alpha broke PHP4 compatibility
539- fixed bug #12351: wrong case for function PEAR::isError() in the Reverse module
540  [was: IsError()]
541- fixed bug #12530: MDB2_Extended::autoPrepare() gives error if $types is null
542- request #12012: added charset/collation support in createDatabase() for the
543  drivers that support this feature
544- added bindname_format option (this is the regexp used to recognize named
545  placeholders in prepared statements)
546
547open todo items:
548- handle autoincrement fields in alterTable()
549- add length handling to LOB reverse engineering
550- add EXPLAIN abstraction
551- add cursor support along the lines of PDO (Request #3660 etc.)
552- add PDO based drivers, especially a driver to support SQLite 3 (Request #6907)
553- add support to export/import in CSV format
554- add more functions to the Function module (MD5(), IFNULL(), etc.)
555- add support for database/table/row LOCKs
556- add support for CHECK (ENUM as possible mysql fallback) constraints
557- generate STATUS file from test suite results and allow users to submit test results
558- add support for full text index creation and querying
559- add tests to check if the RDBMS specific handling with portability options
560  disabled behaves as expected
561- handle implicit commits (like for DDL) in any affected driver (mysql, sqlite..)
562- add a getTableFieldsDefinitions() method to be used in tableInfo()
563- drop ILIKE from matchPattern() and instead add a second parameter to
564  handle case sensitivity with arbitrary operators
565- handle LOBs in buffered result sets (Request #8793)
566   </notes>
567  </release>
568  <release>
569   <version>
570    <release>2.5.0a1</release>
571    <api>2.5.0a1</api>
572   </version>
573   <stability>
574    <release>alpha</release>
575    <api>alpha</api>
576   </stability>
577   <date>2007-10-28</date>
578   <license>BSD License</license>
579   <notes>
580- fixed bug #10024: Security fix for LOBs. Added an option to turn lob_allow_url_include off by default
581- fixed bug #11179: prepared statements with named placeholders fail if extra values are provided
582- request #11297: added support for &quot;schema.table&quot; (or &quot;owner.table&quot;) notation in the Reverse module
583- initial support for FOREIGN KEY and CHECK constraints in the Reverse and Manager modules
584- fixed bug #11428: propagate quote() errors with invalid data types
585- added new test cases in the test suite
586- added LENGTH() function in the Function module
587- fixed bug #11612: raiseError() must be compatible with PEAR::raiseError() [PHP6]
588- fixed bug #11790: avoid array_diff() because it has a memory leak in PHP 5.1.x
589- fixed bug #11906: quoteIdentifier fails for names with dots
590- fixed bug #11975: Extended::autoExecute() does not work with Oracle when using LOBs
591  (patch by Pieter Meulen, van der)
592- fixed some E_STRICT errors with PHP5
593- fixed bug #12083: createTable() in the Manager module now returns MDB2_OK on success,
594  as documented
595- fixed bug #12246: wrong check in MDB2::isStatement() (thanks to zaa@zaa.pp.ru)
596
597open todo items:
598- handle autoincrement fields in alterTable()
599- add length handling to LOB reverse engineering
600- add EXPLAIN abstraction
601- add cursor support along the lines of PDO (Request #3660 etc.)
602- add PDO based drivers, especially a driver to support SQLite 3 (Request #6907)
603- add support to export/import in CSV format
604- add more functions to the Function module (MD5(), IFNULL(), etc.)
605- add support for database/table/row LOCKs
606- add support for CHECK (ENUM as possible mysql fallback) constraints
607- generate STATUS file from test suite results and allow users to submit test results
608- add support for full text index creation and querying
609- add tests to check if the RDBMS specific handling with portability options
610  disabled behaves as expected
611- handle implicit commits (like for DDL) in any affected driver (mysql, sqlite..)
612- add a getTableFieldsDefinitions() method to be used in tableInfo()
613- drop ILIKE from matchPattern() and instead add a second parameter to
614  handle case sensitivity with arbitrary operators
615- add charset and collation support to field declaration in all drivers
616- handle LOBs in buffered result sets (Request #8793)
617   </notes>
618  </release>
619  <release>
620   <version>
621    <release>2.4.1</release>
622    <api>2.4.1</api>
623   </version>
624   <stability>
625    <release>stable</release>
626    <api>stable</api>
627   </stability>
628   <date>2007-05-03</date>
629   <license>BSD License</license>
630   <notes>
631- fixed bug #10407: propagate errors in MDB2_Statement_Common::execute()
632- fixed bug #10452: error in getDeclaration() with custom datatype_map and no
633  datatype_map_callback function
634- fixed bug #10521: quote($val,&apos;decimal&apos;) and quote($val,&apos;float&apos;) pass unsafe characters
635- return length as &quot;precision,scale&quot; for NUMERIC and DECIMAL fields in mapNativeDatatype()
636- fixed bug #10537: safer check for valid MDB2 connection in singleton() [fornax]
637- fixed bug #10598: MDB2::singleton() not working in some rare conditions [fornax]
638- in getTableIndexDefinition() and getTableConstraintDefinition() in the Reverse
639  module, also return the field position in the index/constraint
640- exec() now returns a reference instead of a copy to prevent memory leaks
641- request #10787: MDB2_Driver_Common::$phptype and $dbsyntax properties are now public
642
643open todo items:
644- handle autoincrement fields in alterTable()
645- add length handling to LOB reverse engineering
646- add EXPLAIN abstraction
647- add cursor support along the lines of PDO (Request #3660 etc.)
648- add PDO based drivers, especially a driver to support SQLite 3 (Request #6907)
649- add support to export/import in CSV format
650- add more functions to the Function module (MD5(), IFNULL(), LENGTH() etc.)
651- add support for database/table/row LOCKs
652- add support for FOREIGN KEYs and CHECK (ENUM as possible mysql fallback) constraints
653- generate STATUS file from test suite results and allow users to submit test results
654- add support for full text index creation and querying
655- add tests to check if the RDBMS specific handling with portability options
656  disabled behaves as expected
657- handle implicit commits (like for DDL) in any affected driver (mysql, sqlite..)
658- add a getTableFieldsDefinitions() method to be used in tableInfo()
659- drop ILIKE from matchPattern() and instead add a second parameter to
660  handle case sensitivity with arbitrary operators
661- add charset and collation support to field declaration in all drivers
662- handle LOBs in buffered result sets (Request #8793)
663   </notes>
664  </release>
665  <release>
666   <version>
667    <release>2.4.0</release>
668    <api>2.4.0</api>
669   </version>
670   <stability>
671    <release>stable</release>
672    <api>stable</api>
673   </stability>
674   <date>2007-03-13</date>
675   <license>BSD License</license>
676   <notes>
677- propagate errors in getTableFieldDefinition() in the Reverse module
678- internally use MDB2::classExists() wrapper instead of directly calling class_exists()
679- fixed bug #9502: query result misbehaves when the number of returned columns
680  is greater than the number of passed types
681- fixed bug #9748: Table name is not quoted in Extended.php buildManipSQL()
682- fixed bug #9800: when the php extension for the driver fails to load, the
683  error is not propagated correctly and the script dies
684- propagate errors in the Datatype module
685- implemented guid() in the Function module [globally unique identifier]
686  (thanks to mario dot adam at schaeffler dot com)
687- fixed bug #4854: Oracle Easy Connect syntax only works with array DSN
688- fixed bug #10105: inTransaction() was returning an incorrect value after a call
689  to disconnect() or __destruct()
690- implemented a fallback mechanism within getTableIndexDefinition() and
691  getTableConstraintDefinition() in the Reverse module to ignore the &apos;idxname_format&apos;
692  option and use the index name as provided in case of failure before returning
693  an error
694- added a &apos;nativetype_map_callback&apos; option to map native data declarations back to
695  custom data types (thanks to Andrew Hill).
696- fixed bug #10234 and bug #10233: MDB2_Driver_Datatype_Common::mapNativeDatatype()
697  must ensure that it returns the correct length value, or null
698- added support for TEMPORARY tables (patch by Andrew Hill)
699- phpdoc fixes
700- fixed tests to be compatible with PHP4
701- added new tests, including some MDB2 internals tests by Andrew Hill and Monique Szpak
702
703open todo items:
704- handle autoincrement fields in alterTable()
705- add length handling to LOB reverse engineering
706- add EXPLAIN abstraction
707- add cursor support along the lines of PDO (Request #3660 etc.)
708- add PDO based drivers, especially a driver to support SQLite 3 (Request #6907)
709- add support to export/import in CSV format
710- add more functions to the Function module (MD5(), IFNULL(), LENGTH() etc.)
711- add support for database/table/row LOCKs
712- add support for FOREIGN KEYs and CHECK (ENUM as possible mysql fallback) constraints
713- generate STATUS file from test suite results and allow users to submit test results
714- add support for full text index creation and querying
715- add tests to check if the RDBMS specific handling with portability options
716  disabled behaves as expected
717- handle implicit commits (like for DDL) in any affected driver (mysql, sqlite..)
718- add a getTableFieldsDefinitions() method to be used in tableInfo()
719- drop ILIKE from matchPattern() and instead add a second parameter to
720  handle case sensitivity with arbitrary operators
721- add charset and collation support to field declaration in all drivers
722- handle LOBs in buffered result sets (Request #8793)
723   </notes>
724  </release>
725  <release>
726   <version>
727    <release>2.3.0</release>
728    <api>2.3.0</api>
729   </version>
730   <stability>
731    <release>stable</release>
732    <api>stable</api>
733   </stability>
734   <date>2006-11-03</date>
735   <license>BSD License</license>
736   <notes>
737- added charset and collation support to field declaration
738- added SQL comments and quoted identifier handling inside prepared statement parser
739- expanded length/scale support for numeric types (Request #7170)
740- added statement_format option to make it possible to define the name used for
741  native statements if supported
742- fixed bug when setting MDB2_PREPARE_RESULT in autoExecute()
743- fixed notice in exec() call in autoExecute()
744- reversed if logic in MDB2::fileExists checking to be more fool proof with
745  safe_mode restrictions (Bug #8296)
746- moved CREATE TABLE query generation in a separate method for reuse in the drivers
747- added testLOBRead to test multiple LOB reads
748- fixed getColumnNames() optional parameter handling (Bug #8857)
749- phpdoc fix for fetchCol/fetchAll
750- added an extra if in the autoExecute method of the Extended driver (Bug #8878)
751- expanded tableInfo() tests
752- expanded prepare() tests
753- fix the incorrect use of currID() for lastInsertID() emulation (Bug #9107)
754- add test for lastInsertID()
755- also output php version in test results
756- added supported &apos;new_link&apos;
757- dropped use of track_errors because 5.2.0 causes php_errormsg to not get
758  populated if a custom error handler is set and it was causing issues for
759  safe_mode users anyways
760- added some error handling into the bindValues()/bindParams() methods (Bug #9133)
761- bindValue() does not need values by reference
762- fix issue in execute() when parameter is a scalar integer of 0 (Bug #9158)
763- implemented stream_stat() method (Bug #9092)
764- better deal with non scalar arguments in test helper function as 5.2.0 explodes otherwise
765- extracted _skipDelimitedStrings() method from prepare()
766- added test for _skipDelimitedStrings() method
767- migrated to package.xml version 2
768
769open todo items:
770- handle autoincrement fields in alterTable()
771- add length handling to LOB reverse engineering
772- expand charset support in schema management and result set handling (Request #4666)
773- add EXPLAIN abstraction
774- add cursor support along the lines of PDO (Request #3660 etc.)
775- add PDO based drivers, especially a driver to support SQLite 3 (Request #6907)
776- add support to export/import in CSV format
777- add more functions to the Function module (MD5(), IFNULL(), LENGTH() etc.)
778- add support for database/table/row LOCKs
779- add support for FOREIGN KEYs and CHECK (ENUM as possible mysql fallback) constraints
780- generate STATUS file from test suite results and allow users to submit test results
781- explore use of install groups (pear install MDB2#mysql)
782- add support for full text index creation and querying
783- add tests to check if the RDBMS specific handling with portability options
784  disabled behaves as expected
785- handle implicit commits (like for DDL) in any affected driver (mysql, sqlite..)
786- add a getTableFieldsDefinitions() method to be used in tableInfo()
787- drop ILIKE from matchPattern() and instead add a second parameter to
788  handle case sensitivity with arbitrary operators
789- add charset and collation support to field declaration in all drivers
790- handle LOBs in buffered result sets (Request #8793)
791   </notes>
792  </release>
793  <release>
794   <version>
795    <release>2.2.2</release>
796    <api>2.2.2</api>
797   </version>
798   <stability>
799    <release>stable</release>
800    <api>stable</api>
801   </stability>
802   <date>2006-09-03</date>
803   <license uri="http://www.example.com">BSD License</license>
804   <notes>
805- flip positions property array in prepared statement objects to make it
806  possible to optionally use the same named placeholder in multiple places
807  inside a single prepared statement
808- expanded prepare tests to cover more edge cases
809- renamed valid_types property to valid_default_values in the Datatype module
810
811open todo items:
812- handle autoincrement fields in alterTable()
813- add length handling to LOB reverse engineering
814- expand charset support in schema management and result set handling (Request #4666)
815- add EXPLAIN abstraction
816- add cursor support along the lines of PDO (Request #3660 etc.)
817- expand length/scale support for numeric types (Request #7170)
818- add PDO based drivers, especially a driver to support SQLite 3 (Request #6907)
819- add support to export/import in CSV format
820- add more functions to the Function module (MD5(), IFNULL(), LENGTH() etc.)
821- add support for database/table/row LOCKs
822- add support for FOREIGN KEYs and CHECK (ENUM as possible mysql fallback) constraints
823- generate STATUS file from test suite results and allow users to submit test results
824- add a package2.xml and explore use of install groups (pear install MDB2#mysql)
825- add support for full text index creation and querying
826- add tests to check if the RDBMS specific handling with portability options
827  disabled behaves as expected
828- handle implicit commits (like for DDL) in any affected driver (mysql, sqlite..)
829   </notes>
830  </release>
831  <release>
832   <version>
833    <release>2.2.1</release>
834    <api>2.2.1</api>
835   </version>
836   <stability>
837    <release>stable</release>
838    <api>stable</api>
839   </stability>
840   <date>2006-08-21</date>
841   <license uri="http://www.example.com">BSD License</license>
842   <notes>
843- fixed missing code in tableInfo() (Bug #8289)
844- fixed handling of indexes and constraints and types in tableInfo() (fixes BC break)
845- do not set nested transaction error if error is expected
846- explictly default to NULL when the column is NULLable and no default is set
847  (related to Bug #8359)
848- added support for case insensitive matching via ILIKE in matchPattern()
849- added getAsKeyword() for generating &quot;AS&quot; keyword as required by the RDBMS
850- return an error if a named placeholder name is used twice inside a single statement
851- add support for multi column PRIMARY KEYs in createTable()
852- added lower() and upper() to the function module
853- moved escaping tests to datatype tests
854- added summary at the end of a test run for each RDBMS
855- explicitly pass the php_type var in all internal loadModule() calls
856- added support for &apos;primary&apos; option in createTable()
857- expanded NULL tests
858- fixed handling return values when disable_query is set in _doQuery() and _execute()
859- check if safe_mode is enabled in fileExists() to determine what algo to use (Bug #8296)
860- added a test case for updating LOBs
861- added rtrim test case for LOBs
862- if result types are specified only rtrim() type &apos;text&apos; fields (otherwise
863  it will mean that for some drivers LOB&apos;s would get rtrimmed)
864- phpdoc fixes to the convertResult*() methods
865- added execParam() method and code tweaks for get*() methods in the Extended module
866- removed redundant assertions when testing if a given feature is unsupported
867- removed tests of portability off (users should just set the given portability
868  setting they want to test in their test_setup.php)
869
870open todo items:
871- handle autoincrement fields in alterTable()
872- add length handling to LOB reverse engineering
873- expand charset support in schema management and result set handling (Request #4666)
874- add EXPLAIN abstraction
875- add cursor support along the lines of PDO (Request #3660 etc.)
876- expand length/scale support for numeric types (Request #7170)
877- add PDO based drivers, especially a driver to support SQLite 3 (Request #6907)
878- add support to export/import in CSV format
879- add more functions to the Function module (MD5(), IFNULL(), LENGTH() etc.)
880- add support for database/table/row LOCKs
881- add support for FOREIGN KEYs and CHECK (ENUM as possible mysql fallback) constraints
882- generate STATUS file from test suite results and allow users to submit test results
883- add a package2.xml and explore use of install groups (pear install MDB2#mysql)
884- add support for full text index creation and querying
885- add tests to check if the RDBMS specific handling with portability options
886  disabled behaves as expected
887   </notes>
888  </release>
889  <release>
890   <version>
891    <release>2.2.0</release>
892    <api>2.2.0</api>
893   </version>
894   <stability>
895    <release>stable</release>
896    <api>stable</api>
897   </stability>
898   <date>2006-07-23</date>
899   <license uri="http://www.example.com">BSD License</license>
900   <notes>
901- added MDB2_AUTOQUERY_SELECT (Request #7817)
902- added nested transaction support (inspired by ADODB&apos;s smart transactions) but
903  expanded to optionally use SAVEPOINTs *EXPERIMENTAL*
904  beginNestedTransaction(), completeNestedTransaction(),
905  failNestedTransaction(), getNestedTransactionError()
906- inTransaction() will now return an integer with the nested transaction depth
907  if a nested transaction has been started
908- added setTransactionIsolation()
909- added savepoint support to beginTransaction(), commit() and rollback()
910- added Native base class for consistency
911- added missing colnum parameter to queryOne() [used by getOne()]
912- added new tests for get*() Extended module methods
913- fixed missing db variable from getValidTypes()
914- added testing of a prepared statement with no parameters
915- added handling of empty result sets to result set verification in the test suite
916- oci8 and ibase (and possibly other rdbms) do not like freeing the statement
917  before reading the result set (Bug #8068):
918  * moved statement freeing after reading the result set in get*() Extended methods
919  * bypass prepared statement API for queries without parameters in autoExecute()
920  (this means you cannot use parameters with SELECT statements in autoExecute()
921  on the above mentioned platforms)
922- use data type callback in getValidTypes()
923- fixed identifier quoting in buildManipSQL() for SELECT statements (thx Kailoran)
924- phpdoc and cosmetic fixes in limitQuery()
925- added matchPattern() and patternEscapeString(), escapePattern() *EXPERIMENTAL*
926- added ability to escape wildcard characters in escape() and quote()
927- added debug() call at the end of a query/prepare/execute calling (Request #7933)
928- added context array parameter to debug() and make use of it whereever sensible
929- added optional method name parameter to raiseError() and use whereever possible
930- added a new option &quot;debug_expanded_output&quot; which needs to be set to true to
931  get additional context information and to get &quot;post&quot; callback calls
932- added testPortabilityOptions()
933- set length of 8 and fixed for user_password in the test suite
934- reworked tableInfo() to use a common implementation based on getTableFieldDefinition()
935  when a table name is passed (Bug #8124)
936- disconnect after changing database/DSN (otherwise transactions may be left open)
937
938open todo items:
939- handle autoincrement fields in alterTable()
940- add length handling to LOB reverse engineering
941- expand charset support in schema management and result set handling (Request #4666)
942- add EXPLAIN abstraction
943- add cursor support along the lines of PDO (Request #3660 etc.)
944- expand length/scale support for numeric types (Request #7170)
945- add PDO based drivers, especially a driver to support SQLite 3 (Request #6907)
946- add support to export/import in CSV format
947- add more functions to the Function module (MD5(), IFNULL(), LENGTH() etc.)
948- add support to generating &quot;AS&quot; keyword if required
949- add support for database/table/row LOCKs
950- add ActiveRecord implementation (probably as a separate package)
951- add support for FOREIGN KEYs and CHECK (ENUM as possible mysql fallback) constraints
952- extended to support for case insensitive matching via ILIKE/collate in matchPattern()
953- generate STATUS file from test suite results and allow users to submit test results
954   </notes>
955  </release>
956  <release>
957   <version>
958    <release>2.1.0</release>
959    <api>2.1.0</api>
960   </version>
961   <stability>
962    <release>stable</release>
963    <api>stable</api>
964   </stability>
965   <date>2006-06-15</date>
966   <license uri="http://www.example.com">BSD License</license>
967   <notes>
968- removed bogus code from execute()
969- new test case for floats/decimals and locale
970- reworked fix for float/decimal handling
971- expanded scientific notation handling
972- fixed several minor issues with the datatype tests
973- removed use of &quot;*&quot; in all places in the test suite that are followed by a fetch
974- tweaked handling of free() for prepared statements
975- return error if a prepared statement is attempted to be free&apos;ed or executed again
976- added result_wrap_class param to limitQuery()
977- added parameter to not quote return value of getBeforeId()
978- added setCharset()
979- enable transactions by default
980- added decimal reverse engineering test
981- fixed parameter order in assertions in reverse engineering fields tests
982- generalized quoteIdentifier() with a property
983- switched most array_key_exists() calls to !empty() to improve readability and performance
984- fixed a few edge cases and potential warnings
985- added ability to rewrite queries for query(), exec() and prepare() using a debug handler callback
986- added &apos;datatype_map&apos; option (Request #7797)
987- added reverse parameter to getColumnNames()
988- added &apos;datatype_map_callback&apos; option
989- added getValidTypes() method to handle additional types from the &apos;datatype_map&apos; option
990- set last_query in _execute() to prepared statement (Bug #7856)
991- adding random function emulation to generate a float between 0 and 1
992- explicitly fetch row id = 1 in LOB tests
993- cosmetic fix to prepare() (Bug #7883)
994- bumped PHP dependency to 4.3.2 because of LOB stream support
995
996open todo items:
997- handle autoincrement fields in alterTable()
998- add support for ADODB style &quot;smart transactions&quot;:
999  http://phplens.com/lens/adodb/docs-adodb.htm#ex11
1000- add length handling to LOB reverse engineering
1001   </notes>
1002  </release>
1003  <release>
1004   <version>
1005    <release>2.0.3</release>
1006    <api>2.0.3</api>
1007   </version>
1008   <stability>
1009    <release>stable</release>
1010    <api>stable</api>
1011   </stability>
1012   <date>2006-05-22</date>
1013   <license uri="http://www.example.com">BSD License</license>
1014   <notes>
1015- fix float/decimal handling (Request #3021)
1016- default to decimal for double (instead of float)
1017- serialize arrays when no type is explicitly given
1018- phpdoc fixes
1019- expanded FLOAT test
1020- added support for identifier quoting (Request #7671)
1021- added test class for the Extended module
1022- added support for DELETE in auto*() methods (Request #5345)
1023- added &quot;emulate_prepared&quot; option to force prepared statement emulation
1024
1025open todo items:
1026- handle autoincrement fields in alterTable()
1027- add support for ADODB style &quot;smart transactions&quot;:
1028  http://phplens.com/lens/adodb/docs-adodb.htm#ex11
1029- add length handling to LOB reverse engineering
1030   </notes>
1031  </release>
1032  <release>
1033   <version>
1034    <release>2.0.2</release>
1035    <api>2.0.2</api>
1036   </version>
1037   <stability>
1038    <release>stable</release>
1039    <api>stable</api>
1040   </stability>
1041   <date>2006-05-14</date>
1042   <license uri="http://www.example.com">BSD License</license>
1043   <notes>
1044- phpdoc and folding mark fixes (thx Laurent and Stoyan)
1045- added getTriggerDefinition() in the Reverse module
1046- added listTableViews() in the Manager module
1047- explicitly set is_manip parameter to false for transaction debug calls
1048- various minor tweaks to error messages, phpdoc and adding stub methods to the
1049  common driver
1050- added row seeking support to fetchOne()
1051- added ability to hint that a constraint is a primary key in dropConstraint()
1052- since we no longer complain about primary keys not being called primary we can
1053  remove the necessary hacks in the test suite
1054- improved LOB tests in the test suite
1055- do not require Manager module for core API tests
1056- added support for fixed and variable types for &apos;text&apos; in declarations,
1057  as well as in reverse engineering (Request #1523)
1058- updated MAINTAINERS to current status
1059- readded STATUS document, still needs to be filled with content
1060- tweaked handling of error objects inside raiseError()
1061- made _doQuery() return a reference
1062- added userinfo&apos;s to all raiseError calls that previously had none
1063- added bindValueArray()
1064- use bindValueArray() instead of bindParamArray() in all internal calls
1065- removed the skeleton drivers, since its too much work to maintain them
1066  and there are plenty of sample drivers to look at
1067- fixed example due to API change in MDB2_Schema (Bug #7575)
1068- added &apos;prepared_statements&apos; supported meta data setting
1069- do not retrieve lob in the stream constructor and streams_eof()
1070- strip of file:// prefix in writeLOBToFile()
1071- typo fix ressource/resource in LOB array
1072- removed lob property from the LOB streams wrapper (references are always
1073  shaky business in PHP so lets use them as little as possible)
1074- fixed _destroyLOB() API to match other private LOB methods
1075- fixed phpdoc comments of all private LOB methods
1076- typo fix in autoincrement test
1077- reworked index/constraint creation to not affected unnecessary reverse tests
1078
1079Note: Due to changes in generation of declaration statements you may need to
1080update your test databases (for example by rerunning the MDB2_Schema
1081installation using the CVS version or a release greater than 0.5.0)
1082
1083open todo items:
1084- handle autoincrement fields in alterTable()
1085- add support for ADODB style &quot;smart transactions&quot;:
1086  http://phplens.com/lens/adodb/docs-adodb.htm#ex11
1087   </notes>
1088  </release>
1089  <release>
1090   <version>
1091    <release>2.0.1</release>
1092    <api>2.0.1</api>
1093   </version>
1094   <stability>
1095    <release>stable</release>
1096    <api>stable</api>
1097   </stability>
1098   <date>2006-04-16</date>
1099   <license uri="http://www.example.com">BSD License</license>
1100   <notes>
1101- added new comprehensive tests for the Reverse module
1102- fixed testcases to pass for mysql[i] (needs pk&apos;s to be called &quot;primary&quot;) ..
1103  sqlite is probably severely broken for these tests
1104- added ability to specify port number when using unix sockets in
1105  MDB2::parseDSN() (bug #5982)
1106- added test for multi_query option
1107- typo fix in get constraint test
1108- use ugly fopen() hack in fileExists()
1109  http://marc.theaimsgroup.com/?l=pear-dev&amp;m=114148949106207&amp;w=2
1110- allow &quot;.&quot; and &quot;$&quot; in sequence name (bug #7081)
1111- aligned _modifyQuery() signature and phpdoc
1112- added inTransaction() to determine if a transaction is currently open
1113- added support for tabe options in createTable() (bug ##7079)
1114- make it possible to overwrite the error code-message map
1115- added sample sqlite in memory dsn to php5 example
1116- added &apos;result_introspection&apos; supported metadata support
1117- added bindValue() method
1118- use MDB2_PREPARE_MANIP where we previously were using false
1119- fixed default values for date and timestamp
1120- if MDB2_PORTABILITY_EMPTY_TO_NULL is set change &apos;&apos; to &apos; &apos; in _getDeclaration()
1121- refactored class loading into MDB2::loadClass()
1122- properly quote CURRENT_* for temporal types (bug #6416)
1123- added connected_server_info to cache server info in getServerInfo()
1124- reset all connection related properties in disconnect()
1125- separated result_buffering and prefetching by adding the new result_prefetching option
1126- set error code in all raiseError() calls
1127- added support for length in reverse engineering of integer fields
1128- improve test suite documentation
1129
1130open todo items:
1131- handle autoincremement fields in alterTable()
1132   </notes>
1133  </release>
1134  <release>
1135   <version>
1136    <release>2.0.0</release>
1137    <api>2.0.0</api>
1138   </version>
1139   <stability>
1140    <release>stable</release>
1141    <api>stable</api>
1142   </stability>
1143   <date>2006-02-09</date>
1144   <license uri="http://www.example.com">BSD License</license>
1145   <notes>
1146- handle null as resource when disable_query option is enabled in result object
1147   </notes>
1148  </release>
1149  <release>
1150   <version>
1151    <release>2.0.0RC5</release>
1152    <api>2.0.0RC5</api>
1153   </version>
1154   <stability>
1155    <release>beta</release>
1156    <api>beta</api>
1157   </stability>
1158   <date>2006-02-05</date>
1159   <license uri="http://www.example.com">BSD License</license>
1160   <notes>
1161- expanded testing of prepared queries (out of order binding, escape characters
1162  inside the string, lobs without named parameters that match the field name)
1163- removed ugly hack for quote parameter in quote() since it was insufficient
1164  (escaping also needs to be prevented)
1165- added support for out of order parameter binding in prepared queries
1166- expanded testing of prepared queries (out of order binding, escape characters
1167  inside the string, lobs without named parameters that match the field name)
1168- reset row_limit and row_offset after calling prepare() just like we do for query() and exec()
1169- cosmetic fix (removed &quot;row_&quot; prefix from &quot;row_limit&quot; and &quot;row_offset&quot;)
1170- now using INT/TINYINT/SMALLINT by default instead of CHAR(1) for the boolean datatype
1171  (BC BREAK!)
1172- added MDB2_datatype_testcase to test suite
1173- support an arbitrary number of arguments in concat()
1174- add property phpdoc comments to LOB.php
1175   </notes>
1176  </release>
1177  <release>
1178   <version>
1179    <release>2.0.0RC4</release>
1180    <api>2.0.0RC4</api>
1181   </version>
1182   <stability>
1183    <release>beta</release>
1184    <api>beta</api>
1185   </stability>
1186   <date>2006-01-13</date>
1187   <license uri="http://www.example.com">BSD License</license>
1188   <notes>
1189- explicitly pass if the module is phptype specific in all loadModule calls (bug #6226)
1190- some cleanups in loadModule()
1191- eliminate possible warnings in execute() and _assignBindColumns()
1192- do not silence includes when debug option is enabled
1193- fixed serious bug in autoincrement test
1194- added dbsyntax to getDSN() string output (feature request #6463)
1195- fixed signature of executeStoredProc()
1196- nextResult() returns false if there are no more result sets to read
1197- renamed _isIndexName() to _fixIndexName()
1198- _fixIndexName() now just attempts to remove possible formatting
1199- renamed _isSequenceName() to _fixSequenceName()
1200- _fixSequenceName() now just attempts to remove possible formatting, and only
1201  returns a boolean if no formatting was applied when the new &quot;check&quot; parameter is set to true
1202   </notes>
1203  </release>
1204  <release>
1205   <version>
1206    <release>2.0.0RC3</release>
1207    <api>2.0.0RC3</api>
1208   </version>
1209   <stability>
1210    <release>beta</release>
1211    <api>beta</api>
1212   </stability>
1213   <date>2005-12-30</date>
1214   <license uri="http://www.example.com">BSD License</license>
1215   <notes>
1216- added error handling when result set introspection is not supported in _wrapResult()
1217- fixed example
1218- removed peardb wrapper (its broken, unmaintained and probably unused)
1219- added new example using php5 only features
1220- MDB2_OK is now a boolean true, instead of integer 1
1221- types can now always be keyed by name or by order
1222- renamed setResultTypes() in the datatype module to checkResultTypes()
1223  and modified the signature accordingly
1224- removed no longer used MDB2::isManip()
1225   </notes>
1226  </release>
1227  <release>
1228   <version>
1229    <release>2.0.0RC2</release>
1230    <api>2.0.0RC2</api>
1231   </version>
1232   <stability>
1233    <release>beta</release>
1234    <api>beta</api>
1235   </stability>
1236   <date>2005-12-28</date>
1237   <license uri="http://www.example.com">BSD License</license>
1238   <notes>
1239- fixed testNow() to use the datatype abstraction
1240- fixed testGetTableFieldDefinition() to use a blob column instead of a clob
1241  since we default to blob when we cannot differntiate between blob and clob
1242- split up alterTable() testing into two separate test methods
1243- removed errorNative() was never implemented, use errorInfo() instead
1244- fixed major bug in _fixResultArrayValues() that would lead to performance or
1245  incorrect application of portability features
1246- phpdoc fixes in LOB.php, Iterator.php, Date.php and Extended.php
1247- removed not required prev() and hasPrev() from the SeekableIterator implementation
1248   </notes>
1249  </release>
1250  <release>
1251   <version>
1252    <release>2.0.0RC1</release>
1253    <api>2.0.0RC1</api>
1254   </version>
1255   <stability>
1256    <release>beta</release>
1257    <api>beta</api>
1258   </stability>
1259   <date>2005-12-21</date>
1260   <license uri="http://www.example.com">BSD License</license>
1261   <notes>
1262- added numerous testcases in the manager and reverse module
1263- unified case fixing in the list*() methods
1264- case-insensitive comparison in _isSequenceName()
1265- added getConnection() to fetch a native connection resource
1266- split index and constraint handling
1267- quote identifiers where possible inside the manager methods depending on
1268  the new &apos;quote_identifier&apos; option (defaults to off)
1269- refactored get*Declaration() methods to use getTypeDeclaration()
1270- setting in_transaction to false on disconnect
1271- store if type has changed in compareDefinition()
1272- added new Function modules to handle difference in SQL functions
1273- added verious new test cases
1274- refactored test cases to use an MDB2_testcase base class
1275- allow empty field parameter in get*ID() methods (bug #5791)
1276- tweaked error messages for file loads
1277- split off manipulation queries into exec() method from the query() method *BC BREAK*
1278- only if result_types is set to false in prepare() method the query will be
1279  handled as a DML statement *BC BREAK*
1280- use a proper default value if a field is set to not null in _getDeclaration*() (bug #5930)
1281- added getServerVersion()
1282- renamed defaultOutput() to getDefaultOutput() *BC BREAK*
1283- use tableInfo() to automatically determine the result types if type is set to true
1284- reworked file loading to work around issues in safe_mode with MDB2::fileExists() (bug #6226)
1285- no need to return by reference in getConnection() (it even seems to work for
1286  mysqli that has objects and not resource connections)
1287- added &quot;idxname_format&quot; as option similar to &quot;seqname_format&quot;
1288- fixed bug in API calls inside autoExecute() (bug #6286)
1289   </notes>
1290  </release>
1291  <release>
1292   <version>
1293    <release>2.0.0beta6</release>
1294    <api>2.0.0beta6</api>
1295   </version>
1296   <stability>
1297    <release>beta</release>
1298    <api>beta</api>
1299   </stability>
1300   <date>2005-10-16</date>
1301   <license uri="http://www.example.com">BSD License</license>
1302   <notes>
1303Warning: this release features numerous BC breaks!
1304
1305There have been considerable improvements to the datatype, manager and reverse
1306modules. Furthermore preliminary support for auto increment and primary keys
1307has been added. Please note that making a field auto increment implies a single
1308column primary key on this field.
1309
1310- increased php dependency to 4.3.0 due to the usage of the streams API since beta5
1311- moved logic from MDB2::connect() to MDB2::factory(), the only difference is
1312  that MDB2::connect will immediatly try to connect to the database
1313- MDB2::singleton now uses MDB2::factory()
1314- added support for auto increment and primary key in schema. (mysql[i])
1315- alterTable now needs the full definition to work (use getTableFieldDefinition
1316 from Reverse module if you do not have a definition at hand) this eliminates the need
1317 of the declaration part in the alterTable array.
1318- nicer test chooser. Added some js magic to [un]select all the tests in a group
1319- fixed typo in _getTextDeclaration()
1320- fix PHP4.4 breakage
1321- ensure that types and result_types property in the statement class is an array (bug #4695)
1322- added support for fetchmode in the iterator class and for any other result wrapper class (bug #4685)
1323- moved getInsertID() into core as lastInsertID()
1324- moved getBeforeID() and getAfterID() from core into the extended module
1325- added base class for all modules (which provides getDBInstance())
1326- added free() method to remove an instance from the global instance array
1327- removed schema manager related error codes from MDB2::errorMessage()
1328- dont set the include path in test suite (people can do that in test_setup.php)
1329- added missing default numRows() method
1330- added hack into stream_eof() to handle the BC break in 5.0.x
1331- removed uncessary duplicate quoting in quote() in the peardb wrapper (bug #5195)
1332- warning fix in BC hack of connect() in the peardb wrapper
1333- tweaked error message in setResultTypes()
1334- removed PDO compatibility code in bindParam and bindCol, now using 0-index numeric keys again
1335- expect keys in type arrays the same way as they are passed for the values in execute() and bindParamArray()
1336- add s pattern modifier to preg_replace() call for parameter searches in prepare() (bug #5362)
1337- moved all private fetch mode fix methods into _fixResultArrayValues() for performance reasons
1338- added new portability fetch mode MDB2_PORTABILITY_FIX_ASSOC_FIELD_NAMES (to remove database/table qualifiers from assoc indexes)
1339- renamed MDB2_PORTABILITY_LOWERCASE to MDB2_PORTABILITY_FIX_CASE and use &apos;field_case&apos; option to determine if to upper- or lowercase (CASE_LOWER/CASE_UPPER)
1340- ensure that fetchAll always returns an array() even if the result set was empty
1341- use array_key_exists() instead of isset() where possible
1342- changed structure of field add/remove/change in alterTable() to match MDB2_Schema
1343- added default values for supported property
1344- reworked supports() to return the given value and also return errors for non existant support feature
1345- reworked subSelect() to use the &apos;emulated&apos; supports() return value
1346- removed implementation of createIndex() (now every driver needs to implement it themselves)
1347- sync fileExists with the LiveUser one, explode instead of split and is_readable instead of file_exists.
1348- tweaked compare method family to better deal with optional properties
1349
1350open todo items:
1351- add test cases for the various module methods
1352- add getServerVersion()
1353   </notes>
1354  </release>
1355  <release>
1356   <version>
1357    <release>2.0.0beta5</release>
1358    <api>2.0.0beta5</api>
1359   </version>
1360   <stability>
1361    <release>beta</release>
1362    <api>beta</api>
1363   </stability>
1364   <date>2005-06-08</date>
1365   <license uri="http://www.example.com">BSD License</license>
1366   <notes>
1367Warning: this release features numerous BC breaks to make the MDB2 API be as
1368similar as possible as the ext/pdo API! The next release is likely to also break
1369BC for the same reason. Check php.net/pdo for information on the pdo API.
1370
1371- refactored LOB support (BC breaks)
1372- moved all drivers into separate packages MDB2_Driver_* (BC break)
1373- bindParam() and bindColumn() are now 1-indexed (BC break)
1374- removed special handling for day light saving time (bug #4341) (BC break)
1375- ensure SQL injection protection in all _quote() methods
1376  (was missing in some decimal, float, time, date and timestamp implementations)
1377- renamed getRowCount() to rowCount() for PDO compliance (BC break)
1378  (doesnt take into account the offset anymore)
1379- added new quote() parameter to remove quotes (ugly hack will get cleaned up)
1380- renamed execute() to _execute() since common provides some common functionality via execute()
1381- fixed some issues regarding limit/offset in prepared statements
1382- fixed bug in _assignBindColumns() when using associative fetches
1383- support numeric and string keys in types array for prepared queries
1384- call trigger error if __call() is unable to find a method in any of the modules
1385- work around php5 bugs in the test suite
1386   </notes>
1387  </release>
1388  <release>
1389   <version>
1390    <release>2.0.0beta4</release>
1391    <api>2.0.0beta4</api>
1392   </version>
1393   <stability>
1394    <release>beta</release>
1395    <api>beta</api>
1396   </stability>
1397   <date>2005-04-29</date>
1398   <license uri="http://www.example.com">BSD License</license>
1399   <notes>
1400Warning: this release features numerous BC breaks to make the MDB2 API be as
1401similar as possible as the ext/pdo API! The next release is likely to also break
1402BC for the same reason. Check php.net/pdo for information on the pdo API.
1403
1404- fixed bugs in MDB2_Extended::buildManipSQL() introduced in latest tweaks (bug #3725)
1405- mysqli has connection objects instead of resources
1406- fix mssql tableInfo() so flags are returned (bug #3691)
1407- fixed bug in handling of force_array when 2 or less columns are fetched in fetchAll()
1408- added map error message for sqlite multi-column unique constraints.
1409- added listUsers(), listViews(), listFunctions() to oracle manager
1410- added listFunctions() to pgsql manager
1411- updated listViews() in pgsql manager
1412- added __call() support for module handling
1413- mysql driver now uses mysqli implementations where feasible
1414- ensure that internal calls to query dont wrap the result
1415- for some reason mysqli didnt like SELECT LAST_INSERT_ID()
1416- fixed bug in table alteration when only an index was added
1417- updated pgsql API calls to 4.2.0 recommended names (bug #3904)
1418- moved logic to compareDefinitions from the Manager into the Datatype module
1419  to increase flexibility
1420- extended MDB2::isError() to be able to handle an array or codes
1421- added error handling into autoPrepare() and autoExecute()
1422- migrade all MDB2::isError calls that dont check for specific errors codes to PEAR::isError
1423- don&apos;t pass new_link to mysql_pconnect() (bug #3993)
1424- use MDB2::raiseError() instead of MDB2_Driver_Common::raiseError()
1425- do not disable result wrapping when doing internal calls to query() (bug #3997)
1426- _wrapResult() now ensures that the result class is an instance of MDB2_Result_Common
1427- unbundled the MDB2_Tools_Manager into a separate package PEAR::MDB2_Schema
1428- improved getTableFieldDefinition() and moved native type mapping to the
1429  datatype module mapNativeDatatype() method (mysql, sqlite, pgsql and ibase drivers)
1430- fixes for listTables() in sqlite and pgsql driver
1431- ensure that mysql drivers use the dummy_primary_key property
1432- severely reworked how data is fetched and buffered and freed in the iterator
1433- added mapNativeDatatype() to ibase driver
1434- getTypeDeclaration() =&gt; _getTypeDeclaration() in ibase driver
1435- cosmetic fixes and tweaks (replace(). fetchOne() ..)
1436- renamed &apos;seqname_col_name&apos; option to &apos;seqcol_name&apos;
1437- moved schema documentation, xml_reverse_engineering.php, MDB.dtd
1438  and MDB.xls to MDB_Schema package
1439- Mysqli: implicit sequence is named as table by default
1440- Mysqli: text types now map to clob first
1441- ensure that types are numerically keyed in setResultTypes()
1442- added caching to getColumnNames()
1443- added bindColumn() support
1444- use MDB2_Schema::factory()
1445- phpdoc fixes in regards to flipped fetchmode
1446- remove renegate mysql code in sqlite driver
1447   </notes>
1448  </release>
1449  <release>
1450   <version>
1451    <release>2.0.0beta3</release>
1452    <api>2.0.0beta3</api>
1453   </version>
1454   <stability>
1455    <release>beta</release>
1456    <api>beta</api>
1457   </stability>
1458   <date>2005-03-06</date>
1459   <license uri="http://www.example.com">BSD License</license>
1460   <notes>
1461Warning: this release features numerous BC breaks to make the MDB2 API be as
1462similar as possible as the ext/pdo API! The next release is likely to also break
1463BC for the same reason. Check php.net/pdo for information on the pdo API.
1464
1465Oracle NULL in LOB fields is broken.
1466The fbsql and mssql drivers are likely to be broken as they are largely untested.
1467
1468MDB2 static class:
1469- &quot;xxx&quot; out password on connect error in MDB2::connect()
1470- MDB2::isError now also optionally accepts and error code to check for
1471- added LOAD DATA (port from DB) and SET to MDB2::isManip()
1472
1473All drivers:
1474- use __construct() (PHP4 BC hacks are provided)
1475- allow null values to be set for options
1476- ensure we are returning a reference in all relevant places
1477
1478- allow errorInfo() to be called when no connection has been established yet
1479- use MDB2_ERROR_UNSUPPORTED instead of MDB2_ERROR_NOT_CAPABLE in common implementations
1480- readded MDB2_Error as the baseclass for all MDB2 error objects
1481- updated error mappings from DB
1482
1483- added MDB2_Driver_Common::getDatabase();
1484- reworked dsn default handling
1485- added ability to &quot;xxx&quot; out password in getDSN()
1486
1487- use _close() method in several places where they previously were not used
1488- removed redundant code in _close() that dealt with transaction closing already
1489  done in disconnect()
1490- if the dbsyntax is set in the dsn it will be set in the dbsyntax property
1491- only disconnect persistant connections if disconnect() has been explicitly
1492  called by the user
1493- instead of having a generic implemention of disconnect() we will rename
1494  _close() to disconnect() to overwrite the generic implementation
1495- added support for &apos;new_link&apos; dsn option for all supported drivers (mysql, oci8, pgsql)
1496
1497- transaction API moved over to PDO: removed autoCommit(), added beginTransaction()
1498  and refactored commit() (it doesn&apos;t start a new transaction automatically anymore)
1499- reworked handling of uncommited transaction for persistant connections when
1500  a given connection is no longer in use
1501
1502- added &apos;disable_query&apos; option to be able to disable the execution of all queries
1503 (this might be useful in conjuntion with a custom debug handler to be able to
1504 dump all queries into a file instead of executing them)
1505- removed affectedRows() method in favor of returning affectedRows() on query if relevant
1506- added generic implementation of query() and moved driver specific code into _doQuery()
1507- added _modifyQuery() to any driver that did not yet have it yet
1508- standaloneQuery() now also supports SELECT querys
1509- remove redundant call to commit() since setting autoCommit() already commits in MDB2::replace()
1510- refactored standaloneQuery(), query(), _doQuery(), _wrapResult(); the most important change are:
1511  result are only wrapped if it is explicitly requested
1512  standaloneQuery() now works just as query() does but with its own connection
1513- allowing limits of 0 in setLimit()
1514
1515- explicitly specify colum name in sequence emulation queries
1516- added getBeforeId() and getAfterId()
1517- added new supported feature &apos;auto_increment&apos;
1518
1519- added default implementation for quoteCLOB() and quoteBLOB()
1520- reworked quote handling: moved all implementation details into the extension,
1521  made all quote methods private except for quote() itself, honor portability
1522  MDB2_PORTABILITY_EMPTY_TO_NULL in quote(), removed MDB2_TYPE_* constants
1523- reworked get*Declaration handling: moved all implementation details into the extension,
1524  made all quote methods private except for quote() itself
1525- placed convert methods after the portability conversions to ensure that the
1526  proper type is maintained after the conversion methods
1527- dont convert fetched null values in the Datatype module
1528
1529- removed executeParams() and moved executeMultiple() from extended module
1530
1531- updated tableInfo() code from DB
1532
1533- made LIMIT handling more robust by taking some code from DB
1534
1535All drivers result:
1536- performance tweak in fetchCol()
1537- added MDB2_FETCHMODE_OBJECT
1538- added MDB2_Driver_Result_Common::getRowCounter()
1539- added rownum handling to fetchRow()
1540- removed fetch() and resultIsNull()
1541
1542All drivers prepared statements
1543- moved prepare/execute API towards PDO
1544- setParamsArray() can now handle non ordered arrays
1545- removed requirement for LOB inserts to pass the parameters as an array
1546- placeholders are now numbered starting from 0 (BC break in setParam() !)
1547- queries inside the prepared_queries property now start counting at 1 (performance tweak)
1548- refactored handling of filename LOB values (prefix with &apos;file://&apos;)
1549- removed _executePrepared(), drivers need to overwrite execute() for now on
1550- add support for oracle style named parameters and modified test suite accordingly
1551
1552MySQL driver:
1553- improved handling of MDB2_PORTABILITY_LOWERCASE in all the reverse
1554  methods inside the mysql driver to work coherently
1555- fixed several issues in the listTablefields() method of manager drivers
1556
1557MSSQL driver:
1558- added code in MDB2_Driver_mssql::connect() to better handle date values
1559  independant of ini and locale settings inside the server
1560- use comma, rather than colon, to delimit port in MDB2_driver_mssql::connect().
1561  Bug 2140. (danielc)
1562- unified mssql standalone query with sqlite, mysql and others (not tested on
1563  mssql yet, but since mssql automatically reuses connections per dsn the old
1564  way could gurantee anything different from happening)
1565
1566PgSQL driver:
1567- use track_errors to capture error messages in MDB2_driver_pgsql::connect().
1568  Bug 2011. (danielc)
1569- add port to connect string when protocol is unix in MDB2_driver_pgsql::connect().
1570  Bug 1919. (danielc)
1571- accommodate changes made to PostgreSQL so &quot;no such field&quot; errors get properly
1572  indicated rather than being mislabeled as &quot;no such table.&quot; (danielc)
1573- added &quot;permission denied&quot; to error regex in pgsql driver.
1574  Bug 2417. (stewart_linux-org-au)
1575
1576OCI8 driver:
1577- fixed typo in MDB2_Driver_Manager_oci8::listTables() (fix for bug #2434)
1578- added emulate_database option (default true) to the Oracle driver that handles
1579  if the database_name should be used for connections of the username
1580- oci8 driver now uses native bind support for all types in prepare()/execute()
1581
1582Interbase driver:
1583- completely revised ibase driver, now passing all tests under php5
1584
1585Frontbase driver:
1586- fbsql: use correct error codes. Was using MySQL&apos;s codes by mistake.
1587
1588MySQLi driver:
1589- added mysqli driver (passes all tests, but doesnt use native prepare yet)
1590
1591DB wrapper
1592- fixed a large number of compatibility issues in the PEAR::DB wrapper
1593
1594Iterator
1595- fixed several bugs and updated the interface to match the final php5 iterator API
1596- buffered result sets now implements seekable
1597- removed unnecessary returns
1598- throw pear error on rewind in unbuffered result set
1599- renamed size() to count() to match the upcoming Countable interface
1600
1601Extended module:
1602- modified the signature of the auto*() methods to be compatible with DB (bug #3720)
1603- tweaked buildManipSQL() to not use loops (bug #3721)
1604
1605MDB_Tools_Manager
1606- updated raiseError method in the Manager to be compatible with
1607  XML_Parser 1.1.x and return useful error message (fix bug #2055)
1608- major refactoring of MDB2_Manager resulting in several new methods being available
1609- fixed error in MDB2_Manager::_escapeSpecialCharacter() that would lead to
1610  incorrect handling of integer values (this needs to be explored in more detail)
1611- several typo fixes and minor logic errors (among others a fix for bug #2057)
1612- moved xml dumping in MDB2_Tools_Manager into separate Writer class
1613- fixed bugs in start value handling in create sequence (bug #3077)
1614   </notes>
1615  </release>
1616  <release>
1617   <version>
1618    <release>2.0.0beta2</release>
1619    <api>2.0.0beta2</api>
1620   </version>
1621   <stability>
1622    <release>beta</release>
1623    <api>beta</api>
1624   </stability>
1625   <date>2004-04-25</date>
1626   <license uri="http://www.example.com">BSD License</license>
1627   <notes>
1628The core of MDB2 is now fairly stable API-wise. The modules, especially the
1629manager and reverse module, might see some API refinement before the first
1630stable release.
1631- added listTables() and listTableFields() methods to MDB2_Driver_Manager_mssql
1632  and MDB2_Driver_Manager_oci8
1633- reversed parameter order of getValue(), type parameter is now optional and
1634  will then be autodetected (BC break!)
1635- renamed get*Value() to quote*() (BC break!)
1636- fixed LOB management in MDB2_Driver_ibase
1637- moved getOne, getRow, getCol, getAll back into the exteneded module (most
1638  users should be able to move to the queryOne, queryRow, queryCol and queryAll
1639  equivalent) (BC break!)
1640- added getAssoc to the extended module
1641- fixed bug in MDB2_Driver_Datatype_Common::implodeArray()
1642- added sequence_col_name option to make the column name inside sequence
1643  emulation tables configurable
1644- fixed a bug in the MDB2_Driver_oci8 and MDB2_Driver_ibase buffering emulation
1645  when using limit queries
1646- removed MDB2_PORTABILITY_NULL_TO_EMPTY in favor of MDB2_PORTABILITY_EMPTY_TO_NULL
1647  this means that DB and MDB2 work exactly the opposite now, but it seems more
1648  efficient to do things the way Oracle does since this is the RDBMS which
1649  creates the original issue to begin with (BC break!)
1650- fixed a typos in getAll, getAssoc and getCol
1651- test suite: moved set_time_limit() call to the setup script to be easier to customize
1652- renamed hasMore() to valid() due to changes in the PHP5 iterator API (BC break!)
1653- renamed toString() to __toString() in order to take advantage of new PHP5
1654  goodness and made it public
1655- MDB2_Driver_Datatype_Common::setResultTypes() can now handle missing elements
1656  inside type arrays: array(2 =&gt; &apos;boolean&apos;, 4 =&gt; &apos;timestamp&apos;)
1657- fixed potential warning due to manipulation query detection in the query*()
1658  and the get*() query+fetch methods
1659- added tests for fetchAll() and fetchCol()
1660- performance tweaks for fetchAll() and fetchCol()
1661- fixed MDB2_Driver_Manager_mysql::listTableIndexes()
1662- fixed MDB2_Driver_Common::debug()
1663- renamed MDB2::isResult() to MDB2::isResultCommon()
1664- added base result class MDB2_Result from which all result sets should be
1665  inherited and added MDB2::isResult() which checks if a given object extends from it
1666- added &apos;result_wrap_class&apos; option and optional parameter to query() to enable
1667  wrapping of result classes into an arbitrary class
1668- added $result_class param to all drivers where it was missing from the
1669  query() and _executePrepared() methods
1670- applied several fixes to the PEAR::DB wrapper
1671- fixed a typo in MDB2_Driver_Reverse_pgsql::tableInfo()
1672   </notes>
1673  </release>
1674  <release>
1675   <version>
1676    <release>2.0.0beta1</release>
1677    <api>2.0.0beta1</api>
1678   </version>
1679   <stability>
1680    <release>alpha</release>
1681    <api>alpha</api>
1682   </stability>
1683   <date>2004-03-12</date>
1684   <license uri="http://www.example.com">BSD License</license>
1685   <notes>
1686- fixed bug in MDB2::singleton
1687- fixed minor bugs in prepare/execute
1688- added PEAR::DB wrapper (not working yet)
1689- fixed several bugs in the ibase driver
1690- fixed several PHP5 related issues
1691- fixed bug in sequence creation on MySQL
1692- fixed issues with nextid() ondemand handling in conjunction with currId()
1693- added native currId() implementation for the Oracle driver
1694- fixed sqlite driver (passes all but the REPLACE test due to a conformance issue in sqlite itself)
1695- removed decimal_factor property to allow changing of decimal_places option
1696- using native escape string methods in sqlite and mysql driver
1697- fixed minor conformance issues in tableInfo() in the oci8 and mysql driver
1698- removed optimize option and added portability option instead (ported from DB)
1699- added quoteIdentifier() method (ported from DB)
1700- added STATUS document to make the status of the drivers more transparent
1701- fixed a few bugs in querysim driver
1702- fixed issue in mysql reverse engineering: ensuring the correct case is used when
1703  doing assoc fetches based on portability flag setting
1704- updated reverse engineering script to the new MDB2 API
1705- removed broken implementations of currId() in the mssql and fbsql driver
1706- fixed a few instances of MDB_Common to the new class name of MDB_Driver_Common
1707   </notes>
1708  </release>
1709  <release>
1710   <version>
1711    <release>2.0.0alpha1</release>
1712    <api>2.0.0alpha1</api>
1713   </version>
1714   <stability>
1715    <release>alpha</release>
1716    <api>alpha</api>
1717   </stability>
1718   <date>2004-01-05</date>
1719   <license uri="http://www.example.com">BSD License</license>
1720   <notes>
1721This is the first alpha release of MDB2 2.0.
1722
1723MDB2 2.x breaks backwards compatibility in many ways in order to simplify
1724the API for both users and drivers developers.
1725
1726Please note that currently only the MySQL, the PostGreSQL and the Oracle driver
1727have been tested to pass the test suite.
1728
1729Here follows a short list of the most important changes:
1730- all code that is not necessary for basic operation is now separateed
1731  into separate modules which can be loaded with the loadModule() method
1732- all datatype related methods have been moved to a dataype module with
1733  the notable exception of getValue() and the newly introduced getDeclaration()
1734- added extended module for highlevel methods
1735- all manager method are no longer available in the core class and or
1736  now only available in the manager module
1737- all reverse engineering methods have been taken from the manager class
1738  and are now available through the reverse module
1739- a new module has been added to allow the addition of methods with
1740  RDBMS specific functionality (like getting the last autoincrement ID)
1741- LOB handling has been greatly simplified
1742- several methods names have been shortend
1743- the fetch.+() methods do not free the result set anymore
1744- the Manager and the reverse_engineer_xml_schema have been moved into
1745  a Tools directory
1746- all parameters are now lowercased with underscores as separators
1747- all drivers now support all of the dsn options that PEAR DB supports
1748- several methods have been removed because they offered redundant functionality
1749- changed prepare API type is now passed to prepare and not to setParam*()
1750- results are now wrapped inside objects and all methods which operate
1751  on resultsets have been moved into respecitive classes
1752- there are two types of result object: buffered (default) and unbuffered
1753- totally rewrote buffering and limit emulation
1754   </notes>
1755  </release>
1756 </changelog>
1757</package>
1758