List of Bug Fixes in Update 2 for Delphi and C++Builder 2009

By: Kris Houser

Abstract: This article lists all the major bugs that are fixed in Update 2.

QC #: Date Reported: Area:
10013 2/14/2008 Database\DBExpress
Description: Steps:
A multithreaded application using the DBX4 Informix driver + the DBXPool delegate will cause a "Connection Name in Use" Informix exception to be thrown.

The customer had previously been using the Luxena DBX driver with a 3rd party connection pool product from RemObjects and the error did not occur with that driver.

I have attached a test case that reproduces the error most of the time.

It spawns multiple threads that open a connection to an Informix database, open a TSQLtable ad iterates through the rows and then closes the database at the end.

Please modify the connection to the database and choose a small table to iterate through. Please modify the column name on line 54 of IFxThreadUnit.pas and choose an alternative varchar column for your table.
QC #: Date Reported: Area:
62992 6/5/2008 Database\DBExpress
Description: Steps:
[QC Short Description]
DBExpress Problems reading/writing Text/Binary Blob Data in Interbase 7 and Blackfish

[QC Description]
Interbase 7 problems:
Reading / Writing Text/Binary Blob Data

BlackfishSQL Problems
Writiing Binary Blobs

Oracle I have not tested?????


example data - working fine for MS-SQL DBExpress driver--->
Read Text Blob
Var
BStream : TStream;
Blobfeld: TField;
St: String;

st := dmodul.quauswahl.FieldByName(zs).asstring; //it seems to make problems with Interbase

