WL#7395: Deprecate (5.6) and remove (5.7) IGNORE for ALTER TABLE
Affects: Server-Prototype Only — Status: Complete — Priority: Medium
Deprecate the IGNORE syntax for ALTER TABLE in 5.6 and remove IGNORE support for ALTER TABLE in 5.7. From the manual: "IGNORE is a MySQL extension to standard SQL. It controls how ALTER TABLE works if there are duplicates on unique keys in the new table or if warnings occur when strict mode is enabled. If IGNORE is not specified, the copy is aborted and rolled back if duplicate-key errors occur. If IGNORE is specified, only the first row is used of rows with duplicates on a unique key. The other conflicting rows are deleted. Incorrect values are truncated to the closest matching acceptable value." This feature is badly defined (what is the first row?), causes problems for replication, disables online alter for unique index creation and has caused problems with foreign keys (rows removed in parent table). ALTER TABLE is also the only DDL statement supporting IGNORE. This makes it difficult to change IGNORE behavior since ALTER TABLE must always be replicated in statement based mode (cross-version replication). See: http://www.tocker.ca/2013/11/06/the-future-of-alter-table-ignore-syntax.html for community feedback. User Documentation ================== http://dev.mysql.com/doc/relnotes/mysql/5.7/en/news-5-7-4.html http://dev.mysql.com/doc/relnotes/mysql/5.6/en/news-5-6-17.html http://dev.mysql.com/doc/refman/5.7/en/alter-table.html http://dev.mysql.com/doc/refman/5.6/en/alter-table.html
I-1: Removed syntax. In 5.7, ALTER IGNORE TABLE ... shall give syntax error. I-2: Deprecation warning. In 5.6, ALTER IGNORE TABLE ... shall give deprecation warning: "'IGNORE' is deprecated and will be removed in a future release." The functionality shall be unchanged.
Copyright (c) 2000, 2018, Oracle Corporation and/or its affiliates. All rights reserved.