[ticket/17525] Fix handling index name prefix logic for renaming

PHPBB-17525
This commit is contained in:
rxu 2025-07-02 11:01:49 +07:00
parent 669af8f3aa
commit b5c3befa87
No known key found for this signature in database
GPG key ID: 8117904FEDEFDD17

View file

@ -417,8 +417,12 @@ class doctrine implements tools_interface
*/
public static function normalize_index_name(string $table_name, string $index_name, bool $remove_prefix = false): string
{
$short_table_name = table_helper::generate_shortname(self::remove_prefix($table_name));
if (!self::is_prefixed($index_name, $short_table_name . '_'))
$prefixless_table_name = self::remove_prefix($table_name);
$short_table_name = table_helper::generate_shortname($prefixless_table_name);
if (!self::is_prefixed($index_name, $short_table_name . '_')
&& !self::is_prefixed($index_name, $prefixless_table_name . '_')
&& !self::is_prefixed($index_name, $table_name . '_')
)
{
$index_name = $short_table_name . '_' . $index_name;
}
@ -915,7 +919,6 @@ class doctrine implements tools_interface
protected function schema_rename_index(Schema $schema, string $table_name, string $index_name_old, string $index_name_new, bool $safe_check = false): void
{
$table = $schema->getTable($table_name);
$index_name_old = self::normalize_index_name($table_name, $index_name_old);
$index_name_new = self::normalize_index_name($table_name, $index_name_new);
if ($safe_check && !$table->hasIndex($index_name_old))