Subscribe to our News, Blogs and Updates
AnyDAC for Delphi v released PDF Print E-mail
Jul 16, 2012
iOS support, FireMonkey support including FM implementations of all dialogs, new Local SQL engine to query datasets, new Centralized Cached Updates, new DataSnap driver for RAD Studio XE2 Enterprise and higher, and more.

Possibly breaking changes

  1. Editing of the queries with expressional columns and JOIN's may lead to different experience.
  2. UpdateOptions.UpdateJoinedFields renamed to UpdateNonBaseFields.
  3. All Oracle related entities renamed from Oracl to Oracle (AnyDAC_PhysOracl_xxx packages -> AnyDAC_PhysOracle_xxx, uADPhysOraclXxxx units -> uADPhysOracleXxxx, TADPhysOraclDriverLink component -> TADPhysOracleDriverLink).
  4. TADGUIxFormsXxx components are replaced by TADGUIxXxx components with Provider property.
  5. REAL / FLOAT (32 bit float value) DB data types are mapped now to ftSingle instead of ftFloat
  6. FetchOptions.LiveWindowMode renamed to LiveWindowParanoic, added LiveWindowFastFirst.

v (30.07.12)

+ added: iOS Emulator / ARM support
+ added: new DataSnap driver for RAD Studio XE2 Enterprise and higher
+ added: new Local SQL query engine to query local datasets, TADLocalSQL component (more)
+ added: FireMonkey implementation for most AnyDAC dialogs, Provider property and major GUIx redesign (more)
+ added: new Centralized Cached Updates with master-detail propagation, TADSchemaAdapter component (more)
+ added: new DataSnap driver for RAD Studio XE2 Enterprise and higher


DBMS support and drivers
+ added: DataSnap: new DataSnap driver for RAD Studio XE2 Enterprise and higher
+ added: Phys: added caBase, caExpr attributes for SELECT list columns to distinguish base and non-base table columns. Extended general result set metadata options and correctness
+ added: EADException.ADObjName property to identify object raised an exception
/ changed: Major cleanup and extension of the columns metadata. SourceDataType returns the original (not mapped) data type. OriginalColName and OriginalTabName return valid information. Added caBase, caExpr column attributes, allowing to distinguish base table, joined tables and expressional columns.
/ changed: UpdateOptions.UpdateJoinedFields renamed to UpdateNonBaseFields
/ changed: Phys: drivers with Array DML mode aeOnErrorUndoAll now are capable to process errors using OnExecuteError
/ changed: improved ftString / ftWideString parameters handling on Unicode Delphi's
/ changed: to enable binary sort order set FormatOptions.SortLocale to 0 instead of defining AnyDAC_NOLOCALE_DATA
/ changed: REAL / FLOAT (32 bit float value) are mapped to ftSingle instead of ftFloat
/ changed: general library optimization
/ changed: Phys: Error "Param data type is changed" now includes data type names
- fixed: Phys: fails to extract base table name from a SELECT FROM (SELECT ...) and a SELECT where comment starts right after table name
- fixed: Phys: repeating ADConnection.Create / Open / Free leads to growing memory consumption
- fixed: Phys: fails to map dtBCD to dtCurrency on DXE or less
- fixed: Phys: fails to convert values > $7F(15) between dtUIn64 and dtFmtBCD
- fixed: Phys: dtSByte, dtInt16, dtIn32 -> dtUInt64 conversion fails
- fixed: Phys: "ADPhysManager shutdown timeout" after a pooled connection failed to connect
- fixed: Stan: creates hkcu/software/da-soft registry key when it does not exist is not needed
- fixed: Phys: "ADPhysManager shutdown timeout" after a pooled connection failed to connect
- fixed: Phys: connection recovery does not work for pooled connections
- fixed: Phys: after connection recovery the ADConnection.DriverName is empty
- fixed: Stan: "[AnyDAC][DatS]-3. Column type is unknown or undefined" when a mapping rule has TargetDataType = dtUnknown
- fixed: Stan: TIMESTAMPADD escape function returns float instead of datetime value
- fixed: Phys: possibly incorrect column attributes on Delphi x64
- fixed: Stan: impossible to set UpdateOptions.FastUpdates to True at design time


