pgExpress Driver Changelog


This is the changelog history for the pgExpress driver.

Version 1.60 Release Date: 13 Oct 2002

Enhancements and bugfixes.

ADDED - New custom setting: FetchCursor. Allows one to use automatically DECLARE/FETCH cursors. Rows will be retrieved on demand. For registered users only.
ADDED - Localization support. Now pgExpress support the following languages: English, Portuguese (Brazilian), Spanish, German, Icelandic and Chinese (Taiwan). More languages to come...
ADDED - New custom setting: ServerDecimalSeparator. Will allow to force a Decimal separator char on the server. This should not be necessary, however, since pgExpress is able to find out the correct chars automatically.
ADDED - New demo: Params. A simple demonstration of use of Params with pgExpress.
CHANGED - Updated documentation.
CHANGED - Demo version now allows only max 15 update/isert/delete commands per transaction.
CHANGED - The packages version of the driver has been dropped.
CHANGED - Updated PGEDemo. Now it should be more portable to Delphi 7.
CHANGED - Updated installer (Windows version only).
FIXED - Fixed bug for some types of prepared queries.
FIXED - Fixed "not under Delphi" issues
FIXED - Fixed PostgreSQL loss of precision when using functions on numeric values returned by functions suchs as "select max(my_numeric_field) from test;".
FIXED - Use of Money/Currency type should be ok now.


Version 1.50 Release Date: 04 Sep 2002


Important Notes
:
1. The registration process has changed. Registered users, please refer to the Registration.htm file in your distribution.
2 . Check the new way of passing custom parameters to the connections (using the Database property). This obsoletes the dbxdrivers.ini custom params now.
3 . Since now the TEXT fields will be mapped to Memo fields by default, some applications can get broken. Either fix them (recommended) by deleting the old fields and recreating them or use the TextAsBlob = False custom setting for getting the old behavior.

