Details
-
Bug
-
Status: Closed (View Workflow)
-
Critical
-
Resolution: Fixed
-
10.2(EOL), 10.3(EOL)
-
None
Description
Note: I'm fine with closing it as not a bug as long as all aspects of the new behavior are considered and confirmed to be expected. It was discussed a little on slack as a probably innocent consequence of MDEV-19292 fix, but I am not sure there was a final conclusion.
Here is an example of the table:
CREATE TABLE t1 ( |
`c01` int(10) unsigned zerofill NOT NULL DEFAULT 0000000000, |
`c03` varchar(1024) NOT NULL DEFAULT '', |
`c04` timestamp(6) NOT NULL DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6), |
`c06` double(16,8) DEFAULT NULL COMMENT 'Percentage', |
`c07` date DEFAULT NULL, |
`c12` varchar(64) GENERATED ALWAYS AS (concat(`c09`,' ',`c10`)) VIRTUAL, |
`c05` longblob NOT NULL DEFAULT '', |
`c11` varchar(64) GENERATED ALWAYS AS (concat(`c09`,' ',`c10`)) PERSISTENT, |
`c08` text DEFAULT '', |
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, |
`c02` char(3) NOT NULL DEFAULT '', |
`c10` bigint(20) DEFAULT NULL COMMENT 'Y', |
`c09` bigint(20) DEFAULT NULL COMMENT 'X', |
PRIMARY KEY (`id`), |
UNIQUE KEY `idx1` (`c01`,`c02`), |
KEY `idx2` (`c05`(128)) |
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=COMPACT; |
Server options: --innodb-compression-algorithm=none --innodb-page-size=4K, otherwise defaults.
The table gets created on a pre-MDEV-19292 server with without any warnings (on a post-MDEV-19292 server it gets rejected).
When a post-MDEV-19292 server starts on the old datadir, CHECK TABLE t1 produces the warning:
10.2 fc77a66c |
+---------+-------+----------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| Table | Op | Msg_type | Msg_text | |
+---------+-------+----------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| test.t1 | check | Warning | Row size too large (> 1982). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMIC or ROW_FORMAT=COMPRESSED may help. In current row format, BLOB prefix of 768 bytes is stored inline. | |
| test.t1 | check | status | OK | |
+---------+-------+----------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
First, it's unclear whether MDEV-19292 patch was supposed to affect REDUNDANT / COMPACT tables at all.
Secondly, the warning, if it's true, could have been helpful if it was reliable; but it is only issued on the first opening of the table:
MariaDB [test]> check table t1; |
+---------+-------+----------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| Table | Op | Msg_type | Msg_text | |
+---------+-------+----------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| test.t1 | check | Warning | Row size too large (> 1982). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMIC or ROW_FORMAT=COMPRESSED may help. In current row format, BLOB prefix of 768 bytes is stored inline. | |
| test.t1 | check | status | OK | |
+---------+-------+----------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
2 rows in set (0.005 sec) |
 |
MariaDB [test]> check table t1; |
+---------+-------+----------+----------+ |
| Table | Op | Msg_type | Msg_text | |
+---------+-------+----------+----------+ |
| test.t1 | check | status | OK | |
+---------+-------+----------+----------+ |
1 row in set (0.005 sec) |
Which makes it fairly useless.
And finally, the error log gets a different strange-looking warning instead:
2019-07-28 0:57:51 140189814937344 [Warning] InnoDB: Cannot add field `c08` in table `test`.`t1` because after adding it, the row size is 2484 which is greater than maximum allowed size (1982) for a record on index leaf page. |
Attachments
Issue Links
- blocks
-
MDEV-20400 Implement a way to query an InnoDB table's max row size
- Open
- includes
-
MDEV-20949 Stop performing unnecessary maximum row size check for DML
- Closed
- relates to
-
MDEV-19292 "Row size too large" error when creating table with lots columns when row format is DYNAMIC or COMPRESSED
- Closed
-
MDEV-20000 Consider adopting innodb.innodb_pagesize_max_recordsize from MySQL
- Open
-
MDEV-20400 Implement a way to query an InnoDB table's max row size
- Open
-
MDEV-20832 Don't print "row size too large" warnings in error log if innodb_strict_mode=OFF and log_warnings<=2
- Closed
-
MDEV-21261 When performing instant add column, InnoDB ignores innodb_strict_mode for "row size too large" check
- Confirmed
-
MDEV-21624 Unique index length is able to exceed max key length
- Closed
-
MDEV-21748 ASAN use-after-poison in PageBulk::insertPage on table rebuild
- Closed
-
MDEV-23521 Implement an InnoDB row format that can use overflow pages for smaller columns
- Open
-
MDEV-16969 Fix error message as promised in upstream Bug #69336
- Open
-
MDEV-20400 Implement a way to query an InnoDB table's max row size
- Open
-
MDEV-20786 MariaDB server writes warnings into errorlog although 'log_warnings=0'
- Closed
-
MDEV-21429 TRUNCATE and OPTIMIZE are being refused due to "row size too large"
- Closed
-
MDEV-22585 Incorrect note being written to the error log when CREATE and ALTER fail due to Row Size Too Large and in all cases for TRUNCATE and OPTIMIZE TABLE.
- Open