Hello, Finally I made time to put a new Metabase release together celebrating the 2nd aniversary since its first public release which is also the 3rd aniversary since I started developing it.
For this release I added new features that either were requested or contributed: - Query result bulk data fetching - There is now a set of functions that let you query databases, collect results into single variables and free the results in a single call. These functions were contributed by Lukas Smith and Christopher Linn. These functions are meant not only to reduce the number of Metabase API calls necessary to perform common types of queries but also to optimize the result set data retrieval process. This was introduced to overcome some complaints that Metabase would not perform as fast as other PHP database abstraction packages. There is now a function that retrieves a single result set row and is optimized for each of the supported types of database. Around this and other functions there are now some new functions that let you retrieve just the first field of the first row, just the first row, just the first field of all rows and all the fields of all rows. Additionally, these new functions may convert the data types of the data that is retrieved if necessary by specifing a data type mapping array before retrieving the query results. If no data type is necessary, for instance with result sets with only text and integer fields, no conversion is performed, thus providing full database portability when necessary without compromising Metabase ability to retrieve result set data at the highest speed. - Customizable error handling - There is also now a function to specify a error handling function. This is meant to please those that want to provide custom error handling separately from their main database programming code. - SQL REPLACE abstraction - There is now a function that lets you execute SQL REPLACE command like what MySQL provides, but in a way that works with almost all databases. SQL REPLACE is non-standard SQL command that is like SQL INSERT, except that instead of just inserting a new row, first it figures if there is already a row with the same primary key values. If such row exists, it just updates it with new values, otherwise it inserts a new row. This is very good to add or update entries to relationship tables that have as primary keys, the keys of other two or more tables. To implement this command, Metabase uses transactions with the databases that support them, except for MySQL that has native support for SQL REPLACE. For this release it was not possible to already integrate the Sybase driver that was contributed by Sergio Zia. It will be done in a next release after it is properly tested with the Metabase driver conformance test as it is the standard for Metabase to assure the quality of its drivers by only releasing what has be throughly tested. Since Metabase feature list is not stopping to grow, in a future release I also want to split all these optional features in such way that each programmer only loads what their scripts need avoiding further PHP compilation overhead. That is all for now. If you would like to have some feature in Metabase please feel free to approach either by contributing with code or just suggesting what you have in mind even if you feel that you don't have the time or the skill to do it yourself. Metabase is free Open Source package and can be found with full documentation and tutorials here: http://phpclasses.UpperDesign.com/browse.html/package/20 Regards, Manuel Lemos -- PHP Database Mailing List (http://www.php.net/) To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]