You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Background :
In the previous implementation, a row R1 inserted after first instant
ADD will have INSTANT bit set. After upgrade, if this row R1 is updated
then :
[1] Inplace update will keep the row in old format (instant bit set).
[2] Not inpalce update will move the row to new format (version bit set)
Issue :
If table has row vesion (i.e. new INSTANT ADD Column) then UPDATE won't
be INPLACE (as newly added columns is to be materialized). So the row R1
is transformed to "versioned record".
But when the rollback is issued, (which is implemented as UPDATE), and if
this is not changing row size (i.e. INPLACE update), then
- Version bit is set => so the new record (rollbacked) record will also
have version bit set. (update rule).
- Because the INSTANT bit was set in UNDO update vector, it was also
being set, which is wrong. So assertsion was hit.
Fix :
When VERSION bit is being set for the record, make sure INSTANT bit is
reset because record is going to be "versioned record" even after ROLLBACK.
Change-Id: Ia68127de75d9bc883576e7baf020d41f4376943d
0 commit comments