Showing posts with label v15. Show all posts
Showing posts with label v15. Show all posts

Monday, November 25, 2024

Heads up!

 Warning: old tools with new version (original version here)

English version
In the post about the release of version 15 I've mentioned an heads up about the risk of using the new version of the engine with current versions of the tools (4GL/ISQL). I hope I can show the issue more clearly here while we start to grasp on the expanded capacity of version 15.

Version 15 has two "modes" of operation. The "compatibility mode" or "Infrastructure Version: 0" and the new version "Infrastructure Version: 1". Currently I have no idea if future changes will create new modes.

In "Compatibility Mode" the engine cannot create "LARGE TABLEs". If you try to use the "CREATE LARGE TABLE tabname...." you'll get:

   261: Cannot create table (informix.test_large).
 21568: V1 infrastructure features have not yet been enabled.

The mode is shown for example if you run "onstat -":

IBM Informix Dynamic Server Version 15.0.0.0AEE -- On-Line -- Up 00:21:11 -- 222740 Kbytes
2024-11-24 02:28:09 -- Infrastructure Version: 0 (Compatibility mode)

There is a process to "convert" an instance from Infrastructure Version 0 to 1, but I won't cover that in this post. Let's now see what happens in an instance created from scratch in version 15. By default all tables will be in "LARGE TABLE" mode. But we have the option to create "SMALL TABLEs". A way to check if a table is in LARGE or SMALL mode is by running oncheck:

asterix@myhost.onlinedomus.local-> oncheck -pt stores:customer | head -10


TBLspace Report for stores:informix.customer

    Physical Address               8:566
    Creation date                  11/19/2024 15:31:46
    TBLspace Flags                 400000802        Row Locking
                                                    TBLspace uses 4 bit bit-maps
                                                    TBLspace uses large rowids
    Maximum row size               134
asterix@myhost.onlinedomus.local->

Note the "TBLspace uses large rowids" section. Let's create a small table and check it:

asterix@myhost.onlinedomus.local-> dbaccess -e stores small_test.sql

Database selected.

DROP TABLE IF EXISTS customer_small;
Table dropped.


CREATE SMALL TABLE customer_small
(
    customer_num SERIAL NOT NULL ,
    fname CHAR(15),
    lname CHAR(15),
    company CHAR(20),
    address1 CHAR(20),
    address2 CHAR(20),
    city CHAR(15),
    state CHAR(2),
    zipcode CHAR(5),
    phone CHAR(18),
    PRIMARY KEY (customer_num)
) LOCK MODE ROW;
Table created.



INSERT INTO customer_small SELECT * FROM customer;
28 row(s) inserted.




Database closed.

asterix@myhost.onlinedomus.local->

So now if we check the customer_small table:

asterix@myhost.onlinedomus.local-> oncheck -pt stores:customer_small | head -10


TBLspace Report for stores:informix.customer_small

    Physical Address               8:662
    Creation date                  11/24/2024 02:47:29

    TBLspace Flags                 802              Row Locking
                                                    TBLspace uses 4 bit bit-maps
    Maximum row size               134
    Number of special columns      0
asterix@myhost.onlinedomus.local->

There is no indication of "large rowids" so it's a "small" table. Now let's see what happens if we try to use ISQL on these two tables. I'm using 7.51.FC3, currently the latest available version of the tools.

 
 
As you can see the form works as expected for "customer_small" table, but raises an error for "customer" table. Let's check the error with the tools environment:
asterix@myhost.onlinedomus.loca-> finderr -21569
Message number -21569 not found.
 
asterix@myhost.onlinedomus.loca:informix->

The error is unknown. Not a surprise as the error didn't exist when this version of the tools was created. So let's check it in the engine environment:
  
  asterix@myhost.onlinedomus.local:informix-> . setinfx 5
Welcome to CDC Instance (ADM) Asterix
asterix@myhost.onlinedomus.local:informix-> 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.


