Reversion requirements and limitations

If you used the new database server, you must review a list of reversion requirements and limitations, and then complete any prerequisite tasks before you revert. If the reversion restrictions indicate that you must drop objects from the database, you can unload your data and then reload it in the prior database server.

Reversion requirements and limitations are described in the following tables:

  • Table 1 Requirements and limitations when reverting to any version of the server
  • Table 2 Requirements and limitations when reverting to a specific version of the server
Table 1. Requirements and limitations when reverting to any version of the server
Reversion requirement or limitation
Revert only to the version from which you migrated: If you need to revert, you must revert to the Informix® version that was your source version before you migrated to Version 12.10.
New databases created in the new version of the server: If you created a new database in the new version of the server, you cannot revert the database back to an earlier version of the server. If the data is required, you can unload the data and reload it in the prior version of the server.
New procedures, expression-based fragmented tables, expression-based fragmented indexes, check constraints, and triggers: These cannot be reverted. You must remove any new procedures, fragmented tables, expression-based fragmented indexes, check constraints, and triggers.
Note: Expression-based fragmentation includes fragment by expression, fragment by interval, and fragment by list.
New built-in routines: These cannot be reverted.
New configuration parameters or configuration parameters with new options: These cannot be reverted.
New or outstanding in-place alters: In-place ALTER TABLE statements performed in the new version of the server must not be outstanding against any table.

Ensure that all in-place ALTER operations are complete. If the reversion process does not complete successfully because of in-place ALTER operations, the reversion process lists all the tables that have outstanding in-place alter operations. You must resolve outstanding in-place alter operations on each of the tables in the list before you can revert to the older database server. For more information, see Resolve outstanding in-place alter operations.

Important: Any in-place alter operation that was completed in a version that is before the current version will successfully revert.
Table 2. Requirements and limitations when reverting to a specific version of the server
Reversion requirement or limitation If reverting to the listed server or earlier servers
Tenant databases: Before you revert, identify all tenant databases and remove them.
To display the names of all tenant databases (tenant_dbsname), you can query the tenant table in the sysadmin database. For example, run the following SELECT statement as user informix:
SELECT tenant_dbsname FROM tenant;
You cannot remove this type of database with the DROP DATABASE statement. You must run the admin() or task() SQL administration API function with the tenant drop argument. For example, to remove a tenant database called mydb, run the following command with DBA or TENANT privileges:
database sysadmin;
execute function task("tenant drop", "mydb");
12.10.xC3
JSON compatibility: Databases that were not JSON compatible before conversion to 12.10.xC4 are not compatible after reversion. However, if you revert to 12.10.xC2 or 12.10.xC3, you can run a script to make the databases JSON compatible. 12.10.xC3
Spatial index on JSON or BSON documents: You must drop spatial indexes that index JSON or BSON columns. Run the following SQL statement to identify which indexes you must drop:
select idxname from sysindices 
where substring_index(substring_index((indexkeys::lvarchar),'<',-1),'>',1) in 
(select procid from sysprocedures where paramtypes::lvarchar like 'bson' or 
paramtypes::lvarchar like 'bson,%' or paramtypes::lvarchar like '%,bson,%' or 
paramtypes::lvarchar like '%,bson') and 
amid = (select am_id from sysams where am_name = 'rtree'); 
12.10.xC3
Basic text search index on JSON or BSON documents: You must drop bts indexes that index JSON or BSON columns. Run the following SQL statement to identify which indexes you must drop:
select idxname from sysindices 
where substring_index(substring_index((indexkeys::lvarchar),'[',-1),']',1) 
in (select opclassid from sysopclasses 
where opclassname in ('bts_json_ops','bts_bson_ops','bts_longlvarchar_ops')); 
12.10.xC3
Time series with BSON columns: You must remove any time series with BSON columns before you revert. Run the following SQL statement to identify the time series that you must remove:
select fieldname from sysattrtypes 
where type = 40 and extended_id in ( 
  select extended_id from sysxtdtypes 
  where name in ( 
    select substring_index(substring_index((description::lvarchar),'(',-1),')',1) 
    from sysxtddesc 
    where extended_id in ( 
      select extended_id from sysxtdtypes 
      where type = ( select type from sysxtdtypes 
                     where name = 'timeseries') 
))); 
12.10.xC3
Packed time series data: You must delete time series instances that contain compressed or hertz time series data. Run the following SQL statement to identify which rows in the time series table contain packed data:
SELECT id FROM tsinstancetable WHERE bitand(flags, '16') = 16;

