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

- 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

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:

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]

Reply via email to