alternative this will be OK for MSSQL und MySQL
Blobfeld := dmodul.quauswahl.FieldByName(zs);
BStream:= dmodul.Quauswahl.CreateBlobStream(blobfeld,
bmRead);
try
sz := BStream.Size;
if sz > 0 then
begin
BStream.Read( .
End;
finally
BStream.Free;
end;

Write Text Blob
Var SParM: TParams;
Rtftxt: String;
SParM := TParams.Create(self);

dmodul.quauswahl.Close;
dmodul.quauswahl.SQL.Clear;
dmodul.quauswahl.SQL.Add( Insert Into BlobTab(ID,BLOBFLD)VALUES(1,:par) );
SParM.CreateParam(ftBlob,'par',ptInput);
SParM.ParamByName('par').asstring := rtftxt; // for real text
//or with TMemo Field . SParM.ParamByName('par').Assign( TMemo(TMemoControl).lines);
dmodul.quauswahl.Params := SParM;
dmodul.quauswahl.ExecSQL; //Interbase have problems here
dmodul.quauswahl.Close;

Read Binary Blob
var
Stream: TStream;
query: TSQLquery;
fld: TField;
if not query.FieldByName(zs).isnull then //Interbase results NULL also for non NULL fields
begin
fld := query.FieldByName(zs);
Stream := query.CreateBlobStream(fld, bmRead); //Blackfish MySQL and MSSQL are OK; not Interbase
End;

Write Binary Blob
FStream := TMemoryStream.Create;
FStream.LoadFromFile (binfiledlg.FileName );
dmodul.quleer1.Close;
dmodul.quleer1.SQL.Clear;
dmodul.quleer1.SQL.Add( Insert Into BlobTab(ID,BLOBFLD)VALUES(1,:par) );
dmodul.quleer1.Params[p].DataType := ftBlob;
dmodul.quleer1.Params[p].SetBlobData(FStream.Memory,FStream.Size);
dmodul.quleer1.ExecSQL; //Blackfish and Interbase do not work error in DBXPlatform.pas row 249
dmodul.quleer1.Close;

QC Entry 62992
TDBXTiburonBugsSuite.Native.DB.Test.exe connection=BlackfishSQL -s:TestRaid_262742
QC #: Date Reported: Area:
9/3/2008 2:26:09 PM Database
Description: Steps:
Add a properly resourced error message for the exception located in:

procedure TDBXDriver.LoadMetaDataCommandFactory(const MetaDataCommandFactoryClassName: UnicodeString; const MetaDataCommandFactoryPackageName: UnicodeString);
QC #: Date Reported: Area:
9/10/2008 4:24:26 PM Database\ADO
Description: Steps:
[actually Delphi.NET issue; breaks RS2007]

Calling TAdoDbxConnection.Open fails with with a System.NullReferenceException.

This is a problem because essentially installing RAD Studio 2009 means you can no longer run AdoDbx applications in RAD Studio 2007.

Reported by David Clegg.
TDBXTiburonBugsSuite.Managed.DB.Test.exe connection=blackfishsqlconnection -s:otestraid_265239

or

Try to run the attached project in Tiburon.
QC #: Date Reported: Area:
9/19/2008 1:29:23 PM Database
Description: Steps:
AdoDbx doesn't like the data generated using Data Generator for a Time column type
DataAccess.Managed.DB.Test.exe connection=IBCONNECTION -s:oTestReadWriteAll

exp: succeed creating and inserting data into a AllColumn table using adodbx
act:
Error: ibconnection_oTestReadWriteAll
Type: FormatException
Msg : String was not recognized as a valid DateTime.
Ex Class: FormatException
Stack Trace:
at TestFramework.TTestCase.Invoke(String AMethod) in D:\projects\tp\Testing\dunit\src\TestFramework.pas:line 2331
at TestFramework.TTestCase.RunTest(TTestResult testResult) in D:\projects\tp\Testing\dunit\src\TestFramework.pas:line 2376
at Borland.Data.TTestCaseExtension.RunTest(TTestResult testResult)
at TestFramework.TTestResult.RunTestRun(ITest test) in D:\projects\tp\Testing\dunit\src\TestFramework.pas:line 1197
QC #: Date Reported: Area:
9/24/2008 3:31:39 PM Database
Description: Steps:
MySQL, Oracle, MSSQL, ASA, and ASE

Cannot insert data into a DBXDataTypes.BytesType using AdoDbx
TDBXTiburonBugsSuite.Managed.Db.Test.exe connection=mysqlconnection -s:TestRaid_265479

exp: works as it does in Dbx and SqlExpr
act:
Error: ASECONNECTION_oTestRaid_adodbx
Type: TAdoDbxException
Msg : dbExpress driver does not support the TDBXTypes.UNKNOWN data type. Vendor error message: .
Ex Class: TAdoDbxException
Stack Trace:
at TestFramework.TTestCase.Invoke(String AMethod) in D:\projects\tp\Testing\dunit\src\TestFramework.pas:line 2331
at TestFramework.TTestCase.RunTest(TTestResult testResult) in D:\projects\tp\Testing\dunit\src\TestFramework.pas:line 2376
at Borland.Data.TTestCaseExtension.RunTest(TTestResult testResult)
at TestFramework.TTestResult.RunTestRun(ITest test) in D:\projects\tp\Testing\dunit\src\TestFramework.pas:line 1197
QC #: Date Reported: Area:
67210 9/26/2008 Database\dbExpressCore
Description: Steps:
[QC Short Description]
TSQLConnection Driver property and DBX .ini file deployment

[QC Description]
dbExpress applications compiled with Delphi 2009 now require the presence of the dbxdrivers.ini and dbxconnections.ini files (either in the current directory or with information specified in the registry?).

It used to be possible to deploy applications compiled with Delphi without the dbxdrivers.ini and dbxconnections.ini (and this should still be possible, of course).
QC Entry 67210
Produce a VCL Forms application with dbExpress (a TSQLConnection component pointing to some database is enough) and try to deploy it to a clean machine - without Delphi on it.
QC #: Date Reported: Area:
11/4/2008 1:55:13 PM Database
Description: Steps:
Borland.Data.AdoDbxClient.dll has the wrong description incorretly labelled as the DbxCommonDriver assembly instead.

Note: This needs to be corrected in order to have correct label for this reference in Visual Studio for Delphi Prism. See 266252
right click on Borland.Data.AdoDbxClient.dll, click properties
go under Version and notice the Description field

exp: something like "CodeGear AdoDbxClient for .NET"
act: "CodeGear DBXCommon Dirver layer for .NET"

When 266252 is fixed, this message is showed under the "References" under Solution Explorer in a Visual Studio Project if the assembly was added. Thus, incorrectly identifiying itself as the DBXCommonDriver, and not the AdoDbxClient assembly.
QC #: Date Reported: Area:
11/7/2008 3:26:25 PM Database\Data Explorer
Description: Steps:
Assertion failure when trying to open the Tables node of an MSSQL connection. Install the latest Tiburon build 12.0.3232.17997
Run the product and choose the Data Explorer
Open the MSSQLConnection, if necessary setup the connection
Try opening the Tables node
See attached bitmap


Server Response from: ETNASC04