/ changed: Oracle: all files and other entities renamed from Oracl to Oracle (AnyDAC_PhysOracl_xxx packages -> AnyDAC_PhysOracle_xxx, uADPhysOraclXxxx units -> uADPhysOracleXxxx, TADPhysOraclDriverLink component -> TADPhysOracleDriverLink)
/ changed: Oracle: added NLS_NCHAR_CHARACTERSET to environment report
/ changed: Oracle: reduced ROWID buffer size to 23 bytes from 64 bytes
/ changed: Oracle: TOCIPLSQLDescriber.LocateProc returns True if is called for an overloaded proc with Overload = 0
- fixed: Oracle: ORA-12704 on inserting a value into NCLOB column
- fixed: Oracle: fails to call SP with PL/SQL record parameter defined in a package not in current schema
- fixed: Oracle: fails to prepare a stored proc with an argument of a PL/SQL record type with nested sub records
- fixed: Oracle: AV on non-Unicode Delphi when CharacterSet conn def parameter is specified
- fixed: Oracle: connection recovery inside of Ping call may lead to memory leaks


/ changed: ADS: CharacterSet set of values trimmed to ANSI / OEM, as normally other values will lead to error


- fixed: ASA: incompatibility with ASA v 7


- fixed: FB: driver does not use ResourceOptions.DirectExecute=True
- fixed: FB: fixed few ADScript incompatibilities with Firebird iSQL
- fixed: FB: password is output into a trace as is
- fixed: FB: "Invalid parameter in transaction parameter block" is possible when TxOptions.Params are specified


+ added: MySQL: ReadTimeout and WriteTimeout connection definition parameters
- fixed: MySQL: "range check error" on editing INT UNSIGNED AUTO_INCREMENT on pre D2009
- fixed: MySQL: wrong trace output for mysql_real_escape
- fixed: MySQL: fails to process Array DML errors


/ changed: PG: {TIMESTAMPDIFF(MONTH, ....)} now can use MONTHS_BETWEEN - custom DB function for better compatibility with other DB's
- fixed: PG: fails to process a command with $$ nested into {IF}{FI}, like {IF PG} DO $$ {FI}
- fixed: PG: {fn TIMESTAMPADD} fails with a syntax error, when second argument is an expression
- fixed: PG: fails to read CHAR value with spaces only on Linux platform


+ added: SQLite: TADSQLiteBackup.DatabaseObj and DestDatabaseObj properties to simplify work with an in-memory database
+ added: SQLite: DateTimeFormat = DateTime format, allowing to store raw TDateTime values
/ changed: SQLite: 'GRAPHIC', 'PICTURE', 'PHOTO' now recognized as dtBLOB
/ changed: SQLite: {TIMESTAMPDIFF} now returns negative / positive values
- fixed: SQLite: repeating ADQuery.Open / Close leads to growing memory consumption
- fixed: SQLite: possible memory leak
- fixed: SQLite: fails to return a time part for the DateTime values in ISO 8601 format (<date>T<time>)


+ added: MSSQL: VariantFormat=string|binary connection definition parameter
- fixed: MSSQL: Array DML & INSERT & VARBINARY(MAX) may fail with AV or "String data, length mismatch"


- fixed: MSAccess: syntax error on UPDATE/INSERT INTO with a field named "password"
- fixed: MSAccess: "invalid syntax" on posting a new record and UpdateOptions.RefreshMode = rmAll


+ added: ODBC: TADPhysODBCBaseDriverLink.GetDrivers and GetDSNs methods
- fixed: ODBC: fails to execute parameterized query on Cache


