There are a lot of bad database engines out there, but Informix is surely one of the worst I have ever used in my whole programming career. I’m using a 7.x release in one project here at work, and I think I’ll go crazy if I don’t finish it soon. To tell the truth, it’s the second time I had to use Informix in a project, but the first was long ago and I had already forgotten how abominable it is.
Just to begin with the list of problems, support to SQL-92 ranges from minimal to non-existent. There are severe inconsistencies in the SQL support all over its parser. For example, I had one view that didn’t work as expected until I changed the select statement to use the default Informix syntax instead of the SQL-92 syntax I was using. The view kept bringing null values where none was should appear, but when I run the standalone select statement against the database it returned the correct result set.
Another big problems is the limit in the length of the identifiers, which are restricted to 18 characters. This is simply laughable, and makes naming keys and fields a nightmare — especially when working with a internal standard that requires fields to be prefixed with mnemonic type indicators and uses underscores to separate words wasting further space.
Also, blob fields are not directly support in inserts and updates. Granted, many other database engines do not support this feature, but it doesn’t matter. If one database engine supports it, all others should support it as well.
Informix also allows auto-incremented fields but doesn’t provide any direct way to retrieve the last inserted value atomically. (I couldn’t find any reference to such function, but I’d be glad to be proved wrong.)
To add insult to injury, the OLE-DB driver doesn’t work at all, and the ODBC driver is terribly inefficient and hard to configure. Also, as I couldn’t manage to install the ODBC driver in my machine, I have to access the server (a SCO Unix) via a telnet connection using a very archaic interface.
After the past days, I give myself the right of self-pity.