home clear 64x64
en blue 200x116 de orange 200x116 info letter User
suche 36x36
Latest versionsfixlist
14.10.xC11 FixList
12.10.xC16.X5 FixList
11.70.xC9.XB FixList
11.50.xC9.X2 FixList
11.10.xC3.W5 FixList
Have problems? - contact us.
Register for free anmeldung-x26
Contact form kontakt-x26

Informix - Problem description

Problem IT44604 Status: Closed

POST COMMIT TRIGGER (ER2SPL): MULTIPLE PROBLEMS WITH ALTER SUPPORT,
REMASTER AND (LIFTED) PRIMARY KEY REQUIREMENT

product:
INFORMIX SERVER / 5725A3900 / E10 - 
Problem description:
A Post Commit Trigger (PCT, or ER2SPL) replicate, defined with
--splname or --jsonsplname, does not require a primary key or
other replication key on the source table - as there's no real
target table where rows had to be identified using such key.


And here's the first problem (#1): while all is well when
defining such replicate on a table having no primary key, a
slightly confusing message like the following would come to the
respective server's message log should the table there have a
primary key:

    CDR: Master Replicate Error
        Primary Key Check Failed
    Master:     primary key ()
    Participant:primary key ()

In plain English: the master schema stored for this table
(replicate) omitted the primary key definition as it's not
needed, so a subsequent, undue Primary Key Check detects a
discrepancy: the participant table has a PK while the master
(schema) doesn't.

This message will NOT keep the replicate definition from
succeeding nor the replicate from working, so basically a
cosmetic problem, though clearly unsettling.


The second problem (#2) appears when the table, esp. the (dummy)
target table, gets altered (columns added, dropped, modified):
from this point on, everything would still 'replicate' nicely
judging by ER metrics (send/receive queue, data sync), yet the
ER2SPL UDR would no longer be invoked; so the data would
continue to replicate to the target(s), transactions would seem
to be applied there successfully, yet the data would not arrive
in the UDR nor anywhere else and would just be discarded.
The reason is that, after the alter, the target in-memory
representation of the replicate would have forgotten part of its
ER2SPL nature.  Yet, since the replicate definition itself, in
syscdr database, is unaffected, a restart (ER only or whole
server) of the target system would cure this problem.


To get the alter's changes reflected in the replicate and e.g. a
new column included in replication, you'd have to either drop
and recreate the replicate, or to remaster it  (both cases
requiring the alter to be conducted also on (dummy) target
tables.)

There are two more problems regarding remaster (no problems if
simply re-defining the replicate, but this creates a potential
replication gap):

First problem here (#3) is: the remaster does insist on primary
key, i.e. it disregards the lift of this restriction with ER2SPL
replicates and fails if no primary key exists, getting:

    Table '@.' does not contain
primary key.

(Problem #3a: this table spec syntax is incorrect, should be
'@:.'.)


Next problem (#4), when trying with primary key: the remaster
will work, without any message, yet again nothing will arrive in
the target UDR, since the replicate will have forgotten
completely about splname/jsonsplname.  In fact the replicate
will no longer be the same, detectable by its replid;  instead
it will be a copy of the old replicate, the old one will
continue to exist as a shadow replicate of the new one, under a
different name - and with the SPL info still present, only this
info apparently didn't get copied to the new replicate.


Lastly (#5), "cdr list replicate [repl_name]" isn't helpful in
diagnosing this as it doesn't give the [json]splname info, i.e.
the UDR name.
Problem Summary:
****************************************************************
* USERS AFFECTED:                                              *
* Users of Informix Server prior to 14.10.xC11.                *
****************************************************************
* PROBLEM DESCRIPTION:                                         *
* See Error Description                                        *
****************************************************************
* RECOMMENDATION:                                              *
* Upgrade to Informix Server 14.10.xC11.                       *
****************************************************************
Local Fix:
Workarounds (not ideal):
 - problem #1: ignore the PK messages
 - problem #2: restart ER if no more replication after ALTER
 - problems #3 + #4: delete and redefine replicate instead of
remastering
Solution
Workaround
****************************************************************
* USERS AFFECTED:                                              *
* Users of Informix Server prior to 14.10.xC11.                *
****************************************************************
* PROBLEM DESCRIPTION:                                         *
* See Error Description                                        *
****************************************************************
* RECOMMENDATION:                                              *
* Upgrade to Informix Server 14.10.xC11.                       *
****************************************************************
Comment
Fixed in Informix Server 14.10.xC11.
Timestamps
Date  - problem reported    :
Date  - problem closed      :
Date  - last modified       :
26.09.2023
03.06.2024
03.06.2024
Problem solved at the following versions (IBM BugInfos)
Problem solved according to the fixlist(s) of the following version(s)