Subject Build 52 released.
Author kylixguru
All,

Here is the release notes of build 51 and 52.

8/21/2012 Version 5.0.2 [Build 52]

I fixed a problem with duplicate parameters of the same name not being resolved to a single parameter when they were of type DATE or TIME. They are all now resolved to a TIMESTAMP parameter so that they will also resolve with other parameters of type DATE, TIME or TIMESTAMP if they are given the same parameter name. I also made it so that CHAR columns will coerce to VARCHAR if they are in a duplicate situation together. It will also make the length go to the longest of the two being combined.

I fixed a problem having to do with executing statements during the BeforeDisconnect event of the connection. I was preventing new transactions from starting if the connection was in csDisconnectPending state. I softened this up so that it is possible to do things in the BeforeDisconnect event without causing a problem.

I enhanced the handling of BufferSynchroFlags so that it will coordinate with the use of the RETURNING clause in DML statements more accurately and efficiently. If you include all of the fields in the query in the RETURNING clause of your custom InsertSQL or EditSQL then you can avoid having to have the record refetched because it will know all of the needed information was in the returned values. This change also cured a blind spot where the record wasn't being refetched (synchronized) as it was in the past before I included support for the RETURNING clause. Before it just looked to see if a row was returned and if so then in some cases it would wrongly suppress the refetch. It assumed all values of interest were included in the RETURNING clause.

I also improved the performance of using EditSQL and LockSQL so that it won't refetch the record prior to executing the statement if these properties are used. It now assumes you are operating on searched values without the need of positioned updates that require an open cursor on the server for editing. I also included very detailed tests for this in the regression testing app.

I added a new protected property to the internal TIB_BindingCursor so that I could keep accurate metrics in the regresion testing app to make sure IBO is functioning as efficiently as possible. The property simply increments each time a "QuickFetch" is performed and is called QuickFetchGen.

I reduced the number of calls to TIB_Connection.Characteristics in order to try and improve performance.

I added in a check for exceptions during the TIB_Statement.SysStoreParamValueLinks method so that it won't interrupt an Unprepare or component destruction. If there is an error it will simply omit that particular value that the error occurred on.

I enhanced the IB_SQL tool so that in the Browse form when looking at Generators it will handle the character set variations better. In some cases there were string truncation errors that prevented this from working properly. This fix is only valid for Firebird because I made use of the EXECUTE BLOCK statement to work around the issues.

I also improved the IB_SQL automated command-line ability to dump a database via the DataDump feature. I added a new switch /path=<OutputDir> so that you can determine where the files should be placed. I also made it so that you can store the tables and columns you want excluded in a layout. You use the switch /layout=<LayoutName> in order to tap into the settings associated with that Layout. If your layout is in a group you can use this format /layout=<GroupName>\LAYOUTS\<LayoutName> in order to access it. FYI: The switch to tell it to do a data dump is /action=datadump. I also added the ability to sort the fields in the export by their natural order instead of in their alphabetical order.

I improved the logic to look for a failed connection errcode so that IBO will respond more gracefully to failed or shutdown connections.

8/9/2012 Version 5.0.2 [Build 51]

I added in functionality to properly decipher the connection character set when you are using the dbHandleShared property. I also enhanced the routines that handle the CharSet to CharID conversions so that they will fall back on the metadata information if necessary. They were also moved to the SchemaCache class and out of the IB_Utils unit.

I put in a few changes to help optimize the performance when preparing queries.

I fixed a bug in the full text search mechanisms when using a phrase search. In some cases it wasn't finding matches it should have found due to the handling of single quote characters.

I fixed a bug with SearchedEdits being set to false. It was getting a server cursor in order to perform the update but in the process of doing that in some cases it would override the new values you were trying to post to the server. Now, it puts the updated fetch in the Old values buffer instead of overwriting the values in the New values buffer.

I removed some code that Delphi 3 needed in handling integers. In some cases it would turn an invalid value from the AsString property into -MaxInt instead of raising an exception as it should.

I fixed a bug in Delphi 5 handling of variants in the FindKey() method. It didn't handle the varInt64 type properly so I just cast it to a string and then it worked as it should.


Enjoy,
Jason