2. Changelog

In this section you can check the changes history of the pgExpress Driver.

If you have doubts or need support, please write us at support@vitavoom.com.

Version 3.02 - Release Date: 01 Apr 2005
Minor bugfix release, mostly BLOB related.
ADDED

eMetaDefaultSchemaName support (D2005+): returns "public".

CHANGED

Blob operations are less verbose on the TSQLMonitor.

CHANGED

For better dbExpress™ compliance, the MaxBlobSize parameter now is ignored (but still stored internally).

CHANGED

Fishfact demo updated, and added a D2005 version.

FIXED

Blob write buffer changed to 4 Kb; it should work with most servers.

FIXED

Fixed a D2005 bug in the FishFact demo that would prevent quoting of the field names (FishFact's database field names are case sensitive). In fact, this is more a TDatasetProvider bug workaround ( TDatasetProvider.Options.poUseQuoteChar is initialized as False).

FIXED

Some BLOB interface fixes, including better asynchronous compatibility. Check also the BLOB documentation for new tips.

Version 3.01 - Release Date: 24 Mar 2005
Minor bugfix release.
FIXED

Fixed a bug where a wrong license would give a "65535" error message instead of "Invalid license...".

FIXED

Fixed timestamp fields inserting/updating.

FIXED

Fixed logging of command executions.

Version 3.00 - Release Date: 15 Mar 2005
New major version.
ADDED

Enhanced PostgreSQL 8.0 support.

ADDED

Delphi 8 and 9 support.

ADDED

Asynchronous connections support. This allows cancelling queries in execution. See more on Section 4.10, "Canceling a query".

ADDED

libpq updated to v8.01.

ADDED

New standard-based translation system: gettext. This will allow anyone to make it's own translation, contribute a translation, or even modify existing ones.

ADDED

Added multiple transactions support (PostgreSQL 8+)

ADDED

The traditional PGEDemo demo now has two versions: CLX and VCL.

CHANGED

Internal code cleanup and rearrangement.

CHANGED

Now pgExpress reads the actual object's name size from the server (ISQLMedata.eMetaMaxObjectNameLength option). This will allow the pgExpress Driver to adjust itself better to custom builds of the server where the the NAME fields are not default (64 chars).

CHANGED

New key/registration system.

FIXED

Fixed ServerDecimalSeparator issue with localized servers, specially those which use "," as decimal separator.

FIXED

Fixed a bug in PostgreSQL bytea fields (VarBytes/Bytes field): it was missing the 2 bytes length specifier at the beginning of the stream.

FIXED

Fixed TimeStampTz fields issue with locales that use "," as decimal separator.

FIXED

Fixed ISQLMetadata.Getprocedures method to be more schema-friendly.

FIXED

Fixed handling of seconds fractions on TSQLTimespamp fields.

Version 2.31 - Release Date: 06 Jul 2004
Bugfix release. Attention to the new BLOB documentation
ADDED

New demo: StoredProcs. Demonstrates how to use a Stored Procedure (PostgreSQL Function) with pgExpress.

CHANGED

BLOBs documentation seriously revised. Take a look on the new documentation and way to create the 'lo' type.

CHANGED

FishFact demo updated.

FIXED

Some bugs on the Large Objects (BLOBs) interface/type mapping have been fixed. Fixed also the trigger and cleanup function.

FIXED

Fixed another bug in the Fetch Cursors interface.

FIXED

Fixed a small SQL parser bug.

Version 2.30 - Release Date: 18 Jun 2004
Some enhancements and bugfixes. Next version should be 3.0 and add full support for D8, PostgreSQL v7.5, asynchronous queries and other changes. Do you want to see a feature implemented? Write us: support@vitavoom.com.
ADDED

A new Special param, LogDeclareFetch, allows to filter the internal DECLARE/FETCH commands executed by the pgExpress Driver when using Fetch Cursors.

CHANGED

Compiled with Delphi v7.1. This Delphi version has several updates on the dbExpress™ and TClientDataset areas and is highly recommended to everyone developing using Delphi.

CHANGED

libpq upgraded to v7.4.3.

CHANGED

Enhanced documentation again.

FIXED

On PostgreSQL 7.4+, the automatic DECLARE/FETCH interface was revised and should be working on all situations. Cursors now are closed correctly on all situations and the "cursor pgeCursor already declared" error message which could appear on PostgreSQL v7.4+ is fixed, since the cursors now will have an unique name.

FIXED

Large Objects (Blobs) bug fixed: on certain configurations, dbExpress™ will not open a transaction when writing to a field, but a transaction is needed for Large Object operations. Now pgExpress will open a new transaction if needed.

Version 2.20 - Release Date: 09 Jan 2004
Bugfix release; (enhanced) support for PostgreSQL v7.4.
ADDED

Updated support to PostgreSQL v7.4.

CHANGED

Smarter libpq handling and locating, specially under Kylix.

CHANGED

The libpq library was updated to version 7.41. SSL dependency was dropped since not everyone had SSL installed. Users that want SSL suport should provide a SSL enabled libpq.

CHANGED

Varchar fields (with no size specifier) are now mapped to VCL/CLX  Memo fields, since they behave exactly like TEXT fields.

CHANGED

Internal enhancements make the metadata faster and use less memory.

CHANGED

Enhanced documentation/FAQ.

CHANGED

With the PostgreSQL v7.4 support, a new notice processor was introduced. The NOTICE messages generated by the server will not have the "NOTICE: " prefix anymore. If someone wants the old behavior for some reason, please mail us and we might be adding a special param for this.

Also, "ERROR:" will not be inserted before error messages anymore.

FIXED

Fixed a StoredProc bug that would prevent some functions to be found/run successfully

FIXED

Fixed "Connection Timeout" D7 param (do not confuse with pgExpress ConnectionTimeout special param).

FIXED

Fixed a bug in the GetColumns() interface.

FIXED

Fixed a VCL/CLX  bug in the ISQLCommand.SetParameter() interface: the VCL/CLX  was passing Boolean, Date/DateTime and Bcd fields as having length 0 (zero), instead SizeOf([type]). This made the pointer allocated to parameter to be set to nil and cause a error in pgExpress. Now pgExpress fixes itself the Length parameter.

Version 2.10 - Release Date: 25 Jun 2003
New Multilanguage driver, new demos, bugfixes and better support for Kylix console applications.
ADDED

Support for NOTICEs and warnings from the server, on the TSQLMonitor. These messages will be logged automatically now. More details here.

ADDED

The ErrorResourceFile parameter now allows loading an specific language by default.

ADDED

New Sequences demo that demonstrates uses of sequences (or any other server-generated values).

ADDED

New Console demo that demonstrates how to use pgExpress from a console mode application.

ADDED

Enhanced money type detection; should work on more locales now.

ADDED

More documentation formats: html-chunked (default), HTMLHelp (.chm file) and html (single file).

ADDED

Two new utility functions: SetLanguage and GetLanguage that work with the multilanguage driver.

CHANGED

The formar Multilanguage distribution has been dropped due to the introduction of the Multilanguage Driver. Now both drivers, English and Multilanguage (which includes all languages including English itself) are available on all pgExpress distribution packages.

CHANGED

Now htmlhelp is the primary documentation format for the install (Windows only) version.

CHANGED

Updated libpq library to v7.3.3.

CHANGED

Updated documentation and FAQ.

CHANGED

Enhanced driver logs (those monitored by TSQLMonitor). Among other things, now the PostgreSQL libpq and pgExpress Driver version numbers/paths are logged (some info is available only under Windows). The pgExpress Driver also logs its build time now. This should help debugging.

FIXED

Fixed a bug that could lead to slow updates /connect times on the Delphi version of the driver.

FIXED

Console apps now should work better under Kylix, not requiring XLib™ to be present.

FIXED

Some documentation fixes:

  • On v2.0, the Bulgarian language was mistakenly documented as being "belgian". That is correct now.
  • BlockRead param defaulting to True was inaccurately documented in 2.0.
  • Other minor fixes.
Version 2.00 - Release Date: 10 Mar 2003
New major version.
ADDED

PostgreSQL 7.3 is supported. All the metadata interfaces have been thoroughly revised to support introduction of Schemas. You can even retrieve metadata with fully qualified names.

ADDED

BLOB writing support. Please refer to the Section 4.7, "Large Objects (BLOBs)" section for more details.

ADDED

Native support to int8 (Int64/bigint) type. Now this is the default for int8 fields; users that want old behavior (which is typecasting Int8 as BCD numbers) can force its use through the use of the Int8Mode special parameter. Many thanks for Peter Sawatzki (http://www.sawatzki.de) for pointing out the hack.

ADDED

With PostgreSQL 7.3, schemas are now supported through use of the RoleName parameter. Just use something as:

RoleName = public, a, b

to set the RoleName.

ADDED

Support for Custom Parameters on Delphi 7. The Custom String parameter can be used to set the Special Params (please see docs for details).

ADDED

Driver more compatible with Delphi 7. The following ISQLConnection.getOption() values are interpreted:

  • eConnOnLine
  • eConnServerPort
  • eConnQualifiedName
  • eConnQuotedObjectName
  • eConnSchemaObjectName
  • eConnCatalogObjectName
  • eConnObjectObjectName

These options bring also better schema support.

ADDED

Support for functions that return multiple rows (PostgreSQL 7.3 and above).

ADDED

New Special Parameter: RetainCursor. Will retain the cursor for the previous SELECT statement. This will avoid the same query to be run twice for non-cached datasets. This an experimental switch and should not be used by all users. Please read the docs.

ADDED

Support for the ServerPort parameter. Will work the same way it does for the Borland PostgreSQL driver. It allows to specify the port number to connect to. This setting is available from D7

ADDED

New Special Parameter: UseQualifiedNames (for PostgreSQL 7.3+). Will show qualified names (Schema + '.' + ObjectName) for metadata objects. Default: False.

ADDED

New Special Parameter: RestrictedNameSpace (for PostgreSQL 7.3+). It controls how the metadata is retrieved. If RestrictedNameSpace is True, only objects in the current namespace search path will be retrieved. If False, all objects will be retrieved, regardless of which namespace they are in.

ADDED

New Special Parameter: RequireSSL. Will only connect to the server in SSL mode. Currently will work only under Kylix with SSL compiled libpq (Windows libpq can't be compiled with SSL).

ADDED

New Special Parameter: ConnectionTimeout (needs libpq 7.3 and above; included with distribution). Allows to specify connection timeouts (in seconds). On Delphi 7, the regular driver parameter [Connection Timeout] can also be used.

ADDED

New Special Parameter: AutoRecover. Will automatically try to recover the connection if it gets broken. Registered users only.

ADDED

New pgeDriverUtils.pas unit, with easy to use wrappers for retrieving information from the pgExpress Driver using the new Custom Info Parameters.

ADDED

New Custom Info: TTY - allows setting file or TTY for optional debug output from the backend.

ADDED

New Custom Info: BackendPID (read only). Will retrieve the PID of the process of the connection in the backend server.

ADDED

Support for the eConnOnline ISQLConnection.getOption() interface (D7+ only). Will return True if the driver is properly connected to the server, False if not. See the pgeDriverUtils unit for example usage.

ADDED

New Special Param: ShowOID. Will show OID (if existent) as a field on the table, when quering metadata (ISQLCursor.getFields()).

ADDED

The following driver languages are now available:

  • Bulgarian
  • Hungarian
  • Slovak
  • French
  • Italian
ADDED

Documentation completely revamped. Now DocBook™ is used to keep the documentation. The HTML, HTML (Chunked) and HTML Help formats are available.

ADDED

New libpq library, from PostgreSQL v7.32, added to the distribution.

CHANGED

With the introduction of the hack that allows native use of Int8 fields, the AsInt8 parameter becomes obsolete. Please check Native Int8 support for more details.

CHANGED

Code cleanup.

CHANGED

Now, objects (Tables, field names, etc.) with spaces or other non-standard characters will be quoted automatically even if the QuoteObjects special param is not in use. D7+ only.

FIXED

With the extra D7 dbExpress™ API implementation, the "parse error" messages trying to use

CommandType = ctTable

should be gone (D7 specific bug).

FIXED

Solved bug loading pgExpress from DLLs/OCXs/etc. Now it should be ok to use pgExpress from a ISAPI DLL, for instance.

FIXED

The FETCH cursors were not logging the additional FETCH commands into the TSQLMonitor as they should (according to the docs), but just the first one.

FIXED

Fixed bug on string parameters that were already quoted.

FIXED

Fixed Kylix bug that would keep the IDE from being detected.

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

Localized Drivers support. Now pgExpress support the following languages:

  • English
  • Portuguese (Brazilian)
  • Spanish
  • German
  • Icelandic
  • 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

Updated PGEDemo. Now it should be more portable to Delphi 7.

CHANGED

Updated installer (Windows version only).

REMOVED

The packages version of the driver has been dropped.

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

The use of Money/Currency type should be ok now.

Version 1.50 - Release Date: 04 Sep 2002

Major new version.

Important release notes:

  1. The registration process has changed. Registered users, please refer to the file in your distribution.
  2. Check the new way of passing custom parameters to the connections (using the Database parameter setting). 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 7 and Kylix 3 will be supported in the next version.

ADDED

New custom setting: QuoteObjects. Setting this option to True will make the pgExpress 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 PostgreSQL types are (re)mapped into dbExpressVCL/CLX  types.

ADDED

Unsafe SQL parameters and now properly escaped (using libpq's PQescapeString() function).

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 enhancements (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 more 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 parameter 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

An INSERT/UPDATE/DELETE 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 TMemoField.

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 MultiByte support.
First stable release.
ADDED MultiByte support. Now the pgExpress Driver is able to support locales using the libpq's MultiByte support. Please refer to the PostgreSQL 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 ISQLMetadata.getColumns() method that got broken on PostgreSQL 7.2 because the OID fields got optional. This makes the internal VCL/CLX 's SQL editor (the one acessible from the TSQLDataset.CommandText property when CommandType=ctQuery) and the TSQLDataset.GetColumns() method work again.

Note

Older (beta) versions information has been ommited.