[BUGFIX] InstallTool: Optimize ALTER TABLE for auto_increment columns 02/42902/3
authorMorton Jonuschat <m.jonuschat@mojocode.de>
Fri, 28 Aug 2015 07:58:31 +0000 (09:58 +0200)
committerNicole Cordes <typo3@cordes.co>
Mon, 14 Sep 2015 13:50:26 +0000 (15:50 +0200)
commit859a905cd07d81bfe426d36b6176b803b1ccf9ac
treeda02618aa1600d9cbbf9949d16c633bc83f775af
parentcdfd83fed410fab2c92a2ce51eefe793f87460bd
[BUGFIX] InstallTool: Optimize ALTER TABLE for auto_increment columns

To successfully add a new column with auto_increment enabled to a table
the column needs to be included in a (primary) key. The install tool
handled this in a two step process by ignoring the auto_increment
attribute and separating adding the field and the key into two
statements. This fails on existing tables with data as the column will
include non-uniqued/non-incrementing values after the first statement
leading to failures adding the key.

The proper way to add a columns with the auto_increment attribute is to
combine the ALTER TABLE statement to perform both alterations at the
same time, this patch changes the behavior of the Install Tool to
generate statements accordingly on MySQL.

When running with DBAL enabled the statement will not be altered in any
way to allow the SqlParser to take into account database specific
handling of this case, an example test case is included for PostgreSQL
which handles this case transparently using the SERIAL column type.

Resolves: #69304
Releases: master, 6.2
Change-Id: I211b25b22e122e47d289b9d7f927b5c713cdd138
Reviewed-on: http://review.typo3.org/42902
Reviewed-by: Morton Jonuschat <m.jonuschat@mojocode.de>
Tested-by: Morton Jonuschat <m.jonuschat@mojocode.de>
Reviewed-by: Nicole Cordes <typo3@cordes.co>
Tested-by: Nicole Cordes <typo3@cordes.co>
typo3/sysext/dbal/Tests/Unit/Database/DatabaseConnectionPostgresqlTest.php
typo3/sysext/install/Classes/Service/SqlSchemaMigrationService.php