|
When creating a table with a number of varchars, MariaDB 10.3.17 throws the error "ERROR 1118 (42000): Row size too large (> 8126). Changing some columns to TEXT or BLOB may help. In current row format, BLOB prefix of 0 bytes is stored inline."
I tested this against MariaDB 3.10.16 and it works OK and is able to create the table. I also tested against MySQL 5.7.27 and verified that it works OK and is able to create the table. All testing was done using Docker images of the respective versions.
I feel this relates to MDEV-19292.
Here is the original query that was failing:
CREATE DATABASE IF NOT EXISTS `test`;
|
USE `test`;
|
DROP TABLE IF EXISTS `row_too_big`;
|
CREATE TABLE IF NOT EXISTS `row_too_big`
|
(
|
`column0` bool NOT NULL,
|
`column1` bool NOT NULL,
|
`column2` bool NOT NULL,
|
`column3` bool NOT NULL,
|
`column4` bool NOT NULL,
|
`column5` bool NOT NULL,
|
`column6` bool NOT NULL,
|
`column7` bool NOT NULL,
|
`column8` bool NOT NULL,
|
`column9` bool NOT NULL,
|
`column10` bool NOT NULL,
|
`column11` bool NOT NULL,
|
`column12` bool NOT NULL,
|
`column13` bool NOT NULL,
|
`column14` bool NOT NULL,
|
`column15` bool NOT NULL,
|
`column16` bool NOT NULL,
|
`column17` bool NOT NULL,
|
`column18` date NULL,
|
`column19` date NULL,
|
`column20` date NULL,
|
`column21` date NULL,
|
`column22` date NULL,
|
`column23` date NULL,
|
`column24` date NULL,
|
`column25` date NULL,
|
`column26` date NULL,
|
`column27` date NULL,
|
`column28` date NULL,
|
`column29` date NULL,
|
`column30` date NULL,
|
`column31` datetime(6) NOT NULL,
|
`column32` datetime(6) NOT NULL,
|
`column33` datetime(6) NULL,
|
`column34` datetime(6) NULL,
|
`column35` datetime(6) NULL,
|
`column36` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,
|
`column37` integer NOT NULL,
|
`column38` integer NOT NULL,
|
`column39` integer NOT NULL,
|
`column40` integer NULL UNIQUE,
|
`column41` integer NULL,
|
`column42` integer NULL,
|
`column43` integer NULL,
|
`column44` integer NULL,
|
`column45` integer NULL,
|
`column46` longtext NOT NULL,
|
`column47` longtext NULL,
|
`column48` longtext NULL,
|
`column49` longtext NULL,
|
`column50` longtext NULL,
|
`column51` longtext NULL,
|
`column52` longtext NULL,
|
`column53` longtext NULL,
|
`column54` longtext NULL,
|
`column55` longtext NULL,
|
`column56` longtext NULL,
|
`column57` numeric(12, 2) NULL,
|
`column58` numeric(12, 2) NULL,
|
`column59` smallint UNSIGNED NULL,
|
`column60` varchar(1) NOT NULL,
|
`column61` varchar(2) NOT NULL,
|
`column62` varchar(2) NOT NULL,
|
`column63` varchar(2) NULL,
|
`column64` varchar(2) NULL,
|
`column65` varchar(2) NULL,
|
`column66` varchar(4) NOT NULL,
|
`column67` varchar(7) NOT NULL,
|
`column68` varchar(7) NOT NULL,
|
`column69` varchar(8) NOT NULL,
|
`column70` varchar(8) NULL,
|
`column71` varchar(8) NULL,
|
`column72` varchar(16) NOT NULL,
|
`column73` varchar(16) NOT NULL,
|
`column74` varchar(16) NULL,
|
`column75` varchar(16) NULL,
|
`column76` varchar(16) NULL,
|
`column77` varchar(16) NULL,
|
`column78` varchar(16) NULL,
|
`column79` varchar(16) NULL,
|
`column80` varchar(16) NULL,
|
`column81` varchar(16) NULL,
|
`column82` varchar(16) NULL,
|
`column83` varchar(16) NULL,
|
`column84` varchar(16) NULL,
|
`column85` varchar(20) NULL,
|
`column86` varchar(20) NULL,
|
`column87` varchar(30) NOT NULL,
|
`column88` varchar(32) NOT NULL,
|
`column89` varchar(32) NOT NULL,
|
`column90` varchar(32) NULL,
|
`column91` varchar(32) NULL,
|
`column92` varchar(32) NULL,
|
`column93` varchar(32) NULL,
|
`column94` varchar(32) NULL,
|
`column95` varchar(32) NULL,
|
`column96` varchar(32) NULL,
|
`column97` varchar(32) NULL,
|
`column98` varchar(32) NULL,
|
`column99` varchar(32) NULL,
|
`column100` varchar(32) NULL,
|
`column101` varchar(32) NULL,
|
`column102` varchar(32) NULL,
|
`column103` varchar(32) NULL,
|
`column104` varchar(32) NULL,
|
`column105` varchar(32) NULL,
|
`column106` varchar(32) NULL,
|
`column107` varchar(32) NULL,
|
`column108` varchar(32) NULL,
|
`column109` varchar(32) NULL,
|
`column110` varchar(32) NULL,
|
`column111` varchar(32) NULL,
|
`column112` varchar(64) NOT NULL,
|
`column113` varchar(64) NOT NULL,
|
`column114` varchar(64) NOT NULL,
|
`column115` varchar(64) NULL,
|
`column116` varchar(64) NULL,
|
`column117` varchar(64) NULL,
|
`column118` varchar(64) NULL,
|
`column119` varchar(64) NULL,
|
`column120` varchar(64) NULL,
|
`column121` varchar(64) NULL,
|
`column122` varchar(64) NULL,
|
`column123` varchar(64) NULL,
|
`column124` varchar(64) NULL,
|
`column125` varchar(64) NULL,
|
`column126` varchar(64) NULL,
|
`column127` varchar(64) NULL,
|
`column128` varchar(64) NULL,
|
`column129` varchar(64) NULL,
|
`column130` varchar(64) NULL,
|
`column131` varchar(64) NULL,
|
`column132` varchar(64) NULL,
|
`column133` varchar(64) NULL,
|
`column134` varchar(64) NULL,
|
`column135` varchar(64) NULL,
|
`column136` varchar(64) NULL,
|
`column137` varchar(64) NULL,
|
`column138` varchar(64) NULL,
|
`column139` varchar(64) NULL,
|
`column140` varchar(64) NULL,
|
`column141` varchar(64) NULL,
|
`column142` varchar(64) NULL,
|
`column143` varchar(64) NULL,
|
`column144` varchar(64) NULL,
|
`column145` varchar(64) NULL,
|
`column146` varchar(64) NULL,
|
`column147` varchar(64) NULL,
|
`column148` varchar(64) NULL,
|
`column149` varchar(64) NULL,
|
`column150` varchar(64) NULL,
|
`column151` varchar(64) NULL,
|
`column152` varchar(64) NULL,
|
`column153` varchar(64) NULL,
|
`column154` varchar(64) NULL,
|
`column155` varchar(64) NULL,
|
`column156` varchar(64) NULL,
|
`column157` varchar(64) NULL,
|
`column158` varchar(64) NULL,
|
`column159` varchar(64) NULL,
|
`column160` varchar(64) NULL,
|
`column161` varchar(64) NULL,
|
`column162` varchar(128) NOT NULL,
|
`column163` varchar(128) NULL,
|
`column164` varchar(128) NULL,
|
`column165` varchar(128) NULL,
|
`column166` varchar(128) NULL,
|
`column167` varchar(128) NULL,
|
`column168` varchar(128) NULL,
|
`column169` varchar(128) NULL,
|
`column170` varchar(128) NULL,
|
`column171` varchar(128) NULL,
|
`column172` varchar(128) NULL,
|
`column173` varchar(128) NULL,
|
`column174` varchar(128) NULL,
|
`column175` varchar(128) NULL,
|
`column176` varchar(128) NULL,
|
`column177` varchar(128) NULL,
|
`column178` varchar(128) NULL,
|
`column179` varchar(128) NULL,
|
`column180` varchar(254) NULL,
|
`column181` varchar(254) NULL,
|
`column182` varchar(254) NULL,
|
`column183` varchar(254) NULL,
|
`column184` varchar(255) NULL,
|
`column185` varchar(256) NULL,
|
`column186` varchar(256) NULL,
|
`column187` varchar(256) NULL,
|
`column188` varchar(256) NULL
|
);
|
Here is a simplified version where if you comment the first column, the query will work OK, but leaving as is will result in the error.
CREATE DATABASE IF NOT EXISTS `test`;
|
USE `test`;
|
DROP TABLE IF EXISTS `row_too_big`;
|
CREATE TABLE IF NOT EXISTS `row_too_big`
|
(
|
`column0` numeric(12, 2) NULL,
|
`column1` smallint UNSIGNED NULL,
|
`column2` varchar(1) NOT NULL,
|
`column3` varchar(2) NOT NULL,
|
`column4` varchar(2) NOT NULL,
|
`column5` varchar(2) NULL,
|
`column6` varchar(2) NULL,
|
`column7` varchar(2) NULL,
|
`column8` varchar(4) NOT NULL,
|
`column9` varchar(7) NOT NULL,
|
`column10` varchar(7) NOT NULL,
|
`column11` varchar(8) NOT NULL,
|
`column12` varchar(8) NULL,
|
`column13` varchar(8) NULL,
|
`column14` varchar(16) NOT NULL,
|
`column15` varchar(16) NOT NULL,
|
`column16` varchar(16) NULL,
|
`column17` varchar(16) NULL,
|
`column18` varchar(16) NULL,
|
`column19` varchar(16) NULL,
|
`column20` varchar(16) NULL,
|
`column21` varchar(16) NULL,
|
`column22` varchar(16) NULL,
|
`column23` varchar(16) NULL,
|
`column24` varchar(16) NULL,
|
`column25` varchar(16) NULL,
|
`column26` varchar(16) NULL,
|
`column27` varchar(20) NULL,
|
`column28` varchar(20) NULL,
|
`column29` varchar(30) NOT NULL,
|
`column30` varchar(32) NOT NULL,
|
`column31` varchar(32) NOT NULL,
|
`column32` varchar(32) NULL,
|
`column33` varchar(32) NULL,
|
`column34` varchar(32) NULL,
|
`column35` varchar(32) NULL,
|
`column36` varchar(32) NULL,
|
`column37` varchar(32) NULL,
|
`column38` varchar(32) NULL,
|
`column39` varchar(32) NULL,
|
`column40` varchar(32) NULL,
|
`column41` varchar(32) NULL,
|
`column42` varchar(32) NULL,
|
`column43` varchar(32) NULL,
|
`column44` varchar(32) NULL,
|
`column45` varchar(32) NULL,
|
`column46` varchar(32) NULL,
|
`column47` varchar(32) NULL,
|
`column48` varchar(32) NULL,
|
`column49` varchar(32) NULL,
|
`column50` varchar(32) NULL,
|
`column51` varchar(32) NULL,
|
`column52` varchar(32) NULL,
|
`column53` varchar(32) NULL,
|
`column54` varchar(64) NOT NULL,
|
`column55` varchar(64) NOT NULL,
|
`column56` varchar(64) NOT NULL,
|
`column57` varchar(64) NULL,
|
`column58` varchar(64) NULL,
|
`column59` varchar(64) NULL,
|
`column60` varchar(64) NULL,
|
`column61` varchar(64) NULL,
|
`column62` varchar(64) NULL,
|
`column63` varchar(64) NULL,
|
`column64` varchar(64) NULL,
|
`column65` varchar(64) NULL,
|
`column66` varchar(64) NULL,
|
`column67` varchar(64) NULL,
|
`column68` varchar(64) NULL,
|
`column69` varchar(64) NULL,
|
`column70` varchar(64) NULL,
|
`column71` varchar(64) NULL,
|
`column72` varchar(64) NULL,
|
`column73` varchar(64) NULL,
|
`column74` varchar(64) NULL,
|
`column75` varchar(64) NULL,
|
`column76` varchar(64) NULL,
|
`column77` varchar(64) NULL,
|
`column78` varchar(64) NULL,
|
`column79` varchar(64) NULL,
|
`column80` varchar(64) NULL,
|
`column81` varchar(64) NULL,
|
`column82` varchar(64) NULL,
|
`column83` varchar(64) NULL,
|
`column84` varchar(64) NULL,
|
`column85` varchar(64) NULL,
|
`column86` varchar(64) NULL,
|
`column87` varchar(64) NULL,
|
`column88` varchar(64) NULL,
|
`column89` varchar(64) NULL,
|
`column90` varchar(64) NULL,
|
`column91` varchar(64) NULL,
|
`column92` varchar(64) NULL,
|
`column93` varchar(64) NULL,
|
`column94` varchar(64) NULL,
|
`column95` varchar(64) NULL,
|
`column96` varchar(64) NULL,
|
`column97` varchar(64) NULL,
|
`column98` varchar(64) NULL,
|
`column99` varchar(64) NULL,
|
`column100` varchar(64) NULL,
|
`column101` varchar(64) NULL,
|
`column102` varchar(64) NULL,
|
`column103` varchar(64) NULL,
|
`column104` varchar(128) NOT NULL,
|
`column105` varchar(128) NULL,
|
`column106` varchar(128) NULL,
|
`column107` varchar(128) NULL,
|
`column108` varchar(128) NULL,
|
`column109` varchar(128) NULL,
|
`column110` varchar(128) NULL,
|
`column111` varchar(128) NULL,
|
`column112` varchar(128) NULL,
|
`column113` varchar(128) NULL,
|
`column114` varchar(128) NULL,
|
`column115` varchar(128) NULL,
|
`column116` varchar(128) NULL,
|
`column117` varchar(128) NULL,
|
`column118` varchar(128) NULL,
|
`column119` varchar(128) NULL,
|
`column120` varchar(128) NULL,
|
`column121` varchar(128) NULL,
|
`column122` varchar(254) NULL,
|
`column123` varchar(254) NULL,
|
`column124` varchar(254) NULL,
|
`column125` varchar(254) NULL,
|
`column126` varchar(255) NULL,
|
`column127` varchar(256) NULL,
|
`column128` varchar(256) NULL,
|
`column129` varchar(256) NULL,
|
`column130` varchar(256) NULL
|
);
|
|