Release Notes¶
Overview¶
Classic edition is meant to be used with DataFlex versions 19.1 and lower.
Although it will work with DF 2021, this is not a supported configuration. We have made changes to Mertech.inc to make it more compatible with DataFlex versions >= 19.0. When using v17 Classic Edition with DF2021, there is no unicode support and the ability to have custom OEM to ANSI translation is removed. Default translation based on code page appears to work just fine within the DF runtime. Any characters that don’t fall within the code page are replaced by the runtime with question marks.
When using Classic Edition with prior versions of DataFlex, everything works as it did in prior versions related to OEM to ANSI translation.
Additionally, all of the LOB commands now have an “_UC” version that is meant to be used with uChar[] datatypes instead of strings. The syntax of these commands is identical except that they take and return uChar[]’s instead of strings. This works in version of DataFlex >= 11.0.
Note that in DF 2021, you MUST use the “_UC” version of LOB commands, whereas in prior versions of DataFlex the use of these new commands is optional. We advise using them and removing all “chunking” logic and use of set_argument_size related to LOBs. This reduces the risk of memory leaks/memory corruption and simplifies code.
New Features¶
PostgreSQL v13 Support: Flex2SQL v17 now fully supports PostgreSQL v13.2. A v17 license is required to use PostgreSQL v13.
New “_UC” based LOB commands: All of the LOB commands now have an “_UC” version that is meant to be used with uChar[] data types instead of strings. The syntax of these commands is identical except that they take and return uChar[]’s instead of strings. This works in version of DataFlex >= 11.0. Note that in DF 2021, you MUST use the “_UC” version of LOB commands, whereas in prior versions of DataFlex the use of these new commands is optional. We advise using them and removing all “chunking” logic and use of set_argument_size related to LOBs. This reduces the risk of memory leaks/memory corruption and simplifies code.
CLI Detection: Mertech.inc will now detect if CLI.pkg has been included which can cause problems with our driver. If this is detected, a compiler error is thrown.
Removed “legacy” syntax (no more compiler warnings!): There is now very limited need for compiler warning logic as old coding techniques such as the use of EQ, NE, GT, GE, LE have been updated, and limited use of types is only there to support interfacing with versions of DataFlex that can’t use structures.
Bugs Fixed¶
FLEX-114: DF_FIELD_TIME Not updating first record.
FLEX-113: cDbCJGrid shows double rows when using index with first segment of type Datetime
FLEX-112: eSQL columns of type BIT don’t return proper boolean value
FLEX-111: “Invalid Object Name” error after reconnecting to SQL server if a sysadmin account is used that has a different default database
FLEX-108: Installer not registering COM control properly after Windows update
FLEX-100: For PostgreSQL driver, expressions are not supported for default values in inverse key columns or partial overlap columns (this is still limited, but works better now)
FLEX-98: For Oracle driver, UPPER and DESC segments of primary key not used if primary key already used these segments in the inverse key
FLEX-89: For MS-SQL driver, default dates of 1899-12-30 cause problems (this is the zero value for an OADate).
FLEX-88: For PostgreSQL driver, static single row tables caused a crash due to an internal pointer allocation bug
FLEX-85: For PostgreSQL driver, evaluation obfuscation could generate invalid data
FLEX-82: Migration utility not resetting fractional column definition when changing data type from decimal to integer
FLEX-77: For MySQL/MariaDB driver, SQL_GET_NUM_ROWS after update/insert crashes application
FLEX-75: For MS-SQL driver, migration utility improperly calls “DROP TABLE” without passing a table name when a table is being replaced and there is no filelist entry beforehand for the original table.
Commands/Attributes Removed¶
All references to DB2 were removed along with all support for TD cache files. Old syntax that was replaced in prior versions that was marked as deprecated in version 16 was removed from version 17.
Command/Attribute |
Replaced by |
Notes |
---|---|---|
DF_FILE_GET_SERVERNAME_FROM_LOGIN |
DF_FILE_SUPPRESS_SERVERNAME_OUTPUT |
replaced many versions ago |
DF_FILE_GET_DATABASENAME_FROM_LOGIN |
DF_FILE_SUPPRESS_DATABASENAME_OUTPUT |
replaced many versions ago |
DF_FILE_GET_SCHEMANAME_FROM_LOGIN |
DF_FILE_SUPPRESS_SCHEMANAME_OUTPUT |
replaced many versions ago |
DF_PRIMARY_KEY |
DF_INDEX_PRIMARY_KEY |
|
SQL_FOR_ONEROW |
DF_FILE_SET_MODE and/or DF_FILE_MAX_ROWS |
No longer supported. |
SQL_SET |
SQL_SET_STMT |
|
SQL_APPEND |
SQL_APPEND_STMT |
|
SQL_EXECUTE |
SQL_EXECUTE_STMT |
|
LOCK_TABLE |
Removed |
This command was mostly for DB2. There is no direct replacement. |
CREATE_TD_FILE |
Removed |
|
SQL_APPEND_UPDCOL_STMT |
Removed |
This feature is no longer supported. There is no direct replacement. |
GET_RESULT_SET |
SQL_FETCH_NEXT_ROW |
|
SQL_GET_DATA_CHUNK |
SQL_GET_DATA_CHUNK_EX |
|
GET_RESULT_SET_NUM_COLS |
SQL_GET_NUM_COLS |
|
GET_RESULT_SET_COL_NAME |
SQL_GET_COL_NAME |
|
SQL_GET_OUTPUT_VALUE |
SQL_GET_PROCEDURE_PARAMETER |
Replaced by the newer procedure calling mechanism. Can use SQL_FETCH_NEXT_ROW if it’s a resultset |
CALL_ORACLE_STORED_PROCEDURE |
CALL_STORED_PROCEDURE |
|
REEXEC_ORACLE_STORED_PROCEDURE |
Removed |
Now deprecated. Call was rarely used and has some issues with cursors associated with it. |
SQLFlex_Revision |
GET_DRIVER_REVISION |
|
SQLFlex_Major_Revision |
GET_DRIVER_MAJOR_REVISION |
|
SET_FORCE_DATE_FORMAT_INIT |
Removed |
Use datetimes instead which don’t have string formatting issues |
SET_STATIC_TABLE_OPTIMIZATION |
Removed |
No longer supported |
CALL_SQLSERVER_PROCEDURE |
CALL_STORED_PROCEDURE |
|
ORAFlex_Revision |
GET_DRIVER_REVISION |
|
KEEP_FILES_OPEN |
Removed |
There are newer ways of handling this that are supported (such as the run as command) that should be used in place of this. |
ACTIVATE_TIME_STAMP |
Removed |
This can be done via an “ALTER SESSION SET nls_timestamp_format” call instead. |
CALL_DB2_PROCEDURE |
Removed |
All DB2 references removed |
CREATE_DB2_DATABASE |
Removed |
All DB2 references removed |
SQL_SET_MAX_CURSORS_STMT |
SET_MAX_OPEN_CURSORS |
|
SQL_GET_MAX_CURSORS_STMT |
GET_MAX_OPEN_CURSORS |
|
SQL_SET_LOCAL_TD_PATH |
Removed |
TD Support has been removed |
SQL_GET_LOCAL_TD_PATH |
Removed |
TD Support has been removed |
LOB_APPEND |
Removed |
Older LOB interface removed. Use SQL_ADD_LOB_CHUNK_UC |
LOB_LENGTH |
Removed |
Older LOB interface removed. Use SQL_GET_LOB_LENGTH_UC |
LOB_READ |
Removed |
Older LOB interface removed. Use SQL_GET_LOB_UC |
LOB_WRITE |
Removed |
Older LOB interface removed. Use SQL_SET_LOB_UC |
LOB_LOADFROMFILE |
Removed |
Older LOB interface removed. No replacement for this command. |
LOB_ERASE |
Removed |
Older LOB interface removed. Use SQL_SET_LOB_NULL_UC |
LOB_TRUNCATE |
Removed |
Older LOB interface removed. No replacement for this command. |
FLUSH_LOB_BUFFER |
Removed |
Older LOB interface removed. No replacement for this command. |
SQL_ENABLE_RECONNECT |
Removed |
Reconnect is handled by the driver internally. |
CALL_MYSQL_STORED_PROCEDURE |
CALL_STORED_PROCEDURE |
|
CALL_MYSQL_STORED_FUNCTION |
CALL_STORED_FUNCTION |
|
SET_USE_ROWCOUNT_IN_TRANSACTION |
Removed |
No replacement for this command. |
GET_USE_ROWCOUNT_IN_TRANSACTION |
Removed |
No replacement for this command. |
STRUCTURE_START_DYNAMIC |
Removed |
Use ENABLE_SCRIPTING and built in Structure_Start command. |
STRUCTURE_END_DYNAMIC |
Removed |
Use DISABLE_SCRIPTION and built in Structure_End command. |
To take advantage of these new Flex2SQL features and bug fixes, download Flex2SQL v17 Classic Edition and then install the application using your typical upgrade process. If you need help upgrading or implementing a feature, refer to the product documentation or contact us at support@mertechdata.com.