DataFlex SQL Drivers 6.3 Build Notes
Of Special Note
This document contains information about the 6.3 version of the DataFlex SQL drivers. Note that the development environment for the drivers now uses Visual Studio 2017 and the SQL Server 2016 SDK.
Build 6.3.0.12
Odbc_drv
The DataFlex ODBC driver now supports MySQL and MariaDB.
- New
MariaDB.INTfile with configuration settings when using the MariaDB ODBC driver. - Changed
MySQL.INTfile with configuration settings when using the MySQL ODBC driver. - Changed Studio configuration file:
ODBC_DRV_DriverDef.xmlfile. Addeddf_field_is_identitycolumn attribute.
The changes were tested with the following environments. Use the ODBC driver versions as a minimum; earlier versions may not work.
MySQL
Latest MySQL versions (server and ODBC connector) can be downloaded here.
- Tested MySQL version: MySQL 8.0.13 Community server 8.0.13
- Minimum required MySQL ODBC driver version: MySQL ODBC 8.0 ANSI Driver Version 8.0.13 (
mysql-connector-odbc-8.0.13-win32.msi)
MariaDB
Latest MariaDB versions (server and ODBC connector) can be downloaded here.
- Tested MariaDB version: MariaDB 10.2 Series
- Minimum required MariaDB ODBC driver version: MariaDB Connector/ODBC 3.0 Series 3.0.8 (
mariadb-connector-odbc-3.0.8-win32.msi)
Some of the features now tested and supported by the DataFlex ODBC driver (6.3.0.12 or later) when connected to MySQL or MariaDB:
- Basic DataFlex data manipulation (Find/Save/Delete)
- Creating/maintaining tables in DataFlex Studio (Restructure)
- Conversion from DataFlex embedded to MySQL/MariaDB
- Support for managed connections
- Support for recnum tables and standard tables
- Support for primary keys
- Support for auto_increment (identity) columns
- Embedded SQL
Build 6.3.0.11
All DataFlex SQL Drivers
Passing a variable length parameter (e.g., varchar(max)) for a stored procedure with SQLSetParameter could, in some circumstances, cause an exception.
When receiving result messages from a stored procedure or SQL script with SQLGetMessage, messages would be limited to 512 characters. The maximum length for result messages has been increased to 1024.
Build 6.3.0.10
All DataFlex SQL Drivers
Added support to change the cursor type for an embedded SQL statement. By using a different cursor type, it is no longer necessary to have variable length columns (varchar(max), varbinary(max)) last in the Select statement.
New embedded SQL function:
Procedure SQLSetStmtAttribute Integer iAttribId String sAttribValue
The following statement attributes can be set:
SQLSTMTATTRIB_CURSOR_TYPE
Allowed values:
SQL_CURSOR_FORWARD_ONLYSQL_CURSOR_DYNAMICSQL_CURSOR_STATICSQL_CURSOR_KEYSET_DRIVEN
Default: SQL_CURSOR_FORWARD_ONLY
Example:
Get SQLOpen of hdbc to hstmt
If (hstmt <> 0) Begin
Send SQLSetStmtAttribute of hstmt SQLSTMTATTRIB_CURSOR_TYPE SQL_CURSOR_STATIC
End
Function SQLGetStmtAttribute:
Function SQLGetStmtAttribute Integer iAttribId Returns String
This function replaces SQLStmtAttribute function. This function can now also get SQLSTMTATTRIB_CURSOR_TYPE.
Function SQLStmtAttribute is now obsolete. The functionality is moved to SQLGetStmtAttribute. SQLStmtAttribute will now call SQLGetStmtAttribute.
Build 6.3.0.9
All DataFlex SQL Drivers
Additional changes for parameterized queries. Changed sql.pkg.
Further details and examples see below at Embedded SQL Parameterized queries.
Mssqldrv
Mssqldrv.int: Changed comments to reflect type mappings for SQL Server 2012 also apply for SQL Server 2014, SQL Server 2016, and SQL Server 2017.
Build 6.3.0.8
All DataFlex SQL Drivers
Added support for parameterized queries in embedded SQL.
New sql.pkg with new functions:
SQLSetParameterSQLSetNextParameter
Further details and examples see below at Embedded SQL Parameterized queries.
Build 6.3.0.7
DB2_DRV
On a DB2 standard table with an identity column, it would generate a "Wrong number of parameters." error when a value was provided for the identity column.
After restructuring a DB2 standard table with an identity column, the identity value would not properly be restarted.
Build 6.3.0.6
MSSQLDRV
Added function SqlServerClientDriverName that returns the driver name. The driver name can be used to compose a connect string.
All DataFlex SQL Drivers
Moved function DriverIndex from mssqldrv.pkg (Class cMSSQLHandler) to cli.pkg (Class cCLIHandler).
Changed cli.pkg (reverted back to array class).
Changed DF_FILE_DATABASE_ID to make consistent with DF_DATABASE_ID.
Build 6.3.0.5
All DataFlex SQL Drivers
Embedded SQL: Changed driver internal handling of connection and statement handles.
Odbc_drv
Removed obsolete ODBC commands from odbc_drv.pkg.
Build 6.3.0.4
All DataFlex SQL Drivers
Cleanup of driver-related pkgs: Sql.pkg (changed single line if’s to multiline).
MSSQLDRV
Added support for “ODBC driver 17 for SQL Server” (SQL Server 2017 client).
The MSSQLDRV driver will now recognize the following clients. The highest installed client version on a workstation will be used:
| Client Name | SQL Server Version | Version Number |
|---|---|---|
| SQL Server | SQL Server 2000 client | 8 |
| SQL Native Client | SQL Server 2005 client | 9 |
| SQL Server Native Client 10.0 | SQL Server 2008 client | 10 |
| SQL Server Native Client 11.0 | SQL Server 2012 client | 11 |
| ODBC Driver 11 for SQL Server | SQL Server 2014 client | 12 |
| ODBC Driver 13 for SQL Server | SQL Server 2016 client | 13 |
| ODBC Driver 17 for SQL Server | SQL Server 2017 client | 17 |
All DataFlex SQL Drivers
Changed driver internal handling of DF_DATABASE_ID attribute.
DB2_DRV
For the DB2 TIMESTAMP type (DataFlex DATETIME type), the number of decimals (milliseconds, nanoseconds) can now be specified. DB2 allows TIMESTAMP(0) thru TIMESTAMP(12). Default is 0 decimals.
In the DataFlex Studio, this can be specified as length 23.0 thru 23.12.
Note that more than 3 decimals may be truncated by the DataFlex runtime. It is recommended to use a maximum of 3 decimals for DATETIME type.
Earlier versions of the DataFlex DB2 driver would create DATETIME columns as TIMESTAMP(6).
All DataFlex SQL Drivers
Added compiler warning DFERR_COMP_WARNING_OBSOLETE_CMD for obsolete commands:
CLI_SetConstraintMSSQL_SetConstraintDB2_SetConstrainedCLI_Get_Driver_AttributeCLI_Set_Driver_AttributeCLI_Get_Database_Attribute
Build 6.3.0.3
All DataFlex SQL Drivers
Cleanup of driver-related pkgs:
cli.pkgmssqldrv.pkgdb2_drv.pkgodbc_drv.pkgsql.pkg
All DataFlex SQL Drivers
Embedded SQL function SQLColAttribute SQLCOLATTRIB_DFTYPE returned invalid values for some native types:
SQL Server
datetimecolumn returnedDF_DATE. Now changed toDF_DATETIME.datetime2column returnedDF_DATE. Now changed toDF_DATETIME.varchar(max)column returnedDF_ASCII. Now changed toDF_TEXT.
DB2
Timestampcolumn returnedDF_DATE. Now changed toDF_DATETIME.BLOBcolumn returnedDF_ASCII. Now changed toDF_BINARY.
All DataFlex SQL Drivers
Fill_Field DF_LOW/DF_HIGH of a time column filled with incorrect time values. This caused "Time contains an invalid value." errors. Also during constrained finds on indexes with a time column.
After changing Index Type from Server to Client_Only AND clearing the Index Name, the table could not be opened anymore because of an invalid INT file.
ODBC_DRV
Creating indexes and primary keys on PostgreSQL failed when using other than default schema 'public'.
Structure_End would lowercase schema names on PostgreSQL.
All DataFlex SQL Drivers
Exclusive open of a table with no index.1 would cause 'Index number out of range' error.
Build 6.3.0.2
All DataFlex SQL Drivers
Removed DF_File_Record_Identity attribute from Studio driver configuration files.
Fix to make Studio driver configuration files work with DataFlex Studio before 19.0.
Build 6.3.0.1
All DataFlex SQL Drivers
Delete_Index of a non-temporary index outside structure_start/structure_end caused access violation (BT 7318).
Recnum tables with RECNUM column bigint could not be restructured. Fixed.
System table with real recnum column on SQL and no primary_index 0 in the INT file would not hide the recnum column.
MSSQLDRV
Changed MSSQLDRV_DriverDef.xml. MSSQLDRV_DriverDef.xml would only work with DataFlex Studio 19.0, but not with DataFlex Studio’s before 19.0.