-
Satya Bodapati authored
Problem: -------- Table creation succeeds with ROW_FORMAT=COMPACT and REDUNDANT but fails with DYNAMIC and COMPRESSED. This happens because of wrong undo log record size calculation Fix: ---- The undo log record size calculation at DDL time(dict_index_too_big_for_undo()) is conservative sometimes and aggressive at other times. Since there is a DML time check and the behaviour of dict_index_too_big_for_undo() causes DDL failures(inturn replication breakage), we will remove this undo log record size calculation logic at DDLs because there is undo log record size check for DMLs which is more accurate. We also make DYNAMIC and COMPRESSED to adhere strict_mode=OFF and allow row length violations at DDL time. After this fix, it is possible to create a table with 'non-updatable' columns. i.e. you cannot UPDATE a single column. Reviewed-by:
Marko Makela <marko.makela@oracle.com> RB: 10220 (cherry picked from commit 6f57fad788920634ddf07f80b6ebfe1575f888cc)
Satya Bodapati authoredProblem: -------- Table creation succeeds with ROW_FORMAT=COMPACT and REDUNDANT but fails with DYNAMIC and COMPRESSED. This happens because of wrong undo log record size calculation Fix: ---- The undo log record size calculation at DDL time(dict_index_too_big_for_undo()) is conservative sometimes and aggressive at other times. Since there is a DML time check and the behaviour of dict_index_too_big_for_undo() causes DDL failures(inturn replication breakage), we will remove this undo log record size calculation logic at DDLs because there is undo log record size check for DMLs which is more accurate. We also make DYNAMIC and COMPRESSED to adhere strict_mode=OFF and allow row length violations at DDL time. After this fix, it is possible to create a table with 'non-updatable' columns. i.e. you cannot UPDATE a single column. Reviewed-by:
Marko Makela <marko.makela@oracle.com> RB: 10220 (cherry picked from commit 6f57fad788920634ddf07f80b6ebfe1575f888cc)
Loading