ADDED - Delphi 7 support. The driver should work with Delphi 7 now. Some of the small new features of dbExpress introduced on Delphi and Kylix 3 will be supported in the next version.
ADDED - New custom setting: QuoteObjects. Setting this option to True will make the pgExpress Driver quote object names (fields, tables, etc.). Some users needed it to port SQL queries from phppgadin, for instance. More info on the documentation.
ADDED - New custom setting: GetExtendedFiledInformation. This setting will get extended information about the fields in a dataset; more specifically, get it will allow to check if a field is AutoIncrement or is nullable. Please check the docs for more information.
ADDED - New custom setting: TypesCachingMode. This setting controls how often the Types from PostgreSQL are (re)mapped into dbExpress/VCL types.
ADDED - Unsafe SQL parameters and now properly escaped (using libpq's PQescapeString).
ADDED - Docs enhanced.
ADDED - New libpq included. This should fix the Multibyte problems that some users have been having.
ADDED
-
Better support for foreign locales (those using ',' as Decimal separator).
ADDED - Installer changes (on Windows platform).
ADDED - Several small internal optimizations and support for the forthcoming pgExpress Suite.
CHANGED
- The registration procedure is changed. The old way (Registry keys) lead to some portability issues. The new way makes it much easier to deploy your applications and don't requires anything special to be done on the target machines.
CHANGED - Now PostgreSQL TEXT fields will be mapped to Memo (BLOB) fields by default. This will make grids faster, reduce memory requirements and it does make sense after all.
CHANGED - Changed some messages that will appear on the TSQLMonitor components.
CHANGED - The custom parameters on the dbxdrivers.ini file are now obsolete and not supported anymore. They can remain there but will be ignored Please query the documentation for the new way of passing parameters using the Database setting (in the Special Params section).
CHANGED - The ISQLMetadata.getColumns interface is enhanced and will provide much more accurate information to TSQLDataset.SetSchemaInfo(stColumns, '', '') calls.
FIXED - A update/delete/insert bug exception could occur when updating to null values. This is fixed now.
FIXED - The ISQLMetadata.GetProcedureParams() was not working properly due to some internal changes whose were needed for our upcoming product: the pgExpress Suite. Now the Stored Procedures (emulated through functions) parameters are automatically filled again.
FIXED
- The MaxBlobSize parameter was not being considered for text fields mapped as TMemoFields.
FIXED - Some minor bugs.


Version 1.0a Release Date: 26 Jul 2002

Small bugfix version.

FIXED - I've added a small last-minute bug in the last version. When you closed and reopened a dataset, the fields wouldn't get remapped and that would cause a GPF with "Catastrophic failure" message. I apologize for that.


Version 1.00 Release Date: 25 Jul 2002

Several optimizations, some bugfixes and Localization support.

ADDED - MultiByte (Localization) support. Now the pgExpress is able to support localizations using the libpq MultiByte support. Please refer to the documentation for more details.
CHANGED - Several internal optimizations
CHANGED - TEXT fields are now mapped as Memo fields. This will make them much more efficient in terms of memory utilization and enhance the application's performance. Please refer to our FAQ for more information.
CHANGED - Now the driver uses a smarter algorithm to detect thousands and decimal separators automatically.
CHANGED - Binary BLOB fields are marked read only. This change have to be made because there is no reliable way to update the PostgreSQL Large Objects on dbExpress (due to the OID nature of the Large Objects).
FIXED - Fixed some UPDATE bugs.
FIXED - Fixed NUMERIC field bug that could be raised on some conditions (scale was scale + 4 making the fields appear to be divided by 10000).
FIXED - Fixed ISQLMetadat.getColumns() method that got broken on PostgreSQL 7.2 because the OID fields got optional. This makes the internal VCL's SQL editor (that from the TSQLDataset.CommandText property when CommandType=ctQuery) and the TSQLDataset.GetColumns() method work again.


Version 0.96b Release Date: 02 May 2002

Bugfix revision.

CHANGED - Some internal changes and optimizations.
CHANGED - Demo "PGEDemo" updated.
FIXED - Fixed a bug where an empty string parameter would raise a server error (thanks Andy Samuel for reporting).
FIXED - Fixed a bug where an ExecuteDirect() call could make the demo driver think it's not under the IDE.
FIXED - Fixed "Invalid timestamp" errors on PostgreSQL 7.2 timestamp fields with timezones and milliseconds precision.
Quoting from http://www.postgresql.org/idocs/index.php?functions-datetime.html#FUNCTIONS-DATETIME-CURRENT:
" ==> Note: Prior to PostgreSQL 7.2, the precision parameters were unimplemented, and the result was always given in integer seconds."
Thanks Garry Gebhardt for testing.
FIXED - Fixed libpq reloading which could break multiple connections.


Version 0.96a Release Date: 16 Apr 2002

Minor Release.

ADDED - Int8 support as Bcd (PostgreSQL [numeric] field). They should work transparently to the end user as they were Int8 fields. This wasn't on the previous version because there are many bugs related to Bcd fields on Delphi 6; they were fixed on Update Packs 1 and 2. We think however that with took extra care in the implementation to avoid raising such bugs even on plain Delphi 6 (without service packs). We urge you, however, to update your Delphi distribution to the latest service pack to ensure everything will work ok. Kylix (specially v1) seems to suffer from the same bugs; please update it too. Int8 as Bcd is the new default mapping for Int8 fields. Please use the Int8Mode driver option if you want to change it.
FIXED - Under certain conditions, a failed database login could lead to a driver exception. This bug was introduced on v0.96.


Version 0.96 Release Date: 15 Apr 2002

Fixes and a few enhancements.

ADDED - A new installation package is available to make it easier to install the pgExpress Driver. It's availble at the Vita Voom Software's website. It will install the driver and also create entries on the dbxdriver/dbxconnections files automatically. You should however tune the [PGEConnection] entry it creates to meet your configuration. The regular zip package is also available.
ADDED
- A small demo (PGEDemo) is added to the distribution.
The demo will compile on both Kylix and Delphi.
ADDED
- Arrays support by default now. This is a delicate issue; arrays in PostgreSQL always have variable length, regardless of what is declared in it's table definition (that is for documentation only)
. Thus, arrays are supported if mapped as strings.
ADDED - Better int8 variable support. Unhappily, dbExpress does not provide int8 support. This made the driver misbehave with tables that use int8 types (including int8 serials such as those generated by phpPgAdmin, PgAdmin II and the alike). Now the int8 type is support by default as a String type, but it can also be mapped as Int4 or ignored (please refer to the docs).
ADDED - Better documentation about the special params supported by the pgExpress driver (MapUnknownAsString, ArrayAsString, etc.)
ADDED - new libpq interface library from PostgreSQL 7.21 (for both Windows and Linux).
FIXED
- Fixed a bug where select queries using parameters (TCustomClientDataset.Params or TCustomSQLDataset.Params descendants) would not run properly.
FIXED - Fixed int8 support (including new option in dbxdrivers.ini).
FIXED - Fixed 'Format '%s' invalid or incompatible with argument' when demo limit of 50 updates/inserts/deletes per transaction reached.


Version 0.95a Release Date: 24 Feb 2002

Bugfix revision.

CHANGED - Added more installation instructions for Kylix.
FIXED
- Fixed a small bug on datetime fields that use timezone.
FIXED - The first 0.95 distribution didn't include a libpq.dll file. Now that's fixed.


Version 0.95 Release Date: 12 Oct 2001

Major revision. Many internal changes have been made to support Stored Procedures and other features. The driver was rewritten in about 60%.

ADDED - Stored Procedures support. Since PostgreSQL currently has no real support for stored procudures, they are emulated through Functions (create by using "create function" statments). Functions that return "opaque" can't be supported because they can only be called by triggers or rules. Functions that return "SETOF" types (datasets) will be supported probably on the next version.
ADDED - Now the driver will read extra, non-standard options from the dbxdrivers.ini file. Those options include "TypesCachingMode", "TextAsBlob" and "MapUnkownAsString".
ADDED - A new version of the libpq library was added, and the new PQescapeString and PQescapeBytea and PQfreeNotify functions are now available.
ADDED
- Added TypeMappings caching. The PostgreSQL native types information will be cached on the driver level (default), the connection level or the cursor level. PostgreSQL requires a types lookup due to it's dynamic typing nature. This option reduces traffic to the server and makes the driver faster. As said, this option defaults to "driver" (meaning that types will be cached only once per session) and can be changed by setting the dbxdrivers.ini "TypesCachingMode" option.
For more details about TypeMappings caching, please refer to the driver documentation.
For more information about the PostgreSQL types mechanism, please refer to the PostgreSQL Manuals.
ADDED - "TextAsBlob" option. This dbxdrivers.ini setting will make the text fields to be mapped as BLOBs. That can make you support PostgreSQL 'text' fields larger then 32Kb.
ADDED - "MapUnknownAsString" option. This dbxdrivers.ini setting will make unknown types to be mapped as strings. Virtually all PostgreSQL types can be supported using this option. This option defaults to true on the driver but can be set to False if you don't like it.
ADDED - The registered version of the driver now supports int2vector and oidvector types, and maps them as integer arrays.
ADDED - Database server checking. Now the driver will enforce that PostgreSQL 7.1 or superior is being used. The driver is not compatible with older servers.
ADDED - Portuguese translation of the driver. If you want to contribute with a translation, please email us.
ADDED
- Callback function support. Now the pgExpress driver will work properly with TSQLMonitors.
ADDED
- Support for HostName parameter in dbxconnections.ini file.
CHANGED - Now the driver will use the interface library specified by the "VendorLib" parameter in the dbxdrivers file. If this is not set, defaults to "libpq.dll" on windows systems, or "libpq.so" on linux.
CHANGED - MANY internal changes and optimizations. The driver should be more flexible then ever.
CHANGED - Made driver more compatible with other Borland drivers.
FIXED - Fixed a bug where the path environment would not be properly detected, causing the library to not be located.
FIXED - Fixed a few blob bugs.
FIXED - Fixed a small fldVARBYTES and fldBYTES bug (please document things better, Borland ;-) ).


Version 0.90a Release Date: 10 Oct 2001

Maintence release.

ADDED
- Kylix support. pgExpress is now also avaiable under Linux.
CHANGED
- Updated the libpq.dll interface library to one from a PostgreSQL 7.2 CVS snapshot. This version fixes a bug where a query with more then 8191 bytes would kill the database connection. This was actually a PostgreSQL bug, not pgExpress.
FIXED - Fixed a bug where a query with more then 8191 bytes would kill the database connection (read above).
FIXED - Fixed a bug where the path environment would not be properly detected, causing the library to not be located. This error occurs only on a very few systems and was very difficult to detect.
FIXED - Fixed "LIBPQ library [%s] was not found". - argument '%s' was not being expanded.


Version 0.90 Release Date: 05 Jul 2001

First release of the pgExpress Driver.