Connecting to a DB2 table with the DB2 Connection Wizard would fail with ‘Cannot open table on backend’ error. The earlier fix in build 6.0.0.31, did not cover all situations.
Dbbuilder conversion to SQL Server (CLI_BCP): Converting DF_ASCII columns to varchar or nvarchar would create the (n)varchar columns padded with spaces. DF_ASCII columns will now be trimmed when converting to varchar or nvarchar.
Connecting to a DB2 table with the DB2 Connection Wizard would fail with ‘Cannot open table on backend’ error. This was caused by the connectivity kit incorrectly determining the table type (standard or recnum table) and the record_identity_method.
When executing 2 embedded SQL queries in succession and the first result set is empty, invalid statement handle errors could occur when fetching from the second result set.
Solved by clearing giLastSQLhstmt in SQLClose and giLastSQLhdb in SQLDisconnect
Marked the following properties as private:
paSQLColumns
psDummyZeroDate
psDummyZeroDateMssqlDatetime
Fix for DF_FIELD_INDEX, DF_FIELD_RELATED_FILE and DF_FIELD_RELATED_FIELD attributes sometimes returning incorrect values.
This happened in following situation:
Processing large number of tables, querying all table attributes. (StSync tool).
Hidden columns present (NEXT_COLUMN_HIDDEN in INT file)
After an embedded SQL call that returned multiple result sets, the statement properties (like piColumnCount) were only stored for the first result set. SQLNextResultSet will now store the properties for each result set.
The column number can now be passed with FUNC_SQLGETDATA. This gives the possibility to reduce the number of call_driver calls when calling SQLGetData.
The new functions SQLFetchRowValues and SQLFetchResultsetValues will now also return variable data.
Removed character mode (DF32) syntax:
Replaced all Class Array by Class cObject
Removed all local declarations
Replaced all Current_Object by self
Removed Use case.mac
Marked private properties and methods with { Visibility=Private } so they do not longer end up in the documentation.
Changed some of the private property / method names. Public interface is unchanged.
Syntax changes (integer -> handle/ create/destroy object)
Changes in DFDateToSQLDate and SQLDateToDFDate functions
No longer use cCliHandler
Only get dummy zero date value from driver for ODBC_DRV. Mssqldrv and db2_drv have fixed dummy zero date.
Handle 2 dummy zero dates for SQL Server: 1753-01-01 for sql_type_timestamp, 0001-01-01 for sql_type_date
PLEASE NOTE:
Important notes about Embedded SQL (sql.pkg)
This version of sql.pkg will only work with CLI Connectivity Kits 6.0.0.28 or later. For earlier Connectivity Kit versions use sqlold.pkg.
This version of sql.pkg will no longer function with DataFlex character mode (DataFlex 3.2). To use embedded SQL with DataFlex character mode, use sqlold.pkg.
This version of sql.pkg no longer contains the embedded SQL command interface. The command interface is still available in sqlold.pkg
The column number can now be passed with FUNC_SQLCOLUMNVALUE. This gives the possibility to reduce the number of call_driver calls when calling SQLColumnValue.
New sql.pkg for embedded SQL:
• Several performances improvements to speed up getting a value with SQLColumnValue
• New functions:
Function SQLFetchRowValues Returns String[]
Fetches a row and returns all columns in an array.
Function SQLFetchResultsetValues Returns String[][]
Fetches all rows of a result Set and Returns the result set as a 2-dimensial array.
• Removed command interface. (Still available in sqlold.pkg)
The new sql.pkg can only be used with connectivity kits version 6.0.0.27 and later.
The previous version of sql.pkg is available as sqlOld.pkg and can be used with connectivity kits version before 6.0.0.27.
On a sql server datetime column: changing the DF_Type from DF_Date to DF_Datetime would sometimes
set the sql type to "unknown type"
Setting Native_Type to "unknown type" generated an error that the type is not supported by the backend.
Setting DF_FIELD_NATIVE_TYPE to "datetime2" an incorrect length/precision would be set.
When setting DF_FIELD_NATIVE_TYPE, the Connectivity Kit will check if the type is supported by the database server and raise an error if the type is not available.
This might be the case for example for the date and datetime2 type not being available on SQL Server 2005 and earlier.
When DF_DATE_FORMAT was set to DF_DATE_MILITARY an error 4523 DateTime contains an invalid value, could be generated:
By the FillField command.
On constrained Finds where there is at least one date in the index.
Changed the DF_DRIVER_CONFORMANCE level. This attribute will now return the value 7.
The DF_DRIVER_CONFORMANCE attribute must be handled as a bitwise integer value, where each bit indicates whether the Connectivity Kit supports a certain feature.
DF_DRIVER_CONFORMANCE now indicates the following features:
bit 1 Driver supports rowid
bit 2 Driver supports datetime type
bit 3 Driver supports DD SQL filters (added in build 6.0.0.22)
Made changes for setting the native type for DB2. Handling of the following DB2 types was changed
GRAPHIC, VARGRAPHIC, LONGVARGRAPHIC, TIME, DBCLOB, BLOB
New DB2_DRV_DriverDef.xml file
New MSSQLDRV_DriverDef.xml file
The Oracle DATE type will now be mapped to DF_DATE by default. It can be mapped to DF_DATETIME by specifying FIELD_TYPE DATETIME in the <table.int> file.
Made changes to Oracle.int configuration file to reflect latest Oracle ODBC driver.
The DB2 xml type does not allow a default value. DB2 xml columns will now be created as nullable, without a default value.
DB2 xml type will always be mapped to DF_TEXT.
SQL Server xml type will always be mapped to DF_TEXT.
Improved support for setting/getting native types. Added support for uniqueidentifier and time types. Changed various char/varchar to DF type mappings.
Improved support for setting/getting native types. Added new Df_Field_Native_Type values for SQL Server (var….(max), money and datetime types).
The DF_length for integer and small integer type columns was too short. Changed maximum/default df_length for SQL_Integer and SQL_SmallInt columns:
SQL_Integer from NUM(9.0) to NUM(10.0)
SQL_SmallInt from NUM(4.0) to NUM(5.0)
This change will also allow recnum columns to store max value 2.147.483.647 (10 digits) instead of max 999.999.999 (9 digits).
In a situation where a date column is part of an overlap:
Move <somevalue> to TheTable.Overlap
This would sometimes put an incorrect date value in the overlapped date column. On save this would cause an 'invalid character value for cast specification' error.
Added new attribute DF_FILE_SQL_FILTER_EQ. When set to true SQL Filters will be applied to all Find EQ. The default value is false. Earlier versions of the Connectivity would never apply SQL Filters to Find EQ.
This change includes an updated cli.pkg with the DF_FILE_SQL_FILTER_EQ attribute added.
When a SQL Filter changes between 2 consecutive Finds and there was no find cache timeout: the second find would return the next record from the find cache, instead of applying the changed SQL Filter.
ODBC_DRV:
Fixed a memory overwrite when connected to Oracle.
What's New in DataFlex 2014 - 18.0