aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/install/install_convert.php
diff options
context:
space:
mode:
authorDavid M <davidmj@users.sourceforge.net>2007-02-10 06:41:38 +0000
committerDavid M <davidmj@users.sourceforge.net>2007-02-10 06:41:38 +0000
commitf885fc36ae05d5fea595e9beb34beea0ad4bae18 (patch)
tree5ce50be9b312fb083c223702538b22e48ce3c380 /phpBB/install/install_convert.php
parentb8b1aa812b2713a7b261c94cde7e5af426086ce2 (diff)
downloadforums-f885fc36ae05d5fea595e9beb34beea0ad4bae18.tar
forums-f885fc36ae05d5fea595e9beb34beea0ad4bae18.tar.gz
forums-f885fc36ae05d5fea595e9beb34beea0ad4bae18.tar.bz2
forums-f885fc36ae05d5fea595e9beb34beea0ad4bae18.tar.xz
forums-f885fc36ae05d5fea595e9beb34beea0ad4bae18.zip
- reimplemented autoincrement support in the convertor, made it more generic
#7528 git-svn-id: file:///svn/phpbb/trunk@6980 89ea8834-ac86-4346-8a33-228a782c2dd0
Diffstat (limited to 'phpBB/install/install_convert.php')
-rw-r--r--phpBB/install/install_convert.php106
1 files changed, 26 insertions, 80 deletions
diff --git a/phpBB/install/install_convert.php b/phpBB/install/install_convert.php
index 4636bbeecc..0d1fec4a1c 100644
--- a/phpBB/install/install_convert.php
+++ b/phpBB/install/install_convert.php
@@ -910,48 +910,13 @@ class install_convert extends module
}
}
- if ($db->sql_layer === 'postgres')
+ if (!empty($schema['autoincrement']))
{
- $tables = array(
- ATTACHMENTS_TABLE => 'attach_id',
- ACL_OPTIONS_TABLE => 'auth_option_id',
- ACL_ROLES_TABLE => 'role_id',
- BANLIST_TABLE => 'ban_id',
- BOTS_TABLE => 'bot_id',
- DISALLOW_TABLE => 'disallow_id',
- DRAFTS_TABLE => 'draft_id',
- EXTENSIONS_TABLE => 'extension_id',
- EXTENSION_GROUPS_TABLE => 'group_id',
- FORUMS_TABLE => 'forum_id',
- GROUPS_TABLE => 'group_id',
- ICONS_TABLE => 'icons_id',
- LANG_TABLE => 'lang_id',
- LOG_TABLE => 'log_id',
- MODULES_TABLE => 'module_id',
- POSTS_TABLE => 'post_id',
- PRIVMSGS_TABLE => 'msg_id',
- PRIVMSGS_FOLDER_TABLE => 'folder_id',
- PRIVMSGS_RULES_TABLE => 'rule_id',
- PROFILE_FIELDS_TABLE => 'field_id',
- RANKS_TABLE => 'rank_id',
- REPORTS_TABLE => 'report_id',
- REPORTS_REASONS_TABLE => 'reason_id',
- SEARCH_WORDLIST_TABLE => 'word_id',
- SITELIST_TABLE => 'site_id',
- SMILIES_TABLE => 'smiley_id',
- 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',
- TOPICS_TABLE => 'topic_id',
- USERS_TABLE => 'user_id',
- WARNINGS_TABLE => 'warning_id',
- WORDS_TABLE => 'word_id'
- );
- if (!empty($tables[$schema['target']]))
+ switch ($db->sql_layer)
{
- $db->sql_query("SELECT SETVAL('" . $schema['target'] . "_seq',(select case when max(" . $tables[$schema['target']] . ")>0 then max(" . $tables[$schema['target']] . ")+1 else 1 end from " . $schema['target'] . '));');
+ case 'postgres':
+ $db->sql_query("SELECT SETVAL('" . $schema['target'] . "_seq',(select case when max(" . $schema['autoincrement'] . ")>0 then max(" . $schema['autoincrement'] . ")+1 else 1 end from " . $schema['target'] . '));');
+ break;
}
}
}
@@ -1051,6 +1016,17 @@ class install_convert extends module
$convert->row = $convert_row = array();
+ if (!empty($schema['autoincrement']))
+ {
+ switch ($db->sql_layer)
+ {
+ case 'mssql':
+ case 'mssql_odbc':
+ $db->sql_query('SET IDENTITY_INSERT ' . $schema['target'] . ' ON');
+ break;
+ }
+ }
+
// Now handle the rows until time is over or no more rows to process...
while (still_on_time())
{
@@ -1168,48 +1144,18 @@ class install_convert extends module
$waiting_rows = array();
}
- if ($db->sql_layer === 'postgres')
+ if (!empty($schema['autoincrement']))
{
- $tables = array(
- ATTACHMENTS_TABLE => 'attach_id',
- ACL_OPTIONS_TABLE => 'auth_option_id',
- ACL_ROLES_TABLE => 'role_id',
- BANLIST_TABLE => 'ban_id',
- BOTS_TABLE => 'bot_id',
- DISALLOW_TABLE => 'disallow_id',
- DRAFTS_TABLE => 'draft_id',
- EXTENSIONS_TABLE => 'extension_id',
- EXTENSION_GROUPS_TABLE => 'group_id',
- FORUMS_TABLE => 'forum_id',
- GROUPS_TABLE => 'group_id',
- ICONS_TABLE => 'icons_id',
- LANG_TABLE => 'lang_id',
- LOG_TABLE => 'log_id',
- MODULES_TABLE => 'module_id',
- POSTS_TABLE => 'post_id',
- PRIVMSGS_TABLE => 'msg_id',
- PRIVMSGS_FOLDER_TABLE => 'folder_id',
- PRIVMSGS_RULES_TABLE => 'rule_id',
- PROFILE_FIELDS_TABLE => 'field_id',
- RANKS_TABLE => 'rank_id',
- REPORTS_TABLE => 'report_id',
- REPORTS_REASONS_TABLE => 'reason_id',
- SEARCH_WORDLIST_TABLE => 'word_id',
- SITELIST_TABLE => 'site_id',
- SMILIES_TABLE => 'smiley_id',
- 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',
- TOPICS_TABLE => 'topic_id',
- USERS_TABLE => 'user_id',
- WARNINGS_TABLE => 'warning_id',
- WORDS_TABLE => 'word_id'
- );
- if (!empty($tables[$schema['target']]))
+ switch ($db->sql_layer)
{
- $db->sql_query("SELECT SETVAL('" . $schema['target'] . "_seq',(select case when max(" . $tables[$schema['target']] . ")>0 then max(" . $tables[$schema['target']] . ")+1 else 1 end from " . $schema['target'] . '));');
+ case 'mssql':
+ case 'mssql_odbc':
+ $db->sql_query('SET IDENTITY_INSERT ' . $schema['target'] . ' OFF');
+ break;
+
+ case 'postgres':
+ $db->sql_query("SELECT SETVAL('" . $schema['target'] . "_seq',(select case when max(" . $schema['autoincrement'] . ")>0 then max(" . $schema['autoincrement'] . ")+1 else 1 end from " . $schema['target'] . '));');
+ break;
}
}
}