Ask Reuben – February 25, 2026
Informix 15
Why are there now two Informix Database Drivers?
Which Informix Database Driver do I use with Informix 15?
Are there any differences with Genero with Informix 15?
What does error -21569 mean?
How Genero Connects to Databases
Genero like most other applications does not connect directly to a database, it connects via a database client. If you look at page 2 of our supported systems documents, you will see that the headings on column 2 is the Database Client. Genero database driver to database client details can also be found in the Database driver specification in the BDL documentation in Table 1 column 3.
To communicate with the different database clients for different databases, we use what we call the database driver. You can see these files in the directory FGLDIR/dbdrivers. You also see these database driver listed in column 3 of the supported systems document , and column 1 of Table 1 of the Database driver specification in the BDL documentation.
The shared library files (note the extension .dll, .so, .dylib as applicable for the operating system) in FGLDIR/dbdrivers are arranged in a clever way. If you explore that directory you will see that the files are named …
- dbm???_* e.g. dbmifx_9
- dbm??? e.g. dbmifx
- dbmdefault
… where ??? is e a 3 letter code for a database e.g. ifx=Informix, ora=Oracle etc, and the _suffix indicates a version.
The files dbm??? (without a version suffix) symbolically link if the O/S allows it or are copies of the most recent database driver for that database. With dbmifx_15 being the latest Informix database driver, dbmifx is a symbolic link or copy of dbmifx_15.
The file dbmdefault is a symbolic link or copy of the default database. The default database will vary by operating system and your response to a prompt at installation time. Typically it will be dbmifx but on platforms such as MacOS, Informix CSDK 4.50 or 15.x is not available, it will point at another database.
What this means is that instead of the communication being …
fglrun (Genero application). <------> Database Server
… a more representative picture is ….
fglrun (Genero application). <---> Shared library in FGLDIR/dbdrivers <---> Database Client <---> Database Server
How Genero has historically connected to Informix Databases
For a long time Genero developers using Informix have been blessed with the database connection to Informix being very stable. The database driver has been dbmifx_9, and for many Genero versions this picture has been …
fglrun (Genero application). <---> FGLDIR/dbdrivers/dbmifx_9 <---> Informix CSDK ?.?? <---> Informix Database Server ??.??.
Placing recent version numbers into the above, this picture has been …
fglrun (4,01, 5.00). <---> FGLDIR/dbdrivers/dbmifx_9 <---> Informix CSDK 4.10-4.50 <---> Informix IDS 12-14
For most Informix sites, the default installation of Genero has set dbmdefault to point at dbmifx_9 and those sites have not had to give any thought at installation and configuration time to make sure they are using the right database driver. Accept the default and you are configured.
For those Genero customers using other databases, they have had to give some thought at install and configuration time to make sure that their Genero application uses the applicable database driver to talk to the right database client for the database.
What changed with Informix 15
Informix 15 has introduced a change that requires a new database driver and now Genero developers who use Informix are facing similar decisions that other Genero developers have encountered ever since those other Genero developers switched to other databases.
With Genero 5.01, Informix 15 came along, we could connect to it using the existing CSDK and database driver, but that required your Informix 15 database running in compatibility mode and not using some of the new features in Informix 15.
fglrun (5.01). <---> FGLDIR/dbdrivers/dbmifx_9 <---> Informix CSDK 4.10-4.50 <---> Informix IDS 12-14
fglrun (5.01). <---> FGLDIR/dbdrivers/dbmifx_9 <---> Informix CSDK 4.50 <---> Informix IDS 15 (in compatibility mode)
With Genero 6.00, we can connect to it using the new CSDK and that required us for the first time in a long time having a second Informix database driver.
fglrun (6.00). <---> FGLDIR/dbdrivers/dbmifx_9 <---> Informix CSDK 4.10-4.50 <---> Informix IDS 12-14
fglrun (6.00). <---> FGLDIR/dbdrivers/dbmifx_15 <---> Informix CSDK 15 <---> Informix IDS 15
I mentioned something called compatibility mode, the two key pages to read in the Informix documentation that your DBA should be aware of are
- Compatibility Mode https://www.ibm.com/docs/en/informix-servers/15.0.x?topic=informix-compatibility-mode-native-mode
- Small Table vs Large Table https://www.ibm.com/docs/en/informix-servers/15.0.x?topic=statement-small-large-tables
When upgrading Informix database to Informix 15, you need to pay attention to the CSDK version in use, and the database driver in use.
To specify the database driver in use:
- If you are using indirect specification, review the dbi.database.dbname.driver values in fglprofile.
- if you are using direct specification, review the driver=” entry in the connection string.
- if you are relying on the default database driver entry in FGLPROFILE, review your Genero installation processes to ensure that the correct value is selected for the default database driver.
These are all things that users of other database types are familiar with as they have had to make sure they are using the right database driver for the database they are dealing with. Sometimes they have to choose between 3 or 4 different database drivers depending on the version of the database client and database they are connecting with. Now with Informix there is a choice of two, and Informix only Genero system administrators are encountering configuration questions Genero system administrators with other databases are familiar with.
What changed inside Informix 15
A question you could ask then is what has changed with Informix that required a new database driver?
When using “large tables” (the native mode) Informix row addressing now identifies rows with an 8 byte integer and not a 4 byte integer. This has a flow on effect onto the ROWID that is returned from each database operation that is used to populate the sqlca record, in particular the sqlerrd[6] variable. To support large tables we now need to use a BIGINT instead of an INTEGER here. See also the first entry in the 6.00 New Features that informs us of this. As part of upgrading to Genero 6.00, you should review any code that references sqlca.sqlerrd and make sure that it can handle a BIGINT.
Since Informix changed the definition of the sqlca record, this makes the ESQL/C API incompatible with older versions. To avoid invalid client application/Informix CSDK usage, some of the Informix CSDK libraries have been renamed in version 15, such as libifgen15a.so.
Informix has the following page in their documentation https://www.ibm.com/docs/en/informix-servers/15.0.x?topic=tasks-review-client-applications which is a good read.
When upgrading …
When moving from Genero 5 to Genero 6, you will need to recompile your Genero sources as per P-code compatibility documentation.
When moving to Informix 15, review your choice of Informix database client.
Review your Genero installation and configuration processes and make sure you are pointing at the right database driver for the database client chosen.
With the sqlca.sqlerrd change from INTEGER to BIGINT you can hopefully understand why this change was in a major Genero release. You will need to review any code that references this variable.
If you encounter the following error with a Genero application …
-21569 This client cannot create or open tables that use large rowids.
… this is an indicator that you don’t have your database configuration correctly configured. It suggests that you are using Informix 15 Large Tables with the older CSDK. Make sure your knowledge base has this so that if you do encounter this error, you can resolve it quickly.
With Informix, make sure you are aware of what a SMALL TABLE is and what a LARGE TABLE is. In particular the TABLE_SIZE configuration parameter.