- fixed: Informix: does not recognize "Cannot connect to database server" (08004) as ekServerGone
- fixed: Informix: Array DML operation returns RowsAffected=0. Failed Array DML does not raise an exception.
- fixed: Informix: AV on Informix Connect v 3.70.TC5DE
- fixed: Informix: may fail to discover a connection lost


Main components
+ added: ADConnection: Assign method to clone connection


+ added: ADDataSet: centralized change journal and TADSchemaAdapter
+ added: ADDataSet: RowError property to read an exception associated with the current record
+ added: ADDataSet: AfterGetRecord event, firing one time for each fetched record
/ changed: ADDataSet: FilterChanges now is of TADUpdateRecordTypes type. New value rtHasErrors is added.
/ changed: ResourceOptions.DefaultStoreFormat default value is changed to sfAuto
/ changed: ADDataSet: CopyDataSet now copies also TField ProviderFlags, Origin, etc when coStructure in AOptions
/ changed: ADDataSet: implemented support for fiBlobs excluded from FetchOptions.Cache
/ changed: ADDataSet: ResourceOptions.DefaultStoreFormat default value is changed to sfAuto
/ changed: ADDataSet: XML storage format upgraded to support date & time in ISO-8601
- fixed: ADDataSet: BookmarkValid does not return False after Table was cleared
- fixed: ADDataSet: "could not convert variant of type (UnicodeString) into type (Double)" on 'date(Created) = ''2012-05-12''' filtering expression
- fixed: ADDataSet: RecNo returns invalid info when dataset is in dsInsert state
- fixed: ADDataSet: exception on application closing when dataset is in editing state
- fixed: ADDataSet: UpdateOptions.KeyFields and AutoIncFields in 5.0.7 does not work with persistent fields
- fixed: ADDataSet: "Cannot change table structure" when dataset has IndexFieldNames / IndexName specified and an auto-inc field
- fixed: ADDataSet: "Variable length column overflow" at assigning a long value to ftWideString / ftFixedWideChar columns (in contrast to ftString)
- fixed: ADDataSet: fails to switch sort order using IndexFieldNames between <field> and <field>:D


/ changed: ADTable: FetchOptions.LiveWindowMode renamed to LiveWindowParanoic, added LiveWindowFastFirst
- fixed: ADTable: Locate on closed dataset leads to "Assertion failure" instead of "Cannot perform operation on closed dataset"
- fixed: ADTable: fails to work when the name of an indexed field has spaces inside
- fixed: ADTable: AV when adding a new record, and table is connected to DevEx grid


- fixed: ADDataMove: fails to re-throw exceptions occurred on inserting data to a table


- fixed: ADUpdateSQL: UpdateSQL Editor fails to describe quoted fields using the dataset info


- fixed: ADScript: COPY command fails with syntax error when using FROM / TO SQL with a SELECT command
- fixed: ADScript: @<script> does not use the parent arguments


+ added: FMX support and major GUIx redesign. TADGUIxFormsXxx components are replaced by TADGUIxXxx components with Provider property.
+ added: Demo: Getting Started\FireMonkey demo


Addon's and 3d party products
- fixed: FR4: unnecessary evaluation of dataset parameter expressions at design time


- fixed: RB DADE: "Index out of range" under multi threaded loaded
- fixed: RB DADE: "Parameter [] datatype is unknown" error on previewing detail RB queries


- fixed: RO SDK: AV when creating AD objects in OnCreate and using DM as AOwner


/ changed: DataSnap: improved compatibility
- fixed: DataSnap: PSGetTableName returns empty value when dataset is closed
- fixed: DataSnap: PSExecuteStatement modifies parent command options


+ added: AddOn: TUser driver


Tools, demos, installer, help
/ changed: Installer: updated to support XE2 Upd 4 HF 1
- fixed: C++ Builder: few incompatibilites with BCB2007
- fixed: C++ Builder: installer may fail to register components under BCB XE2
- fixed: Help: CHM does no allow searching



Enjoy !
DA-SOFT Technologies Support Team