aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/install
diff options
context:
space:
mode:
authorDavid M <davidmj@users.sourceforge.net>2007-07-29 14:44:43 +0000
committerDavid M <davidmj@users.sourceforge.net>2007-07-29 14:44:43 +0000
commitd7ae4540794708fe79fb9fff682935a3fa05d258 (patch)
treeb69bc99d283f67640d1a4b33a652730fb3760afb /phpBB/install
parenta2d1a8706f822be3bc49cb96a2c8e65907b8324a (diff)
downloadforums-d7ae4540794708fe79fb9fff682935a3fa05d258.tar
forums-d7ae4540794708fe79fb9fff682935a3fa05d258.tar.gz
forums-d7ae4540794708fe79fb9fff682935a3fa05d258.tar.bz2
forums-d7ae4540794708fe79fb9fff682935a3fa05d258.tar.xz
forums-d7ae4540794708fe79fb9fff682935a3fa05d258.zip
#13862
git-svn-id: file:///svn/phpbb/trunk@7980 89ea8834-ac86-4346-8a33-228a782c2dd0
Diffstat (limited to 'phpBB/install')
-rw-r--r--phpBB/install/database_update.php122
1 files changed, 102 insertions, 20 deletions
diff --git a/phpBB/install/database_update.php b/phpBB/install/database_update.php
index 34f0aebb12..48b94595af 100644
--- a/phpBB/install/database_update.php
+++ b/phpBB/install/database_update.php
@@ -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]))
+ $sql .= " {$column_type} ";
+
+ if (isset($column_data[2]) && $column_data[2] == 'auto_increment')
{
- $return_array['default'] = $column_data[1];
+ $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 ';
}
- $sql .= " {$column_type} ";
- $sql .= 'NOT NULL ';
+ $return_array['default'] = $default_val;
- $sql .= (!is_null($column_data[1])) ? "DEFAULT '{$column_data[1]}' " : '';
+ $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')
- {
- $sql_array[] = 'ALTER COLUMN ' . $column_name . ' SET NOT NULL';
- }
- else
+ if (isset($column_data['null']))
{
- $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