mirror of
https://github.com/MariaDB/server.git
synced 2025-07-20 10:24:14 +03:00
Move row size check to early CREATE/ALTER TABLE phase. Stop checking on table open. dict_index_add_to_cache(): remove parameter 'strict', stop checking row size dict_index_t::record_size_info_t: this is a result of row size check operation create_table_info_t::row_size_is_acceptable(): performs row size check. Issues error or warning. Writes first overflow field to InnoDB log. create_table_info_t::create_table(): add row size check dict_index_t::record_size_info(): this is a refactored version of dict_index_t::rec_potentially_too_big(). New version doesn't change global state of a program but return all interesting info. And it's callers who decide how to handle row size overflow. dict_index_t::rec_potentially_too_big(): removed
15 lines
884 B
Plaintext
15 lines
884 B
Plaintext
call mtr.add_suppression('InnoDB: Cannot add field.*because after adding it, the row size is');
|
|
SET GLOBAL innodb_file_per_table=on;
|
|
SET GLOBAL innodb_strict_mode=on;
|
|
set old_alter_table=0;
|
|
CREATE TABLE bug53591(a text charset utf8 not null)
|
|
ENGINE=InnoDB KEY_BLOCK_SIZE=1;
|
|
ALTER TABLE bug53591 ADD PRIMARY KEY(a(220));
|
|
ERROR 42000: Row size too large. The maximum row size for the used table type, not counting BLOBs, is {checked_valid}. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs
|
|
SHOW WARNINGS;
|
|
Level Code Message
|
|
Error 1118 Row size too large. The maximum row size for the used table type, not counting BLOBs, is {checked_valid}. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs
|
|
DROP TABLE bug53591;
|
|
SET GLOBAL innodb_file_per_table=1;
|
|
SET GLOBAL innodb_strict_mode=DEFAULT;
|