Bug #25945 Table Innodb with 11 column TEXT got error 139 from storage engine
Submitted: 30 Jan 2007 13:50 Modified: 1 Aug 2008 14:40
Reporter: Didier G. Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Server: InnoDB storage engine Severity:S3 (Non-critical)
Version:5.0.32-3, 4.1 BK, 5.1 BK OS:Linux (Debian 2.6.18-3)
Assigned to: Marko Mäkelä CPU Architecture:Any
Tags: innodb, LENGTH, row, text, v6, varchar

[30 Jan 2007 13:50] Didier G.
Description:
I use a table with 10 TEXT columns with 6000 caracters each.

CREATE TABLE `test` (
`c1` TEXT NOT NULL , `c2` TEXT NOT NULL ,
`c3` TEXT NOT NULL , `c4` TEXT NOT NULL ,
`c5` TEXT NOT NULL , `c6` TEXT NOT NULL ,
`c7` TEXT NOT NULL , `c8` TEXT NOT NULL ,
`c9` TEXT NOT NULL , `c10` TEXT NOT NULL
) ENGINE = innodb;

INSERT INTO test SELECT
REPEAT('A', 6000), REPEAT('A', 6000),
REPEAT('A', 6000), REPEAT('A', 6000),
REPEAT('A', 6000), REPEAT('A', 6000),
REPEAT('A', 6000), REPEAT('A', 6000),
REPEAT('A', 6000), REPEAT('A', 6000)

I would add a column and i had this error message
ERROR 1030 (HY000): Got error 139 from storage engine

This error comes for 11 columns with a column length > 730

How to repeat:
CREATE TABLE `test` (
`c1` TEXT NOT NULL ,
`c2` TEXT NOT NULL ,
`c3` TEXT NOT NULL ,
`c4` TEXT NOT NULL ,
`c5` TEXT NOT NULL ,
`c6` TEXT NOT NULL ,
`c7` TEXT NOT NULL ,
`c8` TEXT NOT NULL ,
`c9` TEXT NOT NULL ,
`c10` TEXT NOT NULL ,
`c11` TEXT NOT NULL
) ENGINE = innodb;

INSERT INTO test
SELECT REPEAT('A', 730),
REPEAT('A', 730),
REPEAT('A', 730),
REPEAT('A', 730),
REPEAT('A', 730),
REPEAT('A', 730),
REPEAT('A', 730),
REPEAT('A', 730),
REPEAT('A', 730),
REPEAT('A', 730),
REPEAT('A', 730)
[31 Jan 2007 10:49] Sveta Smirnova
test case

Attachment: bug25945.test (application/octet-stream, text), 706 bytes.

[31 Jan 2007 10:49] Sveta Smirnova
Thank you for the report.

Verified as described.
[2 Mar 2007 14:01] Alex H
I have exactly the same bug on my system has describe here.

Will this be bug be considered?

Thank you 

Alexandre
[8 Aug 2007 9:23] Sveta Smirnova
Bug #30295 was marked as duplicate of this one.
[3 Feb 2008 20:37] Marko Mäkelä
In a development version of InnoDB, no local prefix is stored for externally stored columns.  Because the maximum size of a record on a B-tree index page is around 8000 bytes and the size of the BLOB pointer is 20 bytes, a record could comprise about 400 long VARCHAR, TEXT, or BLOB columns.

However, if many of the columns are covered by a column prefix index, there will be another limitation: a 768-byte prefix of each column must be written to the transaction undo log. The maximum size of an undo log record is about 16000 bytes.

The code base where this bug is fixed also fixes Bug #32915 and Bug #27646. I hope that it can soon be merged to the MySQL 6.0 tree.
[19 Feb 2008 16:13] Heikki Tuuri
6.0 at the earliest version thus could come in.
[19 Feb 2008 16:30] Heikki Tuuri
We could give a warning in 5.1 at the CREATE TABLE?
[1 Aug 2008 14:40] Marko Mäkelä
Thank you for your bug report. This issue has already been addressed in the latest
released version of the InnoDB Plugin, which you can download at http://www.innodb.com.