• marko's avatar
    branches/zip: When logging updates or deletes in the undo log, store long · a65020d2
    marko authored
    enough prefixes of externally stored columns, so that purge will not have
    to dereference any BLOB pointers, which may be invalid.  This will not be
    necessary for logging inserts, because inserts are no-ops in purge, and
    the record will remain locked during transaction rollback.
    
    TODO: in dict_build_table_def_step() or dict_build_index_def_step(),
    prevent the creation of tables with too many columns for which a
    prefix index is defined.  This is because there is a size limit of undo
    log records, and for each prefix-indexed column, the log must store
    REC_MAX_INDEX_COL_LEN + BTR_EXTERN_FIELD_REF_SIZE bytes.
    
    trx_undo_page_report_insert(): Assert that the index is clustered.
    
    trx_undo_page_fetch_ext(): New function, for fetching the BLOB prefix
    in trx_undo_page_report_modify().
    
    trx_undo_page_report_modify(): Write long enough prefixes of the externally
    stored columns to the undo log.
    
    trx_undo_rec_get_partial_row(): Remove the parameter "ext".  Assert that
    the undo log contains long enough prefixes of the externally stored columns.
    
    purge_node_t: Remove the field "ext".
    a65020d2
row0purge.h 2.41 KB