Bug #5777 InnoDB do not support INSERT DELAYED
Submitted: 28 Sep 2004 0:16 Modified: 28 Sep 2004 10:13
Reporter: Test Test Email Updates:
Status: Not a Bug Impact on me:
None 
Category:MySQL Server: InnoDB storage engine Severity:S2 (Serious)
Version:4.0.18 OS:Linux (Linux)
Assigned to: CPU Architecture:Any

[28 Sep 2004 0:16] Test Test
Description:
InnoDB tables do NOT support INSERT DELAYED statements. I created the following table in version 4.0.18 :

CREATE TABLE `mytable` (
  `id` bigint(20) NOT NULL auto_increment,
  PRIMARY KEY  (`id`)
) TYPE=InnoDB; 

And issued the following command:

INSERT DELAYED INTO mytable (id) VALUES (NULL);

Which returns:

Error 1031: Table handler for 'mytable' doesn't have this option.

How to repeat:
CREATE TABLE `mytable` (
  `id` bigint(20) NOT NULL auto_increment,
  PRIMARY KEY  (`id`)
) TYPE=InnoDB; 

And issued the following command:

INSERT DELAYED INTO mytable (id) VALUES (NULL);

Which returns:

Error 1031: Table handler for 'mytable' doesn't have this option.
[28 Sep 2004 10:13] Alexander Keremidarski
Thank you for taking the time to write to us, but this is not
a bug. Please double-check the documentation available at
http://www.mysql.com/documentation/ and the instructions on
how to report a bug at http://bugs.mysql.com/how-to-report.php

Additional info:

InnoDB is transactional engine so delayed insert does not make much sense for it.

It is not even possible to define the delayed behaviour in terms of transactions. The idea behind DELAYED is to return the control to the client program at once regardless of the result of the query.

Within transaction it doesn't make any sense as being atomic transaction can only finish with COMMIT or ROLLBACK.

It's theoretically impossible to have transaction which returns "unkonw" state to the client side.
[29 Sep 2004 0:39] Test Test
I'd suggest that you update the documentation at:

http://dev.mysql.com/doc/mysql/en/INSERT_DELAYED.html

first dot point clearly states that InnoDB tables are supported.
[15 Oct 2004 19:43] Paul DuBois
What the manual really should say is that InnoDB no longer
issues an error for INSERT DELAYED. What happens is that
InnoDB ignores the DELAYED keyword and processes the
statement. The row isn't actually delayed.

I've updated the manual accordingly.
[21 Apr 2012 17:39] Steven Hartland
5.5 & 5.6 Docs still incorrectly state that innodb with INSERT DELAYED, will cause an error
http://dev.mysql.com/doc/refman/5.5/en/insert-delayed.html
http://dev.mysql.com/doc/refman/5.6/en/insert-delayed.html

"INSERT DELAYED works only with MyISAM, MEMORY, ARCHIVE, and BLACKHOLE tables. For engines that do not support DELAYED, an error occurs."