[ticket/10003] Ported 5553cfc2ed to db_tools.

The diff in database_update was only partially relevant.

PHPBB3-10003
This commit is contained in:
Oleg Pudeyev 2011-04-29 01:25:46 -04:00
parent 761e3dd36f
commit 55ff5da70b

View file

@ -1289,13 +1289,12 @@ class phpbb_db_tools
FROM user_indexes FROM user_indexes
WHERE table_name = '" . strtoupper($table_name) . "' WHERE table_name = '" . strtoupper($table_name) . "'
AND generated = 'N' AND generated = 'N'
AND uniqueness = 'UNIQUE' AND uniqueness = 'UNIQUE'";
AND index_name LIKE 'U_%'";
$col = 'index_name'; $col = 'index_name';
break; break;
case 'sqlite': case 'sqlite':
$sql = "PRAGMA index_list('" . $table_name . "') WHERE unique = 1;"; $sql = "PRAGMA index_list('" . $table_name . "');";
$col = 'name'; $col = 'name';
break; break;
} }
@ -1322,7 +1321,15 @@ class phpbb_db_tools
switch ($this->sql_layer) switch ($this->sql_layer)
{ {
case 'oracle': case 'oracle':
$row[$col] = substr($row[$col], strlen('U_' . $row['table_owner']) + 1); // Two cases here... prefixed with U_[table_owner] and not prefixed with table_name
if (strpos($row[$col], 'U_') === 0)
{
$row[$col] = substr($row[$col], strlen('U_' . $row['table_owner']) + 1);
}
else if (strpos($row[$col], strtoupper($table_name)) === 0)
{
$row[$col] = substr($row[$col], strlen($table_name) + 1);
}
break; break;
case 'firebird': case 'firebird':
@ -2203,6 +2210,7 @@ class phpbb_db_tools
} }
else else
{ {
// TODO: try to change pkey without removing trigger, generator or constraints. ATM this query may fail.
$statements[] = 'ALTER TABLE ' . $table_name . ' ALTER COLUMN "' . strtoupper($column_name) . '" TYPE ' . ' ' . $column_data['column_type_sql_type']; $statements[] = 'ALTER TABLE ' . $table_name . ' ALTER COLUMN "' . strtoupper($column_name) . '" TYPE ' . ' ' . $column_data['column_type_sql_type'];
} }
break; break;