Release Notes

The release notes for new versions or patches of the product will be included at the top in the order in which they were released.

Flex2SQL Classic Edition v17.1.9897.0

Flex2SQL Classic Edition v17.1.9897.0 was released on 2023-10-31.

New Features

  • PostgreSQL 16 Support: Starting with v17.1.9897.0, Flex2SQL now supports PostgreSQL 16.0. You’ll need an updated license to use PostgreSQL 16.0. Please contact our sales staff to make sure you have a license that supports PostgreSQL 16.0

  • PostgreSQL Stored Procedures: PostgreSQL recently added stored procedures. Before this feature, PostgreSQL only allowed stored functions. This build allows you to use the stored procedure-specific commands.

  • PostgreSQL Tablespaces and Index Tablespaces: PostgreSQL now supports using SET_DEFAULT_TABLESPACE and SET_DEFAULT_INDEX_TABLESPACE before a CONVERT_DAT_FILE command so that a table is converted using the specified tablespaces.

  • SQL_GET_DATA_CHUNK: All drivers now support chunked access.

  • Index Name Mapping: When a table is converted, there is a new checkbox that allows the indexes to be mapped based on their names rather than their structures. This makes the INT files simpler and allows modifications to an index structure without having to adjust the associated INT file (as long as the name doesn’t change). Note that this is only for migrating tables initially. There isn’t yet an option to change an existing table to use index name mapping.

  • Descending MySQL & MariaDB indexes: MySQL and MariaDB drivers now both support descending indexes as of MySQL 8 and MariaDB 10.11. Note that mixed direction indexes for reverse find operations such as Find LT/LE are slow in MySQL. This is an issue with their implementation. In MariaDB this same operation is very fast.

Bug Fixes

  • PROD-1268 MySQL driver was incorrectly assigning information_schema as the current database causing a problem with FHIGHEST_CHAR logic.

  • PROD-1249 The migration utility was not removing inverse key triggers when dropping a table.

  • PROD-1238 Some esql operations (such as udpate calls) in MySQL and MariaDB could cause ISAM find operations to generated a “Commands out of sync” error unless the resultset was consumed.

  • PROD-1237 The migration utility was limiting varchar(max) columns to 16384 chars in the INT file even though MAX is supported.

  • PROD-1235 The migration utility was not handling resizing of partial overlap columms correctly. This was both a driver bug and a UI bug.

  • PROD-1234 MySQL and MariaDB drivers were not returning the user count correctly.

  • PROD-1232 MySQL and MariaDB drivers for Linux did not let the nax number of open cursors allowed be decreased.

  • PROD-956 Oracle driver was incorrectly limiting CLOB columns to 65531 characters.

  • PROD-939 MySQL driver was causing a crash when retrieving the column length when there was no column to get the length of.

  • PROD-884 MySQL and MariaDB drivers were allow the insertion of a column in the middle of a table which is not allowed in our drivers. This now returns an error like it does for all our other drivers.

  • PROD-745 The installer was not creating a trial Linux license. This was intentional but is now allowed.

  • PROD-719 For PostgreSQL, when using the Studio, tables weren’t created in the correct database and schema.

  • PROD-713 For PostgreSQL, the schema was not being obeyed for inverse key functions.

  • PROD-712 Added a warning related to changing a recnum table to a rowid table since this can’t easily be undone.

  • PROD-623 In certain cases the migration utility was aborting the conversion of a DAT file if there were certain errors instead of continuing and just reporting the failures.

Flex2SQL Classic Edition v17.1.9784.0

Flex2SQL Classic Edition v17.1.9784.0 was released on 2023-07-06. This release includes our new MariaDB driver along with support for the latest version of Oracle Database.

