mirror of
https://github.com/phpbb/phpbb.git
synced 2025-07-31 22:10:45 +02:00
- reimplemented autoincrement support in the convertor, made it more generic
#7528 git-svn-id: file:///svn/phpbb/trunk@6980 89ea8834-ac86-4346-8a33-228a782c2dd0
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user