Informix

 View Only
Expand all | Collapse all

Informix 15 server / CSDK compatibility matrix

  • 1.  Informix 15 server / CSDK compatibility matrix

    Posted 4 days ago

    Hello,

    Simple questions:

    • Can I use a CSDK 4.50.* to connect to an Informix 15 server?
    • Can I use a CSDK 15 to connect to an Informix 14 server?

    Is there some compatibility matrix available?

    I have just face the following:

    1) With CSDK 15 connected to Informix 15 server:
    CREATE TABLE tab1 ( pkey BIGSERIAL(5000000000) NOT NULL, name VARCHAR(50) )
    INSERT ...
    INSERT ...
    UPDATE ...
    SELECT ...

    2) The using CSDK 4.50 connected to Informix 15 server:

    > drop table tab1;

      214: Cannot remove file for table (sf.tab1).

    Any idea why this happens?

    Are such restrictions documented somewhere?

    Seb



    ------------------------------
    Sebastien FLAESCH
    ------------------------------


  • 2.  RE: Informix 15 server / CSDK compatibility matrix

    Posted 4 days ago

    Sebastien:

    I have tested this with Jonathan Leffler's sqlcmd compiled with CSDK 4.50 and with CSDK 15.0. Verified:

    $ ~/bin/sqlcmd -d art 
    -B
    SQL[6]: drop table tab1;
    2024-12-13 06:45:40
    + drop table tab1;
    SQL -214: Cannot remove file for table (art.tab1).
    ISAM -21569: This client cannot create or open tables with V1 infrastructure features.
    SQLSTATE: IX000 at /dev/stdin:1
    Time: 0.001997
    SQL[7]:  

    $ ./sqlcmd -d art -B  
    SQL[7]: drop table tab1;
    2024-12-13 06:46:00
    + drop table tab1;
    Time: 0.018983
    SQL[8]:

    Art



    ------------------------------
    Art S. Kagel, President and Principal Consultant
    ASK Database Management Corp.
    www.askdbmgt.com
    ------------------------------



  • 3.  RE: Informix 15 server / CSDK compatibility matrix

    Posted 4 days ago

    Sebastien:

    Looking further, the ISAM error tells the tale:

    $ finderr  -21569
    -21569  This client cannot create or open tables that use large rowids.

    You are attempting to create or open a large table, but your client program
    is not compatible with large tables. Set the TABLE_SIZE session environment
    variable to "SMALL" or rebuild your client using the latest client libraries.

    First, I tried setting "SET ENVIRONMENT TABLE_SIZE 'SMALL'; then the drop table, no dice, same error, so that suggestion only works when creating a table, the upshot of which is an app compiled with a CSDK prior to v15.0 cannot create LARGE tables which is the default under infrastructure v1, only SMALL tables.

    However, one could make the case that why can't such an earlier executable DROP TABLE for a large table??

    Of course, if whatever executable created the large table was presumably recompiled with v15.0, why not recompile the executable that has to drop it? That said, one does wonder, as you implied, what else won't work?

    For example, the 4.50 executable cannot even query that large table:

    ~/bin/sqlcmd -d art
    -B
    SQL[18]: select * from tab1;
    2024-12-13 06:58:28
    + select * from tab1;
    SQL -242: Could not open database table (art.tab1).
    ISAM -21569: This client cannot create or open tables with V1 infrastructure features.
    SQLSTATE: IX000 at /dev/stdin:1
    Time: 0.000824
    SQL[19]:

    To JC & Company: There needs to be a compatibility layer somehow. If the engine can recognize that an app is not v15 ready, then it can translate certain things such as the sqlca structure and whatever other metadata goes back to the client when accessing a large table so it looks normal to a SMALL app. Otherwise whatever 3rd party applications still work with Informix v14 will no longer work with v15 and that's going to be a deal breaker for many customers to upgrade to v15!!!!!!



    ------------------------------
    Art S. Kagel, President and Principal Consultant
    ASK Database Management Corp.
    www.askdbmgt.com
    ------------------------------



  • 4.  RE: Informix 15 server / CSDK compatibility matrix

    Posted 4 days ago

    Yes, this is quite expected:

    • any table you create in v15, if not in compatibility mode and not forcing SMALL table, will be a LARGE (big-rowid) table
    • any pre-v15 client will not be able to access such LARGE table
    • if looking closely, or if using e.g. a 14.10 dbaccess for the drop table, you'll see ISAM error 21569 associated with SQL 214
    • ISAM 21569, as Art already pointed out, indicates above mentioned inability - it only still has to be made known to (the next release) of 14.10/4.50

    For now this is a categorical no for old clients trying to access v15 LARGE tables, in whichever way or for whatever purpose.
    In theory one might argue that things like DROP TABLE, or maybe other DML, could be allowed, but would anyone see any value in this?

    BR,

     Andreas



    ------------------------------
    Andreas Legner
    Dev Engineer
    HCL Software
    ------------------------------



  • 5.  RE: Informix 15 server / CSDK compatibility matrix

    Posted 4 days ago

    Andreas:

    See my note to JC & Co.

    Not being able to access data from a LARGE table in a v4.xx compiled application is going to be a deal breaker for customers to upgrade to v15.x! Trust me on this one. I understand not being able to create a LARGE table or even to drop a LARGE table, though I think that that can be solved as well, it's very low priority. But not being able to query a large table? That's a problem. Yes, I understand that the sqlca could not return row counts for a SELECT * with no filters against a table with more than 2^31 rows, but that was already a problem with any partitioned table that might have more rows which didn't generate any error, so ....

    Art



    ------------------------------
    Art S. Kagel, President and Principal Consultant
    ASK Database Management Corp.
    www.askdbmgt.com
    ------------------------------



  • 6.  RE: Informix 15 server / CSDK compatibility matrix

    Posted 4 days ago

    Hello,

    Thank you Art and Andreas for your quick reply, but I would also appreciate that all my questions in my initial post get answered.

    I can understand that there are constraints, but then it must be documented somewhere.

    Seb



    ------------------------------
    Sebastien FLAESCH
    ------------------------------



  • 7.  RE: Informix 15 server / CSDK compatibility matrix

    Posted 4 days ago

    Hi Art,

    hearing you, but ... uhh, ohh, ... yet, for some reason, this doesn't really come as a surprise.

    On a positive note:  you probably know best how much we work and respond on user feedback ;-)

    In general I think the (server's) default behavior should stay as it is, to avoid the havoc that inevitably would occur.  Would you think e.g. a new session env var, sent/set by such old / third party client, could be part of a solution? I'm afraid any solution requiring client side flagging will have the problem that certain clients won't allow any such modification.  If, on the other hand, we'd go for a server side, i.e. instance wide, setting, how would this be different from "compatibility mode" (which I'd consider safer as it guarantees you there's nothing in the instance an old client couldn't work with.)

    If we had database level properties, maybe this could be a solution too.

    I think we're all in and known for as much compatibility as possible, but there are natural limits...

    Cheers,
     Andreas



    ------------------------------
    Andreas Legner
    Informix Dev
    HCL Software
    ------------------------------



  • 8.  RE: Informix 15 server / CSDK compatibility matrix

    Posted 4 days ago

    Not very prominently, but SMALL and LARGE tables does mention this - I think, though, I've seen, internally, a newer version of this page that's more explicit on this.  Also, as already discussed elsewhere, the mentioned "relinking" isn't gonna do the trick.



    ------------------------------
    Andreas Legner
    Informix Dev
    HCL Software
    ------------------------------



  • 9.  RE: Informix 15 server / CSDK compatibility matrix

    Posted 4 days ago

    Sebastien I've got more clarifying info coming soon. Andreas and Art and I had an email convo I'll summarize for you as soon as I can. Stay tuned. Tx.



    ------------------------------
    John Lengyel
    ------------------------------



  • 10.  RE: Informix 15 server / CSDK compatibility matrix

    Posted 3 days ago

    Getting back to your original questions Sebastien:

    • Can I use a CSDK 4.50.* to connect to an Informix 15 server?
    • Can I use a CSDK 15 to connect to an Informix 14 server?

    Yes and yes. Just like in previous versions, old clients connecting to the new server isn't a problem. Nor is new clients connecting to older servers. Distributed queries between V15 and older versions -- all that should be working. The problem you ran into is entirely about large tables vs. small tables. And it should be solvable.

    As we discussed earlier in the week, V15 supports both 4-byte and 8-byte rowids. Legacy tables all use 4-byte rowids and are called small tables. Tables that use the new 8-byte rowids have millions of times the capacity and are therefore called large tables. A large rowid may very well refer to page 1,000,000,000,000 in the table.

    To an old client that's crazy talk.

    Both old and new clients do need to handle rowids in various scenarios. So if we allowed old clients to access large tables they would work only to a point, and that seemed untenable to us. We decided to disallow all access to large tables from old clients.

    That said, no one is forced to create or use large tables in V15. The DBA has a lot of control over whether a table is created small or large.

    Unless they attempt to explicitly create a large table, as in CREATE LARGE TABLE <table name>...,  old clients will not receive an error about infrastructure incompatibilities when creating a table. Tables they create will always be small.

    New clients will create large tables by default, but that behavior can be changed using several methods. For example they can use the 'small' keyword in the create table statement:

    CREATE SMALL TABLE <table name>...

    They can also set a session-level environment variable like so:

    SET ENVIRONMENT TABLE_SIZE 'SMALL';

    CREATE TABLE <table name>...

    The bottom line is that you can use only small tables forever if you want. You'll still get chunks up to 8 exabytes and page sizes up to 256k and all the other V15 features, but thanks to the 4-byte rowid, small tables remain subject to two limits:

    1. An individual table fragment can have a maximum of 16,777,215 pages.
    2. Each data page in the table can store a maximum of 255 rows.

    Perhaps some customers will migrate a database in-place and continue to use an existing application with its legacy small tables indefinitely, while developing new applications to work with large tables. Or they will recompile some applications specifically to take advantage of large tables. We're hoping the design is flexible enough to keep everyone happy while also offering much greater capacity. But we have our ears to the ground. If we can make the experience of moving to v15 smoother we will definitely try.

    We'll also review our docs to see where we need to add more of this kind of info.



    ------------------------------
    John Lengyel
    ------------------------------



  • 11.  RE: Informix 15 server / CSDK compatibility matrix

    Posted 3 days ago

    Hi,

    There are two things I noticed from Carlton's presentation.

    -  All In-place alters HAVE to be resolved before migration

    - ALl secondaries are lost on upgrade and have to rebuilt

    Will these limitations be removed in a modpack/fixpack?

    Regards,

    David.



    ------------------------------
    David Williams
    ------------------------------



  • 12.  RE: Informix 15 server / CSDK compatibility matrix

    Posted 2 days ago

    Hi David,

    what I can definitely state is that this second point must be a misconception, on whoever's part: secondaries, both HDR and RSS, should be able to upgrade to v15 in place as they are, no need to rebuild them. Try it out!

    For the in-place alters, we'll see what's in the cards...

    BR,
     Andreas



    ------------------------------
    Andreas Legner
    Informix Dev
    HCL Software
    ------------------------------



  • 13.  RE: Informix 15 server / CSDK compatibility matrix

    Posted yesterday

    Hello John,

    Unfortunately, the lock on the large tables was somewhat exaggerated. The following select also produces this error, although it only queries the API. For example:
    execute function task('print partition full', '<partnum of a big table>');
    I don't think it makes sense to prohibit this. Support wants to discuss it. That's why there is a feature request: https://ideas.ibm.com/ideas/INFX-I-653
    Please vote if you are of the same opinion.

    Regards

    Andreas



    ------------------------------
    Andreas Seifert
    CURSOR Software AG
    http://www.admin-scout.com
    ------------------------------



  • 14.  RE: Informix 15 server / CSDK compatibility matrix

    Posted 13 hours ago

    I agree that we initially went overboard with the old client / large table restrictions. We're working on the feature request you mention.



    ------------------------------
    John Lengyel
    ------------------------------