Then delete the rows with packed elements from the time series table.

12.10.xC2
Predefined spatial reference systems: If you used a predefined SRID that was added for 12.10.xC3, after you revert you must manually insert the SRID into the spatial_references table or delete the data that is associated with the SRID. 12.10.xC2
Patch for reverting to 12.10.xC1 with time series data: A patch is required if you have time series data and you reverted to 12.10.xC1. Before you start 12.10.xC1, install patch patch-idsdb00493404.tar. You can download the patch from the IBM® Support Portal. 12.10.xC1 only
LATERAL keyword in SPL routines: You must drop all SPL routines that include the LATERAL keyword. 12.10.xC1, 11.70.xC7 or earlier
Enterprise Replication shard servers: Before reverting, you must first remove all shard servers from participation in sharded clusters. 12.10.xC1
Enterprise Replication key specified by the --anyUniqueKey or --key options: You must remove any Enterprise Replication replicates that include the --anyUniqueKey or --key options to define the replication key. 11.70.xC7
Serial processing of Enterprise Replication replicates: You must remove any Enterprise Replication replicates that include the --serial option. 11.70.xC7
Data marts: You must drop all of the data marts. If you created data mart definitions by using workload analysis, you must drop all of the tables that were created by the probe2Mart() procedure. 11.70
Compressed B-tree indexes: You must uncompress or drop compressed B-tree indexes before you revert. 11.70
Compressed simple large objects in dbspaces: You must uncompress or drop compressed simple large objects in dbspaces before you revert. 11.70
Enterprise Replication on a server that is owned by a non-root user: You must remove Enterprise Replication from a server that is owned by a non-root user. 11.70
Enterprise Replication and TimeSeries data types: You must remove a participant that includes a TimeSeries data type. 11.70
Enterprise Replication send-only participants: You must remove a participant that includes the send-only option. 11.70
Grids enabled with the cdr modify grid command with the --enablegridcopy option: If you upgraded servers in a grid from version 11.70, before reverting, you must disable the ability to copy external files by the cdr modify grid command with the --disablegridcopy option. 11.70
Time series rolling window containers: You must remove rolling window containers. 11.70
Replicated time series instances: Time series instances that are replicated by Enterprise Replication have large IDs. You must remove any time series instances that have an instance ID that is larger than a 4-byte signed integer. You must also remove the containers in which these time series instances are stored. Run this SQL statement to find these instances:
 SELECT * FROM tsinstancetable WHERE id > 2147483647;
11.70
User-defined access methods with parameter descriptors: You must delete any user-defined access methods that include parameter descriptors. 11.70
External tables and empty tables: You can revert to 11.50.xC6 and later versions, if there is sufficient space to allocate extents.
Important: If your data contains special delimiter characters, note that the following releases have different default behaviors in the CREATE EXTERNAL TABLE statement:
  • 11.70: The default is ESCAPE OFF.
  • 12.10: The default is ESCAPE ON.

If the server does not have the space for allocating extents for new external and empty tables, you must drop the objects before reverting. Similarly, before you revert to version 11.50.xC5 or earlier versions, you must drop all external tables. The SYSEXTERNAL, SYSEXTCOLS, and SYSEXTDFILES system catalog tables will be dropped automatically during reversion.

11.70
Time series containers and tables with large page sizes: You cannot revert time series tables and containers that have a page size other than the default size. You must drop all time series tables and containers with large pages sizes before you revert. (You can unload the tables and drop the tables and containers before you revert, and then later recreate the containers and reload the tables.) 11.70.xC2
Time series containers and time series data type names longer than 18 bytes: You cannot revert time series containers and time series data types that have names that are longer than 18 bytes. You must drop all tables that have time series data types with long names and drop all time series containers that have long names before you revert. (You can unload the tables and drop the tables and containers before you revert, and then later recreate the containers and reload the tables.) 11.70.xC2
Time series virtual tables: You must drop all time series virtual tables that were created by the TSCreateExpressionVirtualTab procedure and returned by this query before you revert:
SELECT a.tabname FROM systables a, systabamdata b
 WHERE LENGTH(b.am_param) > 256 AND a.tabid = b.tabid; 
