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

  1. PostgreSQL v13 Support: Flex2SQL v17 now fully supports PostgreSQL v13.2. A v17 license is required to use PostgreSQL v13.

  2. 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.

  3. 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.

  4. 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.