A cat arrived just the other day...

There are a lot of great features in this release. I could talk about the flexible grid that allows you to manage many machines like one and support rolling upgrades. I could talk about the new analytics features where we've seen speed up of warehouse-type queries of around 50%. I could talk about storage provisioning, improved installation and embeddability features. Yes, I could talk about all this but at this time, I want to talk about some features that should interest application developers.

I have to admit I am a little biased since my group is called application development services. However, the features I want to talk about were either requested by customers or have had a very positive reception in early mention under non-disclosure or during the beta period.

The first one will facilitate porting schemas from other databases to Informix. Let me first show an example:

The first improvement is the ability to change the order of constraints and default values. Before Informix 11.70, the col1 definition would have returned an error since the default clause had to be located before the NOT NULL constraint.

The second improvement is the ability to explicitly say that a column can accept NULL values. Before, it was implied if the NOT NULL constraint was not there.

The last improvement shown in the example above shows that we can add "ON DELETE CASCADE" after the constraint name.

Another improvement in the DDL area is the ability to conditionally execute CREATE and DROP statements. Here are two examples:

If, for example, you want to make sure a table is re-created, you could always say:

DROP TABLE IF EXISTS tab;

If you want to make sure that you keep the table if it already exists, then don't do the "DROP IF EXISTS" and simply use "CREATE TABLE IF NOT EXISTS".

Finally, here's another DDL feature that was in great demand. It is not really an application development feature but it has been requested a lot: The ability to define the EXTENT size in a CREATE INDEX statement:

CREATE INDEX myidx tab(col1) FIRST EXTENT 8 NEXT EXTENT 8;

Don't forget to read the release notice since there are many other improvements on the INDEX capabilities.

On the DML side, we are now able to use expressions in the COUNT aggregate function. This can be useful if you want multiple aggregates in one statement: