git-svn-id: file:///svn/phpbb/trunk@7980 89ea8834-ac86-4346-8a33-228a782c2dd0
This commit is contained in:
David M 2007-07-29 14:44:43 +00:00
parent a2d1a8706f
commit d7ae454079
2 changed files with 123 additions and 25 deletions

View file

@ -169,6 +169,7 @@ p a {
<ol class="menu">
<li><a href="#changelog">Changelog</a>
<ol type="i">
<li><a href="#v30rc4">Changes since RC-4</a></li>
<li><a href="#v30rc3">Changes since RC-3</a></li>
<li><a href="#v30rc2">Changes since RC-2</a></li>
<li><a href="#v30rc1">Changes since RC-1</a></li>
@ -181,12 +182,27 @@ p a {
<a name="changelog"></a><h1>1. Changelog</h1>
<a name="v30rc3"></a><b>1.i. Changes since 3.0.RC3</b>
<a name="v30rc4"></a><b>1.i. Changes since 3.0.RC4</b>
<br /><br />
<div class="paragraph">
<p>These fixes/changes are currently only present within CVS and will appear within the next phpBB3 version.</p>
<ul class="menu">
<li>[Fix] MySQL, PostgreSQL and SQLite related database fixes (Bug #13862)</li>
</ul>
</div>
<a href="#top">Top</a>
<br /><br />
<hr />
<a name="v30rc3"></a><b>1.ii. Changes since 3.0.RC3</b>
<br /><br />
<div class="paragraph">
<ul class="menu">
<li>[Fix] Fixing some subsilver2 and prosilver style issues</li>
<li>[Fix] Parse error in MCP ban (Bug #13109)</li>
@ -300,7 +316,7 @@ p a {
<hr />
<a name="v30rc2"></a><b>1.ii. Changes since 3.0.RC2</b>
<a name="v30rc2"></a><b>1.iii. Changes since 3.0.RC2</b>
<br /><br />
<div class="paragraph">
@ -354,7 +370,7 @@ p a {
<hr />
<a name="v30rc1"></a><b>1.iii. Changes since 3.0.RC1</b>
<a name="v30rc1"></a><b>1.iiii. Changes since 3.0.RC1</b>
<br /><br />
<div class="paragraph">

View file

@ -8,7 +8,7 @@
*
*/
$updates_to_version = '3.0.RC4';
$updates_to_version = '3.0.RC5';
// Return if we "just include it" to find out for which version the database update is responsuble for
if (defined('IN_PHPBB') && defined('IN_INSTALL'))
@ -387,6 +387,43 @@ $database_update_info = array(
),
),
),
// Changes from 3.0.RC4 to the next version
'3.0.RC4' => array(
// Change the following columns
'change_columns' => array(
STYLES_TABLE => array(
'style_id' => array('USINT', NULL, 'auto_increment'),
'template_id' => array('USINT', 0),
'theme_id' => array('USINT', 0),
'imageset_id' => array('USINT', 0),
),
STYLES_TEMPLATE_TABLE => array(
'template_id' => array('USINT', NULL, 'auto_increment'),
),
STYLES_TEMPLATE_DATA_TABLE => array(
'template_id' => array('USINT', NULL, 'auto_increment'),
),
STYLES_THEME_TABLE => array(
'theme_id' => array('USINT', NULL, 'auto_increment'),
),
STYLES_IMAGESET_TABLE => array(
'imageset_id' => array('USINT', NULL, 'auto_increment'),
),
STYLES_IMAGESET_DATA_TABLE => array(
'imageset_id' => array('USINT', 0),
),
USERS_TABLE => array(
'user_style' => array('USINT', 0),
),
FORUMS_TABLE => array(
'forum_style' => array('USINT', 0),
),
GROUPS_TABLE => array(
'group_avatar_width' => array('USINT', 0),
'group_avatar_height' => array('USINT', 0),
),
),
),
);
// Determine mapping database type
@ -1253,6 +1290,44 @@ if (version_compare($current_version, '3.0.RC3', '<='))
$no_updates = false;
}
if (version_compare($current_version, '3.0.RC4', '<='))
{
$update_auto_increment = array(
STYLES_TABLE => 'style_id',
STYLES_TEMPLATE_TABLE => 'template_id',
STYLES_TEMPLATE_DATA_TABLE => 'template_id',
STYLES_THEME_TABLE => 'theme_id',
STYLES_IMAGESET_TABLE => 'imageset_id'
);
if ($map_dbms == 'mysql_40' || $map_dbms == 'mysql_41')
{
foreach ($update_auto_increment as $auto_table_name => $auto_column_name)
{
$sql = "SELECT MAX({$auto_column_name}) as max_id
FROM {$auto_table_name}";
$result = _sql($sql, $errored, $error_ary);
$row = $db->sql_fetchrow($result);
$db->sql_freeresult($result);
$max_id = ((int) $row['max_id']) + 1;
_sql("ALTER TABLE {$auto_table_name} AUTO_INCREMENT = {$max_id}");
}
$no_updates = false;
}
else if ($map_dbms == 'sqlite')
{
foreach ($update_auto_increment as $auto_table_name => $auto_column_name)
{
var_dump('eh?');
sql_column_change($dbms, $auto_table_name, $auto_column_name, array('USINT', NULL, 'auto_increment'));
}
$no_updates = false;
}
}
_write_result($no_updates, $errored, $error_ary);
$error_ary = array();
@ -1570,7 +1645,7 @@ function column_exists($dbms, $table, $column_name)
/**
* Function to prepare some column information for better usage
*/
function prepare_column_data($dbms, $column_data)
function prepare_column_data($dbms, $column_data, $table_name, $column_name)
{
global $dbms_type_map, $unsigned_types;
@ -1709,17 +1784,23 @@ function prepare_column_data($dbms, $column_data)
case 'postgres':
$return_array['column_type'] = $column_type;
$return_array['null'] = 'NOT NULL';
if (!is_null($column_data[1]))
{
$return_array['default'] = $column_data[1];
}
$sql .= " {$column_type} ";
$sql .= 'NOT NULL ';
$sql .= (!is_null($column_data[1])) ? "DEFAULT '{$column_data[1]}' " : '';
if (isset($column_data[2]) && $column_data[2] == 'auto_increment')
{
$default_val = "nextval('{$table_name}_seq')";
}
else if (!is_null($column_data[1]))
{
$default_val = "'" . $column_data[1] . "'";
$return_array['null'] = 'NOT NULL';
$sql .= 'NOT NULL ';
}
$return_array['default'] = $default_val;
$sql .= "DEFAULT {$default_val}";
// Unsigned? Then add a CHECK contraint
if (in_array($orig_column_type, $unsigned_types))
@ -1730,7 +1811,7 @@ function prepare_column_data($dbms, $column_data)
break;
case 'sqlite':
/* if (isset($column_data[2]) && $column_data[2] == 'auto_increment')
if (isset($column_data[2]) && $column_data[2] == 'auto_increment')
{
$sql .= ' INTEGER PRIMARY KEY';
}
@ -1738,8 +1819,6 @@ function prepare_column_data($dbms, $column_data)
{
$sql .= ' ' . $column_type;
}
*/
$sql .= ' ' . $column_type;
$sql .= ' NOT NULL ';
$sql .= (!is_null($column_data[1])) ? "DEFAULT '{$column_data[1]}'" : '';
@ -1758,7 +1837,7 @@ function sql_column_add($dbms, $table_name, $column_name, $column_data)
{
global $errored, $error_ary;
$column_data = prepare_column_data($dbms, $column_data);
$column_data = prepare_column_data($dbms, $column_data, $table_name, $column_name);
switch ($dbms)
{
@ -2300,7 +2379,7 @@ function sql_column_change($dbms, $table_name, $column_name, $column_data)
global $dbms_type_map, $db;
global $errored, $error_ary;
$column_data = prepare_column_data($dbms, $column_data);
$column_data = prepare_column_data($dbms, $column_data, $table_name, $column_name);
switch ($dbms)
{
@ -2332,18 +2411,21 @@ function sql_column_change($dbms, $table_name, $column_name, $column_data)
$sql_array = array();
$sql_array[] = 'ALTER COLUMN ' . $column_name . ' TYPE ' . $column_data['column_type'];
if ($column_data['null'] == 'NOT NULL')
if (isset($column_data['null']))
{
$sql_array[] = 'ALTER COLUMN ' . $column_name . ' SET NOT NULL';
}
else
{
$sql_array[] = 'ALTER COLUMN ' . $column_name . ' DROP NOT NULL';
if ($column_data['null'] == 'NOT NULL')
{
$sql_array[] = 'ALTER COLUMN ' . $column_name . ' SET NOT NULL';
}
else if ($column_data['null'] == 'NULL')
{
$sql_array[] = 'ALTER COLUMN ' . $column_name . ' DROP NOT NULL';
}
}
if (isset($column_data['default']))
{
$sql_array[] = 'ALTER COLUMN ' . $column_name . " SET DEFAULT '" . $column_data['default'] . "'";
$sql_array[] = 'ALTER COLUMN ' . $column_name . ' SET DEFAULT ' . $column_data['default'];
}
// we don't want to double up on constraints if we change different number data types