11.70.xC2
Informix Warehouse Accelerator reversion requirements: If you use the Informix Warehouse Accelerator and need to revert, see Reversion requirements for an Informix warehouse server and Informix Warehouse Accelerator in the IBM Informix Warehouse Accelerator Administration Guide. 11.70.xC2
Databases created as NLSCASE INSENSITIVE: You cannot revert databases that were created as NLSCASE INSENSITIVE. You must drop all databases that were created with the NLSCASE INSENSITIVE property before you revert. 11.70.xC1
Forest of trees indexes: If you created forest of trees indexes, you must drop them before you revert. 11.50
A dbspace that exceeds 2147483647 pages: If the total size of a dbspace exceeds 2147483647 base pages (for example, 4 terabytes for a 2K page size, 8 terabytes for a 4K page size), reversion will fail. If this happens, you must reorganize your dbspaces and chunks so that the total size of an individual dbspace does not exceed 2147483647 base pages. 11.50
Interval and list fragmentation strategies: Any table or index with interval or list fragmentation strategy must be dropped before reversion. 11.50
The sysfragdist table and related schema changes: The sysfragdist system catalog table and changes to the schema or to the encoding of other system catalog tables to support fragment level statistics and fragmentation strategies will be dropped during reversion. 11.50
Sequence objects: You can revert these unless the server does not have the space for allocating extents for new sequence objects. If the server flags these objects because it cannot revert them, you must use the DROP SEQUENCE statement to drop from the database any sequence objects that the database server flags. 11.50
Disabled foreign key indexes: You must drop these and recreate the affected constraints without the index disabled option before you can revert. 11.50
MULTI_INDEX, STAR_JOIN, and related query optimizer directives: These are not supported after reversion. 11.50
Disabled replication server: Before reverting, you must enable or delete the replication server. 11.50
Master server for quality of data: Before reverting, you must stop monitoring the quality of data or define a new master server for quality of data. 11.50
Grid member: Before reverting, you must remove the server from the grid. 11.50
ERKEY shadow columns: Before reverting, you must drop the ERKEY shadow columns by running the ALTER TABLE statement with the DROP ERKEY clause. 11.50
UDRs that use the SET ENVIRONMENT RETAINUPDATELOCKS syntax: Before reverting, you must drop these UDRs. 11.50.xC5
MERGE statements that include the Delete clause: Before reverting, you must drop these routines. 11.50.xC5
Reversion if you have high-availability clusters: Before reverting, see Reverting clusters. 11.50.xC5
MERGE statements: Before reverting , you must drop any routines that use the MERGE statement. 11.50.xC4
SELECT statements that include the CONNECT BY clause: Before reverting you must drop any routines that use queries or subqueries that include the CONNECT BY clause, and drop any views that are defined by SELECT statements that include the CONNECT BY clause. After reversion, SYS_CONNECT_BY_PATH( ) is not supported as a built-in routine. 11.50.xC4
ifx_replcheck shadow column: Before reverting, you must drop the ifx_replcheck shadow column. 11.50.xC4
Compressed tables and compressed table fragments: You must uncompress or drop compressed tables and fragments before reverting. 11.50.xC3
UDRs that use methods or SQL statements that reference savepoints: You must drop these UDRs, because they include new SQL syntax that earlier Informix versions do not support. (Before you can compile these UDRs, you must rewrite their error-handling code, so that no savepoint objects are referenced.) 11.50.xC2
New indexes in sbspaces: If you built indexes in sbspaces so you could search the sbspaces with the Basic Text Search DataBlade module, you must drop the indexes before reverting. 11.50.xC2
Version columns in tables: If you have version columns in tables, you must remove them. 11.10
BIGINT and BIGSERIAL columns: If you have any BIGINT or BIGSERIAL columns, you must modify or remove them. 11.10
Extended data types or attributes based on BIGINT and BIGSERIAL data types: If you have these, you must remove them. 11.10
Casts based on BIGINT and BIGSERIAL data types: If you have these, you must remove them. 11.10
Components installed with the custom installation option: If you installed components with the custom installation option, you can uninstall a component only if you are not breaking any component dependencies. 11.10
Java UDRs that were compiled with newer versions of Java software development kit: These UDRs must be recompiled with the earlier version of the Java software development kit. For details, see Recompile Java user-defined routines. 11.10
Subqueries in DELETE and UPDATE statements: If a condition with a subquery in the WHERE clause of DELETE or UPDATE references the same table that the DELETE or UPDATE statement modifies, before you revert, you must rewrite the INSERT or DELETE operation as two separate SQL statements:
  • A SELECT statement that returns qualifying rows of the original table to a temporary table
  • A DELETE or INSERT statement that modifies the original table by inserting or deleting rows that match rows in the temporary table