New Features

  • MariaDB Driver: Starting in v17.1, MariaDB is now a separate driver with a separate license. In prior versions, MariaDB was included in the MySQL driver as it was mostly just a fork of MySQL. In recent versions of MariaDB, the feature set of MySQL and MariaDB have begun to diverge enough that a separate custom driver is now needed to provide the fastest and most up-to-date features that MariaDB now supports. If you were using our MySQL driver previously to connect to MariaDB, please contact our sales staff to have your MySQL transitioned to MariaDB. If the transition is just a straight horizontal move from a MySQL license to a MariaDB license, there is no cost.

  • MariaDB 11.0 Support: Starting with v17.1, Flex2SQL now supports MariaDB 11.0. You’ll need an updated license to use the new MariaDB driver with MariaDB v11.0. Please contact our sales staff to make sure you have a license that supports MariaDB 11.0.

  • Service Mode: New for v17.1 is a “service mode” for the driver that makes the driver easier to debug in Webapp/Thriftly setups. When using the driver within a Webapp or Thriftly environment, the driver will now automatically block anything that would generate a UI and will instead add an entry to the Windows Event Log detailing what occurred. This can be very useful when debugging login issues that would previously hang the application. Instead of a hidden login UI, the driver will now log an event with details of what happened. Any driver generated error messages also use this new event logging mechanism. If you use the Flex2SQL deployment tools, this step is done automatically. For more information, click here.

  • Oracle 23c Support: Starting with v17.1, Flex2SQL now supports Oracle 23c. You’ll need an updated license to use Oracle 23c. Please contact our sales staff to make sure you have a license that supports Oracle 23c.

Bug Fixes

  • PROD-1198 Session counting was slow if processes were started in quick succession. Also, session count could sometimes be off for unknown reasons. This section of the driver has been rewritten using a more reliable mechanism.

  • PROD-1000 MySQL driver now reports index that is non-unique since this can cause speed issues.

  • PROD-1178 MariaDB reports an error when trying to delete a column belonging to a primary key definition. Now the primary key is removed as well.

  • PROD-1101 DF_FILE_LOGIN returning incorrect value. Fixed.

  • PROD-1153 Migration Utility crashes when editing certain overlap columns. Fixed.

Flex2SQL Classic Edition v17.0.9622.0

Flex2SQL Classic Edition v17.0.9622.0 was released on 2023-02-06.

New Features

  • MSOLEDBSQL v19.x Support: This build supports the latest v19.x Microsoft OLE DB Driver for SQL Server. This new version of MSOLEDBSQL has some new defaults that are meant to be more secure, but by default will break the use with your application. For this release (and at least the next the next release) of Flex2SQL, the driver defaults to make things work the way they have in the past. In future version we will be changing to a more secure default that will require action on your part to either use the more secure connection settings or to set them a less secure default. Please keep up with our blog<https://www.mertech.com/blog>` to learn more.

Bug Fixes

  • PROD-940 DF_FILE_PRESERVE_RECNUM had a bug preventing it’s use. This isn’t a feature that shouldn’t be used anymore though. Will be removed from future versions of the product.

Flex2SQL Classic Edition v17.0.9580.0

Flex2SQL Classic Edition v17.0.9580.0 was released on 2022-12-14.

New Features

  • SQL Server 2022 Support: This build supports Microsoft SQL Server 2022 if you have an updated license. Licenses issued before 2022-12-14 cannot connect to SQL Server 2022.

  • PostgreSQL 15.x Support: This build supports PostgreSQL v15.1 if you have an updated license. Licenses issued before 2022-12-14 cannot connect to PostgreSQL v15.x.

  • New Linux Builds: This version also includes new builds of the Linux drivers that contain all pertinent bug fixes.

  • FLEX-485 MySQL Expression Default Support: The MySQL driver now supports expression based default values when using MySQL v8.0.13+ or MariaDB v10.10.2. Note that in older versions of either product, attempting to use an expression will result in an error.

