Update comment for indexName(), explaining why it exists
authorTim Starling <tstarling@wikimedia.org>
Thu, 30 Mar 2017 04:17:47 +0000 (15:17 +1100)
committerReedy <reedy@wikimedia.org>
Mon, 3 Apr 2017 02:26:22 +0000 (03:26 +0100)
Bug: T154872
Change-Id: Idf64b85dc56dcc28f3a25b2b8ded44c5490cf56c

includes/libs/rdbms/database/DatabaseMysqlBase.php

index 4b3a644..6725090 100644 (file)
@@ -1343,7 +1343,20 @@ abstract class DatabaseMysqlBase extends Database {
         * @return string
         */
        protected function indexName( $index ) {
         * @return string
         */
        protected function indexName( $index ) {
-               // Backwards-compatibility hack
+               /**
+                * When SQLite indexes were introduced in r45764, it was noted that
+                * SQLite requires index names to be unique within the whole database,
+                * not just within a schema. As discussed in CR r45819, to avoid the
+                * need for a schema change on existing installations, the indexes
+                * were implicitly mapped from the new names to the old names.
+                *
+                * This mapping can be removed if DB patches are introduced to alter
+                * the relevant tables in existing installations. Note that because
+                * this index mapping applies to table creation, even new installations
+                * of MySQL have the old names (except for installations created during
+                * a period where this mapping was inappropriately removed, see
+                * T154872).
+                */
                $renamed = [
                        'ar_usertext_timestamp' => 'usertext_timestamp',
                        'un_user_id' => 'user_id',
                $renamed = [
                        'ar_usertext_timestamp' => 'usertext_timestamp',
                        'un_user_id' => 'user_id',