11.10
Returned data type from CONCAT and other SQL string-manipulation functions: Because these built-in functions now support promotion of their return value to longer data types, some operations on VARCHAR or NVARCHAR values might fail with overflow error -881 after reversion. 11.10
Automatic update statistics feature: Informix versions that are earlier than version 11.10.xC1 do not support the Scheduler. Therefore, the functionality of the Automatic Update Statistics feature, which is implemented by the Scheduler, is not available after reversion. To enforce any Automatic Update Statistics policies that you intend to apply to your databases, you must manually issue the corresponding UPDATE STATISTICS statements after reversion to Version 10.00 or to an earlier version. 10.00

ANSI joins in distributed queries: Distributed queries that use ANSI-compliant LEFT OUTER syntax for specifying joined tables and nested loop joins run more efficiently in Version 10.00.UC4 than in earlier releases. This occurs through sending the query to each participating database server for operations on local tables of those servers. If you revert from Version 10.00.UC4 or later to an earlier release that does not support this implementation of the ANSI-compliant syntax, such queries might show reduced performance, because the database server instance from which the query originates will perform the joins locally.

10.00.xC4

The INDEX_SJ and AVOID_INDEX_SJ optimizer directives: When queries explicitly use the new INDEX_SJ and AVOID_INDEX_SJ optimizer directives, these directives have no effect when the query runs. You must run UPDATE STATISTICS on stored procedures to force re-compilation of stored procedures.

In addition, reversion removes the effect of these directives in SAVE EXTERNAL DIRECTIVES statements and on output from the SET EXPLAIN statement. If you revert to a version of the database server that supports the sysdirectives system catalog table, but does not support the AVOID_INDEX_SJ or INDEX_SJ directives, user informix must delete any active row of sysdirectives that includes AVOID_INDEX_SJ or INDEX_SJ in the directives column.

10.00
sysdbopen( ) and sysdbclose( ) procedures: Earlier versions of the database server do not support these procedures, and any UDRs with these names are not automatically started. 10.00
UDRs include a collection-derived table in the FROM clause of a query: These will not work correctly after reversion to an earlier release. 10.00
Multiple BEFORE, FOR EACH ROW and AFTER triggers for the same INSERT, UPDATE, DELETE, or SELECT event on a table or view, and trigger routine UDRs: Before reverting, you must drop any of the following triggers and UDRs, if they exist in the database:
  • Delete triggers defined on the same table or defined on a view as another Delete trigger
  • Insert triggers defined on the same table or defined on a view as another Insert trigger
  • Update triggers defined on the same table or view (or on the same subset of columns) as another Update trigger
  • Select triggers defined on the same table or same subset of columns as another Select trigger
  • Trigger routines defined with the FOR TRIGGER keywords
  • Triggers that use the DELETING, INSERTING, SELECTING, or UPDATING operators in their triggered action
10.00
Cross-server operations on BOOLEAN, LVARCHAR, or DISTINCT columns: If you revert to a database server version that does not support cross-server operations on BOOLEAN, LVARCHAR, or DISTINCT columns in databases, applications that use this feature will fail. 10.00
sysadmin database: This database is automatically dropped during reversion. 10.00
Queries that use SKIP and LIMIT: Version 10.00.xC3 supports queries that use the keywords SKIP and LIMIT. A query that uses either of these keywords will fail with an error after reversion to any earlier version of the database server. 10.00
FIRST clause with an ORDER BY clause: Version 10.00.xC3 supports the ORDER BY clause of the SELECT statement in a subquery whose result set is a collection-derived table (CDT), but only in conjunction with the SKIP keyword or the FIRST keyword (or its keyword synonym LIMIT) in the Projection clause of the same SELECT statement. Queries that use this syntax will fail with an error after reversion to an earlier version of the database server. 10.00
Label-based access control (LBAC): Before reverting, you must drop any security policy from tables. In addition, because IDSSECURITYLABEL is a new built-in type for Version 11.10, you must remove any columns of that type before you can revert to versions that are earlier than Version 11.10. 10.00
Support for Distributed Relational Database Architecture™ (DRDA): Informix drops stored procedures for metadata that the database server created automatically. You cannot manually drop these built-in stored procedures. 10.00

If you migrated to an interim version of the database server before you migrated to Version 12.10 and you need to revert, see additional reversion requirements and limitations in the IBM Informix Migration Guide that is included in the documentation set for the interim version of the database server.


Copyright© 2018 HCL Technologies Limited