WL#7395: Deprecate (5.6) and remove (5.7) IGNORE for ALTER TABLE

Affects: Server-Prototype Only   —   Status: Complete

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

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.