• Eugene Kosov's avatar
    MDEV-19292 "Row size too large" error when creating table with lots columns... · 5ebef422
    Eugene Kosov authored
    MDEV-19292 "Row size too large" error when creating table with lots columns when row format is DYNAMIC or COMPRESSED
    
    Basic idea of the patch: disallow creating tables which allow to create
    rows which are too big to insert. In other words, if user created a table user
    should never see an errors like 'can not insert row as it is too big for current
    page size'.
    
    SET innodb_strict_mode=OFF; will allow to create very long tables and only a
    warning will be issued.
    
    dict_table_t::get_overflow_field_local_len(): this function lets know a maximum
    local field len for overflow fields for every file and row format.
    
    innobase_check_column_length(): improve name to too_big_key_part_length()
    and reuse in a different part of code.
    
    create_table_info_t::prepare_create_table(): add check for maximum allowed
    key part length to keep ALGORITHM=COPY behavior similar to ALGORITHM=INPLACE
    behavior. Affected test is innodb.strict_mode
    
    Rename dict_index_too_big_for_tree() to
    dict_index_t::rec_potentially_too_big(): copy overflow-related size computation
    from dtuple_convert_big_rec(). A lot of tests was changed because of that.
    I wonder whether users will complain about it?
    
    Test innodb.max_record_size tests dict_index_t::rec_potentially_too_big()
    for different row formats and page sizes.
    5ebef422
innodb-64k-crash.result 10.8 KB