From 919aeb387929a4b775024914eed95207111791b0 Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Sat, 19 Jul 2014 14:36:00 +0200 Subject: [PATCH 1/3] [ticket/12873] Test the good identifier in \phpbb\db\tools We need to rename the index key because with the default prefix (phpbb_) this key has a length of 31. And because we don't accept the keys longer than 30 characters we should ensure that by default no key is longer than 30 characters. PHPBB3-12873 --- phpBB/install/schemas/schema.json | 2 +- phpBB/phpbb/db/migration/data/v30x/release_3_0_0.php | 2 +- phpBB/phpbb/db/tools.php | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/phpBB/install/schemas/schema.json b/phpBB/install/schemas/schema.json index a3ffd923a1..81e658c153 100644 --- a/phpBB/install/schemas/schema.json +++ b/phpBB/install/schemas/schema.json @@ -2397,7 +2397,7 @@ ] }, "KEYS": { - "unq_mtch": [ + "un_mtch": [ "UNIQUE", [ "word_id", diff --git a/phpBB/phpbb/db/migration/data/v30x/release_3_0_0.php b/phpBB/phpbb/db/migration/data/v30x/release_3_0_0.php index 26937d6d80..b3da3a831d 100644 --- a/phpBB/phpbb/db/migration/data/v30x/release_3_0_0.php +++ b/phpBB/phpbb/db/migration/data/v30x/release_3_0_0.php @@ -731,7 +731,7 @@ class release_3_0_0 extends \phpbb\db\migration\migration 'title_match' => array('BOOL', 0), ), 'KEYS' => array( - 'unq_mtch' => array('UNIQUE', array('word_id', 'post_id', 'title_match')), + 'un_mtch' => array('UNIQUE', array('word_id', 'post_id', 'title_match')), 'word_id' => array('INDEX', 'word_id'), 'post_id' => array('INDEX', 'post_id'), ), diff --git a/phpBB/phpbb/db/tools.php b/phpBB/phpbb/db/tools.php index 18defc4535..10eb517d90 100644 --- a/phpBB/phpbb/db/tools.php +++ b/phpBB/phpbb/db/tools.php @@ -2079,7 +2079,7 @@ class tools $statements = array(); $table_prefix = substr(CONFIG_TABLE, 0, -6); // strlen(config) - if (strlen($table_name . $index_name) - strlen($table_prefix) > 24) + if (strlen($table_name . '_' . $index_name) - strlen($table_prefix) > 24) { $max_length = strlen($table_prefix) + 24; trigger_error("Index name '{$table_name}_$index_name' on table '$table_name' is too long. The maximum is $max_length characters.", E_USER_ERROR); From 27b4ab92414c42345f6737890051268f082ffc81 Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Thu, 7 Aug 2014 14:16:57 +0200 Subject: [PATCH 2/3] [ticket/12873] Don not touch the existing migrations PHPBB3-12873 --- phpBB/phpbb/db/migration/data/v30x/release_3_0_0.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phpBB/phpbb/db/migration/data/v30x/release_3_0_0.php b/phpBB/phpbb/db/migration/data/v30x/release_3_0_0.php index b3da3a831d..26937d6d80 100644 --- a/phpBB/phpbb/db/migration/data/v30x/release_3_0_0.php +++ b/phpBB/phpbb/db/migration/data/v30x/release_3_0_0.php @@ -731,7 +731,7 @@ class release_3_0_0 extends \phpbb\db\migration\migration 'title_match' => array('BOOL', 0), ), 'KEYS' => array( - 'un_mtch' => array('UNIQUE', array('word_id', 'post_id', 'title_match')), + 'unq_mtch' => array('UNIQUE', array('word_id', 'post_id', 'title_match')), 'word_id' => array('INDEX', 'word_id'), 'post_id' => array('INDEX', 'post_id'), ), From 2b3e15cf64fdc3f3f1fd4067321c92d4a20c1dd9 Mon Sep 17 00:00:00 2001 From: Tristan Darricau Date: Thu, 7 Aug 2014 14:25:37 +0200 Subject: [PATCH 3/3] [ticket/12873] Add migration to rename the index PHPBB3-12873 --- phpBB/install/schemas/schema.json | 16 ++++---- .../data/v310/rename_too_long_indexes.php | 38 +++++++++++++++++++ 2 files changed, 46 insertions(+), 8 deletions(-) create mode 100644 phpBB/phpbb/db/migration/data/v310/rename_too_long_indexes.php diff --git a/phpBB/install/schemas/schema.json b/phpBB/install/schemas/schema.json index 81e658c153..1a9b9b62b7 100644 --- a/phpBB/install/schemas/schema.json +++ b/phpBB/install/schemas/schema.json @@ -2397,14 +2397,6 @@ ] }, "KEYS": { - "un_mtch": [ - "UNIQUE", - [ - "word_id", - "post_id", - "title_match" - ] - ], "word_id": [ "INDEX", "word_id" @@ -2412,6 +2404,14 @@ "post_id": [ "INDEX", "post_id" + ], + "un_mtch": [ + "UNIQUE", + [ + "word_id", + "post_id", + "title_match" + ] ] } }, diff --git a/phpBB/phpbb/db/migration/data/v310/rename_too_long_indexes.php b/phpBB/phpbb/db/migration/data/v310/rename_too_long_indexes.php new file mode 100644 index 0000000000..8d2a15d8ea --- /dev/null +++ b/phpBB/phpbb/db/migration/data/v310/rename_too_long_indexes.php @@ -0,0 +1,38 @@ + +* @license GNU General Public License, version 2 (GPL-2.0) +* +* For full copyright and license information, please see +* the docs/CREDITS.txt file. +* +*/ + +namespace phpbb\db\migration\data\v310; + +class rename_too_long_indexes extends \phpbb\db\migration\migration +{ + static public function depends_on() + { + return array('\phpbb\db\migration\data\v30x\release_3_0_0'); + } + + public function update_schema() + { + return array( + 'drop_keys' => array( + $this->table_prefix . 'search_wordmatch' => array( + 'unq_mtch', + ), + ), + 'add_unique_index' => array( + $this->table_prefix . 'search_wordmatch' => array( + 'un_mtch' => array('word_id', 'post_id', 'title_match'), + ), + ), + ); + } +}