[ticket/8944] Patch db_tools to support index length for MySQL4

This commit is contained in:
Igor Wiedler 2010-09-05 03:14:27 +02:00
parent bb191a1d69
commit e7b86871f0

View file

@ -611,7 +611,7 @@ class phpbb_db_tools
* drop_columns: Removing/Dropping columns * drop_columns: Removing/Dropping columns
* add_primary_keys: adding primary keys * add_primary_keys: adding primary keys
* add_unique_index: adding an unique index * add_unique_index: adding an unique index
* add_index: adding an index * add_index: adding an index (can be column:index_size if you need to provide size)
* *
* The values are in this format: * The values are in this format:
* {TABLE NAME} => array( * {TABLE NAME} => array(
@ -1804,6 +1804,12 @@ class phpbb_db_tools
{ {
$statements = array(); $statements = array();
// remove index length unless MySQL4
if ('mysql_40' != $this->sql_layer)
{
$column = preg_replace('#:.*$#', '', $column);
}
switch ($this->sql_layer) switch ($this->sql_layer)
{ {
case 'firebird': case 'firebird':
@ -1814,6 +1820,16 @@ class phpbb_db_tools
break; break;
case 'mysql_40': case 'mysql_40':
// add index size to definition as required by MySQL4
foreach ($column as $i => $col)
{
if (false !== strpos($col, ':'))
{
list($col, $index_size) = explode(':', $col);
$column[$i] = "$col($index_size)";
}
}
// no break
case 'mysql_41': case 'mysql_41':
$statements[] = 'CREATE INDEX ' . $index_name . ' ON ' . $table_name . '(' . implode(', ', $column) . ')'; $statements[] = 'CREATE INDEX ' . $index_name . ' ON ' . $table_name . '(' . implode(', ', $column) . ')';
break; break;