asterix@myhost.onlinedomus.local:informix->
So, it makes sense. The engine understands the application is expecting small rowids and raises an error if the table was created with LARGE mode.

This is the risk you face if you try to use the engine in version 15 before a new version of the tools are released. Note that this will affect any application that relies or handles rowids. The problem will not manifest if you upgrade an instance and avoid changing it to the new Infrastructure Mode, or in other words, while you keep in Compatibility Mode.
At the time of this writing I am unaware of any method to force the Infrastructure Version 0 on a newly created instance. This would mean that any environment that depends on rowids would require a tools refresh before any upgrade is considered. Don't take this lightly or you'll risk serious issues on your applications. An alternative would be (in a newly created instance) to create all the tables as SMLL

Let it be clear that there is an environment option to change the default type of tables we wish to create (when we don't specify the SMALL nor the LARGE option). That option is set with the command:

SET ENVIRONMENT TABLE_SIZE <SMALL|LARGE>


Note that if you try to set it to "LARGE" in an instance running in compatibility mode you'll get the error:

mouraria@psygnosis.onlinedomus.local:informix-> finderr -26041
-26041  Invalid values specified for the %s environment variable.

An invalid value was provided for the environment variable. Please check
your user documentation, and provide the correct value, and try again.

Versão Portuguesa
No artigo sobre a disponibilização da versão 15, mencionei um aviso sobre o risco de usar a nova versão do motor com as versões actuais das ferramentas (4GL/ISQL). Espero agora poder mostrar aqui de forma mais clara este tema, enquanto começamos a entrar mais na capacidade estendida da versão 15

A versão 15 tem dois "modos" de operação. O modo de compatibilidade  ou "Infrastructure Version 0" e o novo modo ou "Infrastructure Version 1". De momento não faço ideia se futuras alterações poderão dar origem a outros modos.

Em modo de compatibilidade o motor não pode criar "LARGE TABLEs". Se tentarmos usar "CREATE LARGE TABLE nom_tabela...." obteremos:

   261: Cannot create table (informix.test_large).
 21568: V1 infrastructure features have not yet been enabled.

O modo pode ser mostrado quando executamos "onstat -":

IBM Informix Dynamic Server Version 15.0.0.0AEE -- On-Line -- Up 00:21:11 -- 222740 Kbytes
2024-11-24 02:28:09 -- Infrastructure Version: 0 (Compatibility mode)

Existe um processo para "converter" uma instância do modo "Infrastructure Version 0" para "Infrastructure Version 1", mas não vou cobrir isso neste artigo. Vejamos agora o que acontece numa instância criada de raiz na versão 15. Por omissão todas as tabelas serão "LARGE TABLES". Mas temos a opção de criar "SMALL TABLEs". Uma forma de verificar o tipo de tabela é usar o comando oncheck:

asterix@myhost.onlinedomus.local-> oncheck -pt stores:customer | head -10


TBLspace Report for stores:informix.customer

    Physical Address               8:566
    Creation date                  11/19/2024 15:31:46
    TBLspace Flags                 400000802        Row Locking
                                                    TBLspace uses 4 bit bit-maps
                                                    TBLspace uses large rowids
    Maximum row size               134
asterix@myhost.onlinedomus.local->

Repare-se na secção "TBLspace uses large rowids". Vamos criar uma SMALL TABLE e verificar:

asterix@myhost.onlinedomus.local-> dbaccess -e stores small_test.sql

Database selected.

DROP TABLE IF EXISTS customer_small;
Table dropped.


CREATE SMALL TABLE customer_small
(
    customer_num SERIAL NOT NULL ,
    fname CHAR(15),
    lname CHAR(15),
    company CHAR(20),
    address1 CHAR(20),
    address2 CHAR(20),
    city CHAR(15),
    state CHAR(2),
    zipcode CHAR(5),
    phone CHAR(18),
    PRIMARY KEY (customer_num)
) LOCK MODE ROW;
Table created.



INSERT INTO customer_small SELECT * FROM customer;
28 row(s) inserted.




Database closed.

asterix@myhost.onlinedomus.local->

Verifiquemos então a tabela customer_small:

asterix@myhost.onlinedomus.local-> oncheck -pt stores:customer_small | head -10


TBLspace Report for stores:informix.customer_small

    Physical Address               8:662
    Creation date                  11/24/2024 02:47:29

    TBLspace Flags                 802              Row Locking
                                                    TBLspace uses 4 bit bit-maps
    Maximum row size               134
    Number of special columns      0
asterix@myhost.onlinedomus.local->

Não há referência a "large rowids" portanto é uma "SMALL TABLE". Agora vejamos o que acontece se tentarmos usar o ISQL com ambas as tabelas. Vou usar a versão 7.51.FC3, actualmente a última versão disponível das ferramentas.

 
 
Como se verifica, o "form" funciona normalmente para a tabela "customer_small", mas retorna um erro para a tabela "customer". Vamos verificar o erro com o ambiente das ferramentas:
asterix@myhost.onlinedomus.loca-> finderr -21569
Message number -21569 not found.
 
asterix@myhost.onlinedomus.loca:informix->

O erro é desconhecido. Não é uma surpresa visto que o erro não existia quando esta versão das ferramentas foi criada. Verifiquemos então no ambiente do motor:
  
  asterix@myhost.onlinedomus.local:informix-> . setinfx 5
Welcome to CDC Instance (ADM) Asterix
asterix@myhost.onlinedomus.local:informix-> 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.


asterix@myhost.onlinedomus.local:informix->
Portanto tudo faz sentido. O motor entende que a aplicação está à espera de rowids "curtos" e cria um erro se a tabela em causa foi criada como LARGE TABLE.
 
Este é o risco que enfrentamos se usarmos a versão 15 do motor antes da disponibilização de novas versões das ferramentas. Note-se que isto afectará qualquer aplicação que dependa ou manipule rowids. O problema não se manifesta se fizermos upgrade a uma instância e evitarmos mudar o "Infrastructure Mode", ou por outras palavras, enquanto a mantivermos em modo de compatibilidade.

à data de escrita deste artigo desconheço se há alguma forma de forçar o modo de compatibilidade numa instância criada de raiz na versão 15. Isto significa que qualquer upgrade para a versão 15 com recriação de instância requererá uma nova versão das tools. Não menospreze este tema pois haverá sérios riscos de as aplicações deixarem de funcionar. Uma alternativa seria (numa instância criada de raiz) criar todas as tabelas como SMALL.

Note-se que há uma opção de ambiente para mudar o tipo de tabela a criar por omissão (quando não se usa o SMALL ou o LARGE no CREATE TABLE).
Essa opção é usar o comando:

SET ENVIRONMENT TABLE_SIZE <SMALL|LARGE> 

Refira-se ainda que, uma tentativa de estabelecer esta opção como LARGE, numa instância que se encontre em modo de compatibilidade gerará um erro:

mouraria@psygnosis.onlinedomus.local:informix-> finderr -26041
-26041  Invalid values specified for the %s environment variable.

An invalid value was provided for the environment variable. Please check
your user documentation, and provide the correct value, and try again.

Friday, November 22, 2024

Informix version 15 is GA

Informix version 15 is GA! (original version here)

English version
Version 15 of Informix was officially released and is generally available in the usual places!
I'll try to cover the new functionalities here in the upcoming weeks in some detail. For now I just want to mention the overall impression and a list of new features with brief comments. On the overall feeling, I'd say it's very good, although not perfect... But it really depends on our expectations and main concerns. When we see a new major version we all hope that all our required and more dearest features are there. And it never happens. And then there are the new features we didn't expect. In this particular case we had some public sessions where some points were disclosed so some of what is there was to be expected. A few things mentioned before were left out. So the surprise factor was not that high since that public session, but if we go before that, and someone asked me if I'd expect major physical changes in the internal structures of the engine I would clearly say: "no way". But our amazing developers did it! Eventually these big changes forced a few others to be left out, and that's why I say it's not perfect. But by changing these things now they're laying the foundations to future improvements. I cannot go through this without recalling the question I heard constantly around 2001 when IBM bought Informix: "What's the future of the product?". I always answered "honestly I don't think anyone can be sure, but it's being developed". And 23 years later (yes, 23!) we're seeing major architectural changes! So this is overall the feeling I have. Now let's see a brief list of new features and some comments:

  • Java: Engine does not include a JRE environment. And Java version 11 is needed (Informix HQ and Java UDRs for example)

  • GSKit updated to version 8.0.60.1

  • The "real thing": The internal limits were changed. This means that a lot of limits that we're used to are now much higher. So high that it looks like there is no limits. I'd say none of us will have to worry about limits during our career. But we've seen many examples in the past where people assured similar things and then it turned out as big failed previsions. Let me quote the new limits from the fine manual:
    • A single table fragment/partition can have 140 trillion pages
    • A chunk may be as large as 8 exabytes (this is the unit after Petabyte which is above Terabyte. So an exabyte would be 1024x1024 Terabytes. Yes.... a very large number)
    • Data rows per page depends on pagesize but can reach 29122 in 256KB pages (maximum was 255 independently of page size)
    • Page size can be 2, 4 ,8, 16, 32, 64, 128 and 256 KBytess (maximum was 32)
    • Data rows per fragment/partition is 9.2 quintillion 
There would be much more to say about limits. I'd say for now that the table/disk structures for now don't have "real" limits. The limits that can still have some impact would be things like number of user threads, row size (32KBytes) and a few other that were not changed at this phase. I'll get back to the limits in the end of this post for an important heads up!
  • External smart blobs: Smart blobs can now be stored in external filesystems. This can have a huge impact in terms of backups. A tradicional smart blobspace has to exist to store the smart blobs metadata
  • Invisible indexes, is a new functionality that allows a DBA to set an index to "invisible". An invisible index will be maintained as a normal index (for INSERTs, UPDATEs and DELETEs) but will not be used by queries. This allows a DBA to "test" a system behavior as if the index did not exist, and revert easily and immediately if the result is not good. An index can also be created in "invisible mode" and turned visible later.
    I would expect some functionality to change a session to allow the use of invisible indexes for that session only. That would allow a DBA to test the use of an index before really turning it on for all the sessions. BUT NOTE THIS IS JUST A PERSONAL IDEA: THERE IS NO SUGGESTION THAT THIS FEATURE WILL BE IMPLEMENTED IN THE FUTURE

  • Obtain query plan of a running query. This one could have put tears in my eyes... I need this most of the times I have a performance issue to solve. I think an image speaks louder than a thousand words, so let me just show this:
Yes... I opened this feature 11 years ago.
  • Improved audit records analysis. This means the Session ID (SID) can appear in the audit logs. Since I mentioned images, let me show another one:

    Yes... I opened this feature 9 years ago. And before that I had many internal discussions to try to push this. The argument was simple: The information is nearly useless without this because just by using the client process ID means that in many cases we cannot correlate the actions shown in the log. The argument against was always the dreadful "we cannot make the outputs incompatible with previous behavior". Check!
  • Replication update: changes to '--cascade replicate'. The --cascade replicate option is now generally available for replicates, also through templates. A replicate having the --cascaderepl option turned on will be able, on its only sending participant, to pick up transaction traffic arriving through other replicates. This used to be available only for SPL replication situations

  • Informix HQ 3.0
    • Automatic account lockout after 5 invalid access attempts
    • Support for "LARGE TABLES". We can create LARGE TABLEs and see if a table is categorized as SMALL or LARGE table. A future article will dive into what is a LARGE table. For now let's just assume it's a table with expanded capacity
    • Droping constraints directly from the user interface
    • Multiple servers refresh simultaneously

  • CDC API support on secondary servers. I've been using InfoSphere Change Data Capture (InfoSphere CDC) very much lately, which uses the Informix CDC API. Being able to take advantage of secondary servers will be great news for Informix customers who use CDC to send data to other systems.

  • New version format. Not exactly a new functionality, but something we all need to get used to. Traditionally Informix versions had the format M.R.xyz.Extra where:
    • M.R was the major release (11.50, 11.70, 12.10, 14.10)
    • x was the platform indication (F for 64 bit, U for 32 bit and T for Windows)
    • y was the type of release (B for Beta, C for initial release, D for later release with significant changes)
    • z was the fixpack number
    • Extra was a mark for specific fixes like "X1"
Now it will use: M.R.m.f-Extra where:
  • M is the major version
  • R is the release version
  • m is the "modification" identifier (a modpack includes changes)
  • f is the fixpack (a fixpack should include fixes)
  • Extra is an identifier for special builds
  • Client SDK and JDBC versions will match the server version (avoids a lot of confusion)

Heads up!

I mentioned before I'd go back to the limits for an important heads up. And I think this is really important. The new limits are implemented among others with a major change to what we know as "RowID". A row ID in "traditional" informix structure was a four byte value, divided into two components: 3 bytes of "page address" (thus the limit of around 16M pages in a fragment/partition) and 1 byte for a slot table pointer (thus the limit of 255 rows per page). New "expanded" RowIDs should be able to use 8 bytes. Traditional tools like 4GL and ISQL have some functionality that depends on RowIDs. So, existing versions will not be able to use the new extended RowIDs. If you check the compatibility page (https://www.ibm.com/support/pages/node/502131) you'll see the 7.51.FC3 tools version is certified for Informix V15.0.0.0, BUT only for "small table mode". I don't want to get into details in this generic post, but if you upgrade an existing instance to V15, you'll be in "compatible mode" and the extended capacity is not available. If you change it to "infrastructure version 1" or if you create an instance from scratch you'll be in "new version mode" and the expanded capacity will be available. Existing tools will not work 100% in this case so you must be very careful on the steps you take. A new version of the tools is being worked on but at the time of this writing there is no ETA for it. I was assured this is a priority and the development team is working on it.
 
 
 



Versão Portuguesa 

A versão 15 do Informix foi oficialmente lançada e está disponível nos sítios habituais!

Vou tentar cobrir as novas funcionalidades na próximas semanas com algum detalhe. Por agora apenas pretendo expor a impressão geral e uma lista de funcionalidades com uns breves comentários. Relativamente à impressão geral é bastante boa, mas não perfeita... Mas isto depende das nossas expectativas e principais preocupações. Quando vemos uma nova versão todos sonhamos que todos os nossos desejos de funcionalidades tenham sido implementados. E isto nunca acontece. E depois existem as funcionalidades que não esperávamos. Neste caso em particular, nós tivemos umas sessões públicas onde alguns pontos foram divulgados, portanto uma boa parte do que foi implementado já era esperado. Algumas das coisas discutidas anteriormente não foram implementadas. Mas digamos que não houve um grande factor surpresa desde essa sessão pública. Mas se recuarmos ao ponto no tempo antes da sessão, e me tivessem perguntado se eu esperava grandes mudanças na organização física dos dados (estruturas internas do motor), a minha resposta seria: "Nem pensar!". Mas a "nossa" extraordinária equipa de desenvolvimento fê-lo! Eventualmente o esforço para implementar estas mudanças obrigou a deixar de fora outras funcionalidades discutidas publicamente e por isso digo que a sensação não é perfeita.
Mas ao implementar estas mudanças agora, o desenvolvimento está a estabelecer bases para futuras alterações e melhoria. Não consigo deixar de me lembrar da pergunta que ouvia frequentemente por volta de 2001, quando a IBM adquiriu a Informix: "Qual é o futuro do produto?". Eu respondia sempre: "Honestamente penso que ninguém pode afirmar com certeza, mas continua a ser desenvolvido". E 23 anos depois (sim, 23!) estamos a assistir a grandes mudanças estruturais! Portanto esta é a sensação que tenho. Vejamos agora uma lista de novas funcionalidades e alguns comentários sobre as mesmas:

  • Java: O motor deixa de incluir um JRE. E a versão Java necessária é a 11 (Informix HQ e Java UDRs por exemplo)

  • GSKit actualizado para a versão 8.0.60.1

  • A grande mudança: Os limites internos foram mudados. Isto significa que muitos dos limites a que nos habituámos estão agora muito maiores. Tão maiores que dão a sensação que deixou de haver limites. Diria que nenhum de nós terá de se preocupar com limites durante a nossa carreira. Mas já vimos muitas personalidades ilustres fazerem este tipo de afirmação e depois revela-se que foram apenas previsões falhadas. Deixem-me citar alguns limites a partir do manual:
    • Um único fragmento/partição de uma tabela pode ter 140 triliões de páginas
    • Um chink pode atingir 8 exabytes (isto é a unidade acima do Petabyte que está acima do Terabyte. Portanto um exabyte serão 1024x1024 Terabytes. Sim.... um número muito grande)
    • Número de linhas por página depende do tamanho da página mas pode chegar às 29122 em páginas de 256KB (o máximo era 255 independentemente do tamanho da página)
    • Os tamanhos de página podem ser 2, 4 ,8, 16, 32, 64, 128 e 256 KBytess (o máximo era 32)
    • Linhas por fragmento/partição é de 9.2 quintiliões
Haveria muito mais para dizer sobre os limites. Direi por agora que as estruturas de tabelas/disco não têm limites "reais". Os limites que poderão ainda ter algum impacto serão coisas como o número de threads de utilizador, tamanho de linha (32Kbytes) e alguns outros que não foram mudados nesta fase. Voltarei ao tema dos limites no final deste artigo para um alerta importante
  • Smart Blobs externos: Os Smart blobs podem agora ser armazenados em sistemas de ficheiros. Isto pode ter um enorme impacto no backups. Um smart blobspace tradicional terá se existir para guardar a metadata dos smart blobs
  • Indices invisíveis é uma nova funcionalidade que permite ao DBA tornar um índice "invisível". Um índice invisível será mantido como um índice normal (para INSERTs, UPDATEs e DELETEs) mas não será usado em queries. Assim um DBA poderá testar o comportamento do sistema como se o índice não existisse, e reverter fácil e rapidamente caso o resultado não seja bom. Um índice pode também ser criado em "modo invisível" e tornado visível mais tarde.
    Eu esperaria que houvesse uma funcionalidade a nível de sessão que permita o uso de índices marcados como invisíveis para a sessão apenas. Isto auxiliaria um DBA a testar o uso de um índice antes que o torne "público" para todas as sessões. MAS NOTE_SE QUE ISTO É APENAS UMA IDEIA PESSOAL. NÃO HÀ QUALQUER SUGESTÃO QUE TAL FUNCIONALIDADE VENHA A SER IMPLEMENTADA NO FUTURO

  • Obter o plano de execução de uma  query que esteja a correr. Com esta podia facilmente verter umas lágrimas... Necessito disto na maioria das vezes que observo algum problema de performance. Mas penso que uma imagem vale mais que mil palavras, portanto deixem-me só partilhar isto:
Sim... Abri este pedido de melhoria há 11 anos atrás.
  • Melhoria na análise dos registos de auditing. Isto significa que a identificação da sessão pode aparecer nos logs de auditing. Já que falamos de imagens deixem-me partilhar mais uma:

    Sim.... Abri esta funcionalidade há 9 anos atrás. E antes disso tive várias discussões internas para tentar promover isto. O argumento era simples: A informação guardada (sem ID de sessão) era virtualmente inútil, pois usando apenas o ID do processo cliente não permitia correlacionar as operações auditadas. O contra-argumento era sempre o drástico "não podemos mudar os outputs para formatos incompatíveis com versões anteriores". Check!
  • Alterações na replicação: mudanças na opção '--cascade replicate'. Esta opção está agora genericamente disponível para replicates, e também através de templates. Um replicate com esta opção activada, poderá, no seu único participante marcado como sender, replicar dados que cheguem de outros replicates. Isto só estava disponível para replicação por SPL

  • Informix HQ 3.0
    • Bloqueio automático de contas ao fim de 5 tentativas de acesso falhadas
    • Suporte para "LARGE TABLES". Podemos criar LARGE TABLEs e ver se uma tabela está caracterizada como SMALL ou LARGE. Um próximo artigo aprodunará o tema das LARGE TABLEs. Por agora vamos apenas assumir que uma LARGE TABLE é uma tabela com capacidade expandida
    • Eliminar constraints directamente pelo GUI
    • Refrescamento de vários servidores em simultâneo

  • Suporte à API de CDC API nos servidores secundários.Tenho usado o InfoSphere Change Data Capture (InfoSphere CDC) muito ultimamente, um produto que usa a  Informix CDC API. Poder tirar proveito dos servidores secundários para este fim é uma excelente notícia para os clientes Informix que usam o CDC para enviar dados para outros sistemas.

  • Novo formato da versão. Não é exactamente uma nova funcionalidade, mas sim algo a que teremos de nos habituar. Tradicionalmente o Informix usava o formato M.R.xyz.Extra onde:
    • M.R era a major release (11.50, 11.70, 12.10, 14.10)
    • x era o indicativo de plataforma (F para 64 bits, U para 32 bits e T para Windows)
    • y era o tipo da release (B para Beta, C para release inicial, D para releases posteriores com mudanças significativas)
    • z era o número do fixpack
    • Extra era a marca para fixes específicos como "X1"
Agora utilizará: M.R.m.f-Extra onde:
  • M é a major version
  • R é a release version
  • m é o indicador de "modificação" (um modpack incluirá mudanças)
  • f é o fixpack (um fixpack deverá incluir apenas correcções)
  • Extra é um identificador para special builds
  • O Client SDK e o JDBC seguirão as versões do motor (evita muitas confusões)

Aviso!

Mencionei acima que voltaria aos limites para um aviso importante. E parece-me verdadeiramente importante. Os novos limites foram implementados entre outras mudanças pela mudança completa do que conhecemos como "RowID". Um row ID na estrutura tradicional do Informix é uma estrutura com quatro bytes dividido em dois componentes: 3 bytes para o endereço de página (daí o limite de cerca de 16M de páginas por fragmento/partição) e 1 byte para um ponteiro na slot table (daí o limite de 255 linhas por página). Os novos RowIDs "expandidos" poderão usar 8 bytes. As ferramentas tradicionais como o 4GL e o ISQL têm algumas funcionalidades que dependem do RowID. Portanto as versões existentes não serão capazes de usar os RowIDs expandidos. Se verificar a página de compatibilidade (https://www.ibm.com/support/pages/node/502131) verifica que a versão 7.51.FC3 das ferramentas está certificada para Informix V15.0.0.0, MAS só para "small table mode". Não quero entrar em demasiados detalhes neste artigo genérico, mas quando fazemos upgrade a uma instância já existente para a versão 15, estaremos em "modo de compatibilidade" e a capacidade estendida não estará disponível. Se mudarmos para "versão 1 da infira-estrutura", ou se criarmos uma instância nova na V15 estaremos então em "modo de versão nova" e a capacidade estendida estará disponível. As ferramentas existentes não funcionarão a 100% neste caso e portanto é muito importante ter cuidado com os passos que damos. Uma nova versão das ferramentas está a ser desenvolvida, mas à data da escrita deste artigo não existe uma data de disponibilização definida. Foi-me assegurado que isto é uma prioridade e que a equipa de desenvolvimento está a trabalhar nisto