Bug Fixes

  • FLEX-88 Driver crash occurs when doing FIND GE on a single record table with DF_FILE_STATIC mode.

  • FLEX-109 MySQL driver would report an error when mixing embedded SQL calls and Stored Function calls.

  • FLEX-150 In MS SQL when converting a table containing DF_HIGH dates, the driver crashes. The issue is that DataFlex limits dates to 2500-12-31 and dates higher than that work in Julian form, but not date form. Now we detect dates higher than 2500-12-31 (normally it ends up being dates of 2737-11-06 or Julian 999999) and set them to 2500-12-31 (Julian 913490).

  • FLEX-275 MySQL driver was not saving LOB values when inside a transaction.

  • FLEX-390 In Oracle driver, when an expired license is used, the driver reports that it is the wrong database version which is the incorrect error message.

  • FLEX-447 In Oracle driver, when a primary key column with a varchar2 inverse key column defined is resized, the inverse key column isn’t updated accordingly.

  • FLEX-452 PostgreSQL driver returned blank string for DF_FILE_TABLESPACE_NAME and DF_FILE_IDEXTABLESPACE_NAME when the table and index were created in the pg_default tablespace instead of return pg_default.

  • FLEX-463 When using the driver from the DataFlex Studio, an expired license is not reported making it difficult to debug why the driver isn’t working.

  • FLEX-464 In Oracle driver you could sometimes get a “Bad Parameter - This is not a LOB column” error. The native field number was expected by CALL_DRIVER but our framework was passing the DataFlex field number.

  • FLEX-468 LOB column inserts truncated in some cases. For Oracle, the bug was in mertech.inc and for MS SQL there was a driver issue.

  • FLEX-470 Warning message in trace file about odd number of digits in packed decimal columns doesn’t really matter anymore. Removed.

Flex2SQL Classic Edition v17.0.9462.0

Flex2SQL Classic Edition v17.0.9462.0 was released on 2022-08-18.

Bug Fixes

  • FLEX-267 SQL_GET_FUNCTION_PARAMETER was causing a “bad parameter” error when used with mertechc.inc (the console mode mertech.inc).

Flex2SQL Classic Edition v17.0.9455.0

Flex2SQL Classic Edition v 17.0.9455.0 was released on 2022-08-10. Classic edition is meant to be used with DataFlex versions 19.1 and lower.

Bug Fixes

  • FLEX-422 Updated the MySQL client libraries to a newer version that works on latest MySQL and MariaDB.

  • FLEX-429 Updated the error message related to the client library version needed for PostgreSQL on Linux to be more clear.

  • FLEX-267 Updated mertechc.inc with SQL_GET_FUNCTION_PARAMETER fix.

  • FLEX-437 Updated internal max versions used on evaluation licenses.

  • FLEX-339 Made SQL_CHECK_TABLE smarter about what happens when there is no DB selected and a rights issue.

Flex2SQL Classic Edition v17.0.9442.0

Flex2SQL Classic Edition v 17.0.9442.0 was released on 2022-07-28. Classic edition is meant to be used with DataFlex versions 19.1 and lower.

New Features

This version now includes v17 builds of all linux drivers. Note that for MySQL and PostgreSQL new client libraries are required to use the v17 drivers. The Flex2SQL For MySQL Linux driver now requires a minimum of libmysqlclient.so.16.0.0, although we advise the use of libmysqlclient.so.18.0.0. The Flex2SQL for PostgreSQL Linux driver now requires a minimum of libpq 5.12 (note that the versioning of libpq on Windows and Linux are different).

Important

For the Flex2SQL Classic Edition for PostgreSQL driver (both Linux and Windows versions), the client shipped with the v12.2 server (which has an internal version number of v12.0.2) should be used so that scram-sha-256 hashing can be used for logins. This new hashing is used in recent version of PostgreSQL as the default instead of the older MD5 hashing.

Bug Fixes

  • FLEX-428 - MDS Support Utility doesn’t recognize DF 2022.

  • FLEX-420 - Oracle driver on Windows DF_RAW columns returning corrupt data.

  • FLEX-410 - DF_BINARY columns return bad data in Linux builds on Red Hat due to a compiler bug.

  • FLEX-267 - SQL_GET_FUNCTION_PARAMETER didn’t work with the PostgreSQL driver. Fixed.

  • FLEX-337 - When compiling a webapp, mertech.inc didn’t fix all the missing cli.pkg defines.

  • FLEX-273 - In PostgreSQL restructuring, when naming convention is changed and the name of a column has changed, a crash would occur.

  • FLEX-266 - In PostgreSQL, when creating a new record inside an explicit transaction, LOB values were not being properly saved.

  • FLEX-405 - In Oracle, when doing a certain mathematic select against v$parameter, the driver would crash.

  • FLEX-285 - Default value in Migration utility not saved properly.

  • A more recent set of PostgreSQL client DLLs is now distributed againt all tools.

  • New delay load feature now applies to the license as well (should have originally)

Flex2SQL Classic Edition v17.0.9302.0

Flex2SQL Classic Edition was released on 2022-04-07. 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.

Bug Fixes

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