Compare commits

...

3 commits

Author SHA1 Message Date
rxu
45a69eca14
[ticket/17525] Rename migration to reflect its purpose
PHPBB-17525
2025-06-17 14:09:34 +07:00
rxu
84d195ac21
[ticket/17525] Add migration renaming index test
PHPBB-17525
2025-06-17 12:27:47 +07:00
rxu
78dcb0c862
[ticket/17525] Avoid more index name duplication
PHPBB-17525
2025-06-17 09:32:19 +07:00
3 changed files with 120 additions and 3 deletions

View file

@ -15,7 +15,7 @@ namespace phpbb\db\migration\data\v400;
use phpbb\db\migration\migration;
class rename_auth_role_id_index extends migration
class rename_duplicated_index_names extends migration
{
public static function depends_on()
{
@ -40,8 +40,15 @@ class rename_auth_role_id_index extends migration
'poster_id' => 'attchmnts_poster_id',
'topic_id' => 'attchmnts_topic_id',
],
$this->table_prefix . 'bbcodes' => [
'display_on_post' => 'bbcds_display_on_post',
],
$this->table_prefix . 'forums' => [
'left_right_id' => 'frms_left_right_id',
],
$this->table_prefix . 'forums_watch' => [
'forum_id' => 'frmswtch_forum_id',
'notify_stat' => 'frmswtch_notify_stat',
'user_id' => 'frmswtch_user_id',
],
$this->table_prefix . 'log' => [
@ -55,10 +62,15 @@ class rename_auth_role_id_index extends migration
$this->table_prefix . 'moderator_cache' => [
'forum_id' => 'mdrtrcch_forum_id',
],
$this->table_prefix . 'modules' => [
'left_right_id' => 'mdls_left_right_id',
],
$this->table_prefix . 'oauth_states' => [
'provider' => 'oauthsts_provider',
'user_id' => 'oauthsts_user_id',
],
$this->table_prefix . 'oauth_tokens' => [
'provider' => 'oauthtkns_provider',
'user_id' => 'oauthtkns_user_id',
],
$this->table_prefix . 'poll_options' => [
@ -72,11 +84,26 @@ class rename_auth_role_id_index extends migration
'poster_id' => 'psts_poster_id',
'topic_id' => 'psts_topic_id',
],
$this->table_prefix . 'privmsgs' => [
'author_id' => 'pms_author_id',
],
$this->table_prefix . 'privmsgs_folder' => [
'user_id' => 'pmfldr_user_id',
'user_id' => 'pmsfldr_user_id',
],
$this->table_prefix . 'privmsgs_rules' => [
'user_id' => 'pmrls_user_id',
'user_id' => 'pmsrls_user_id',
],
$this->table_prefix . 'privmsgs_to' => [
'author_id' => 'pmsto_author_id',
],
$this->table_prefix . 'reports' => [
'post_id' => 'rprts_post_id',
],
$this->table_prefix . 'search_wordmatch' => [
'post_id' => 'wrdmtch_post_id',
],
$this->table_prefix . 'smilies' => [
'display_on_post' => 'smls_display_on_post',
],
$this->table_prefix . 'topics' => [
'forum_id' => 'tpcs_forum_id',
@ -87,6 +114,7 @@ class rename_auth_role_id_index extends migration
],
$this->table_prefix . 'topics_watch' => [
'topic_id' => 'tpcswtch_topic_id',
'notify_stat' => 'tpcswtch_notify_stat',
'user_id' => 'tpcswtch_user_id',
],
$this->table_prefix . 'user_group' => [

View file

@ -0,0 +1,65 @@
<?php
/**
*
* This file is part of the phpBB Forum Software package.
*
* @copyright (c) phpBB Limited <https://www.phpbb.com>
* @license GNU General Public License, version 2 (GPL-2.0)
*
* For full copyright and license information, please see
* the docs/CREDITS.txt file.
*
*/
class phpbb_dbal_migration_schema_index extends \phpbb\db\migration\migration
{
function update_schema()
{
return [
'add_tables' => [
$this->table_prefix . 'foobar1' => [
'COLUMNS' => [
'user_id' => ['UINT', 0],
'username' => ['VCHAR:50', 0],
],
'KEYS' => [
'tstidx_user_id' => ['UNIQUE', 'user_id'],
'tstidx_username' => ['INDEX', 'username'],
],
],
$this->table_prefix . 'foobar2' => [
'COLUMNS' => [
'ban_userid' => ['ULINT', 0],
'ban_ip' => ['VCHAR:40', ''],
'ban_reason' => ['VCHAR:100', ''],
],
'KEYS' => [
'tstidx_ban_userid' => ['UNIQUE', 'ban_userid'],
'tstidxban_data' => ['INDEX', ['ban_ip', 'ban_reason']],
],
],
],
'rename_index' => [
$this->table_prefix . 'foobar1' => [
'tstidx_user_id' => 'fbr1_user_id',
'tstidx_username' => 'fbr1_username',
],
$this->table_prefix . 'foobar2' => [
'tstidx_ban_userid' => 'fbr2_ban_userid',
'tstidxban_data' => 'fbr2_ban_data',
],
],
];
}
function revert_schema()
{
return [
'drop_tables' => [
$this->table_prefix . 'foobar1',
$this->table_prefix . 'foobar2',
],
];
}
}

View file

@ -24,6 +24,7 @@ require_once __DIR__ . '/migration/revert_table_with_dependency.php';
require_once __DIR__ . '/migration/fail.php';
require_once __DIR__ . '/migration/installed.php';
require_once __DIR__ . '/migration/schema.php';
require_once __DIR__ . '/migration/schema_index.php';
class phpbb_dbal_migrator_test extends phpbb_database_test_case
{
@ -416,4 +417,27 @@ class phpbb_dbal_migrator_test extends phpbb_database_test_case
$this->assertFalse($this->db_tools->sql_column_exists('phpbb_config', 'test_column1'));
$this->assertFalse($this->db_tools->sql_table_exists('phpbb_foobar'));
}
public function test_rename_index()
{
$this->migrator->set_migrations(array('phpbb_dbal_migration_schema_index'));
while (!$this->migrator->finished())
{
$this->migrator->update();
}
$this->assertTrue($this->db_tools->sql_unique_index_exists('phpbb_foobar1', 'fbr1_user_id'));
$this->assertTrue($this->db_tools->sql_index_exists('phpbb_foobar1', 'fbr1_username'));
$this->assertTrue($this->db_tools->sql_unique_index_exists('phpbb_foobar2', 'fbr2_ban_userid'));
$this->assertTrue($this->db_tools->sql_index_exists('phpbb_foobar2', 'fbr2_ban_data'));
while ($this->migrator->migration_state('phpbb_dbal_migration_schema_index'))
{
$this->migrator->revert('phpbb_dbal_migration_schema_index');
}
$this->assertFalse($this->db_tools->sql_table_exists('phpbb_foobar1'));
$this->assertFalse($this->db_tools->sql_table_exists('phpbb_foobar2'));
}
}