From fd4f973440baf51b92de61cd067268f1881a9a30 Mon Sep 17 00:00:00 2001 From: Henry Sudhof Date: Thu, 12 Apr 2012 18:34:50 +0200 Subject: [PATCH 1/9] [ticket/9725] Create an Azure SQL compatible Schema Two problems were encountered when installing on AzureSQL: -Azure SQL does not support the ON clause of T-SQL -Azure SQL requries a clustered index AKA primary key on all tables The fix is makeshift; it introduces questionable primary indices, which should be replaced with auto--increment columns. PHPBB3-9725 --- phpBB/develop/create_schema_files.php | 20 +- phpBB/install/schemas/mssql_schema.sql | 586 +++++++++++++------------ 2 files changed, 326 insertions(+), 280 deletions(-) diff --git a/phpBB/develop/create_schema_files.php b/phpBB/develop/create_schema_files.php index 7b1fff40fb..23ef2f6c74 100644 --- a/phpBB/develop/create_schema_files.php +++ b/phpBB/develop/create_schema_files.php @@ -552,7 +552,7 @@ foreach ($supported_dbms as $dbms) case 'mssql': $line = substr($line, 0, -2); - $line .= "\n) ON [PRIMARY]" . (($textimage) ? ' TEXTIMAGE_ON [PRIMARY]' : '') . "\n"; + $line .= "\n)";// ON [PRIMARY]" . (($textimage) ? ' TEXTIMAGE_ON [PRIMARY]' : '') . "\n"; $line .= "GO\n\n"; break; } @@ -589,7 +589,7 @@ foreach ($supported_dbms as $dbms) $line .= "\tCONSTRAINT [PK_{$table_name}] PRIMARY KEY CLUSTERED \n"; $line .= "\t(\n"; $line .= "\t\t[" . implode("],\n\t\t[", $table_data['PRIMARY_KEY']) . "]\n"; - $line .= "\t) ON [PRIMARY] \n"; + $line .= "\t) \n"; $line .= "GO\n\n"; break; @@ -684,7 +684,7 @@ foreach ($supported_dbms as $dbms) case 'mssql': $line .= ($key_data[0] == 'INDEX') ? 'CREATE INDEX' : ''; $line .= ($key_data[0] == 'UNIQUE') ? 'CREATE UNIQUE INDEX' : ''; - $line .= " [{$key_name}] ON [{$table_name}]([" . implode('], [', $key_data[1]) . "]) ON [PRIMARY]\n"; + $line .= " [{$key_name}] ON [{$table_name}]([" . implode('], [', $key_data[1]) . "]) \n"; $line .= "GO\n\n"; break; @@ -863,8 +863,9 @@ function get_schema_struct() 'KEYS' => array( 'group_id' => array('INDEX', 'group_id'), 'auth_opt_id' => array('INDEX', 'auth_option_id'), - 'auth_role_id' => array('INDEX', 'auth_role_id'), + 'auth_role_id' => array('INDEX', 'auth_role_id', 'auth_option_id'), ), + 'PRIMARY_KEY' => array('group_id', 'forum_id', 'auth_option_id', 'auth_role_id', 'auth_setting'), ); $schema_data['phpbb_acl_options'] = array( @@ -921,6 +922,7 @@ function get_schema_struct() 'auth_option_id' => array('INDEX', 'auth_option_id'), 'auth_role_id' => array('INDEX', 'auth_role_id'), ), + 'PRIMARY_KEY' => array('user_id', 'forum_id', 'auth_option_id', 'auth_role_id', 'auth_setting'), ); $schema_data['phpbb_banlist'] = array( @@ -1142,6 +1144,7 @@ function get_schema_struct() 'user_id' => array('INDEX', 'user_id'), 'notify_stat' => array('INDEX', 'notify_status'), ), + 'PRIMARY_KEY' => array('forum_id', 'user_id'), ); $schema_data['phpbb_groups'] = array( @@ -1258,6 +1261,8 @@ function get_schema_struct() 'disp_idx' => array('INDEX', 'display_on_index'), 'forum_id' => array('INDEX', 'forum_id'), ), + 'PRIMARY_KEY' => array('forum_id', 'user_id', 'group_id'), + ); $schema_data['phpbb_modules'] = array( @@ -1293,6 +1298,7 @@ function get_schema_struct() 'poll_opt_id' => array('INDEX', 'poll_option_id'), 'topic_id' => array('INDEX', 'topic_id'), ), + 'PRIMARY_KEY' => array('topic_id', 'poll_option_id'), ); $schema_data['phpbb_poll_votes'] = array( @@ -1307,6 +1313,7 @@ function get_schema_struct() 'vote_user_id' => array('INDEX', 'vote_user_id'), 'vote_user_ip' => array('INDEX', 'vote_user_ip'), ), + 'PRIMARY_KEY' => array('topic_id', 'poll_option_id', 'vote_user_id'), ); $schema_data['phpbb_posts'] = array( @@ -1433,6 +1440,7 @@ function get_schema_struct() 'author_id' => array('INDEX', 'author_id'), 'usr_flder_id' => array('INDEX', array('user_id', 'folder_id')), ), +'PRIMARY_KEY' => array('msg_id', 'user_id', 'author_id'), ); $schema_data['phpbb_profile_fields'] = array( @@ -1568,6 +1576,7 @@ function get_schema_struct() 'word_id' => array('INDEX', 'word_id'), 'post_id' => array('INDEX', 'post_id'), ), + 'PRIMARY_KEY' => array('post_id', 'word_id'), ); $schema_data['phpbb_sessions'] = array( @@ -1683,6 +1692,7 @@ function get_schema_struct() 'tid' => array('INDEX', 'template_id'), 'tfn' => array('INDEX', 'template_filename'), ), + 'PRIMARY_KEY' => array('template_id', 'template_filename'), ); $schema_data['phpbb_styles_theme'] = array( @@ -1812,6 +1822,7 @@ function get_schema_struct() 'user_id' => array('INDEX', 'user_id'), 'notify_stat' => array('INDEX', 'notify_status'), ), + 'PRIMARY_KEY' => array('topic_id', 'user_id'), ); $schema_data['phpbb_user_group'] = array( @@ -1826,6 +1837,7 @@ function get_schema_struct() 'user_id' => array('INDEX', 'user_id'), 'group_leader' => array('INDEX', 'group_leader'), ), + 'PRIMARY_KEY' => array('group_id', 'user_id'), ); $schema_data['phpbb_users'] = array( diff --git a/phpBB/install/schemas/mssql_schema.sql b/phpBB/install/schemas/mssql_schema.sql index 0b2f8368de..5397480280 100644 --- a/phpBB/install/schemas/mssql_schema.sql +++ b/phpBB/install/schemas/mssql_schema.sql @@ -25,29 +25,28 @@ CREATE TABLE [phpbb_attachments] ( [filesize] [int] DEFAULT (0) NOT NULL , [filetime] [int] DEFAULT (0) NOT NULL , [thumbnail] [int] DEFAULT (0) NOT NULL -) ON [PRIMARY] -GO +)GO ALTER TABLE [phpbb_attachments] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_attachments] PRIMARY KEY CLUSTERED ( [attach_id] - ) ON [PRIMARY] + ) GO -CREATE INDEX [filetime] ON [phpbb_attachments]([filetime]) ON [PRIMARY] +CREATE INDEX [filetime] ON [phpbb_attachments]([filetime]) GO -CREATE INDEX [post_msg_id] ON [phpbb_attachments]([post_msg_id]) ON [PRIMARY] +CREATE INDEX [post_msg_id] ON [phpbb_attachments]([post_msg_id]) GO -CREATE INDEX [topic_id] ON [phpbb_attachments]([topic_id]) ON [PRIMARY] +CREATE INDEX [topic_id] ON [phpbb_attachments]([topic_id]) GO -CREATE INDEX [poster_id] ON [phpbb_attachments]([poster_id]) ON [PRIMARY] +CREATE INDEX [poster_id] ON [phpbb_attachments]([poster_id]) GO -CREATE INDEX [is_orphan] ON [phpbb_attachments]([is_orphan]) ON [PRIMARY] +CREATE INDEX [is_orphan] ON [phpbb_attachments]([is_orphan]) GO @@ -60,16 +59,26 @@ CREATE TABLE [phpbb_acl_groups] ( [auth_option_id] [int] DEFAULT (0) NOT NULL , [auth_role_id] [int] DEFAULT (0) NOT NULL , [auth_setting] [int] DEFAULT (0) NOT NULL -) ON [PRIMARY] +)GO + +ALTER TABLE [phpbb_acl_groups] WITH NOCHECK ADD + CONSTRAINT [PK_phpbb_acl_groups] PRIMARY KEY CLUSTERED + ( + [group_id], + [forum_id], + [auth_option_id], + [auth_role_id], + [auth_setting] + ) GO -CREATE INDEX [group_id] ON [phpbb_acl_groups]([group_id]) ON [PRIMARY] +CREATE INDEX [group_id] ON [phpbb_acl_groups]([group_id]) GO -CREATE INDEX [auth_opt_id] ON [phpbb_acl_groups]([auth_option_id]) ON [PRIMARY] +CREATE INDEX [auth_opt_id] ON [phpbb_acl_groups]([auth_option_id]) GO -CREATE INDEX [auth_role_id] ON [phpbb_acl_groups]([auth_role_id]) ON [PRIMARY] +CREATE INDEX [auth_role_id] ON [phpbb_acl_groups]([auth_role_id]) GO @@ -82,17 +91,16 @@ CREATE TABLE [phpbb_acl_options] ( [is_global] [int] DEFAULT (0) NOT NULL , [is_local] [int] DEFAULT (0) NOT NULL , [founder_only] [int] DEFAULT (0) NOT NULL -) ON [PRIMARY] -GO +)GO ALTER TABLE [phpbb_acl_options] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_acl_options] PRIMARY KEY CLUSTERED ( [auth_option_id] - ) ON [PRIMARY] + ) GO -CREATE UNIQUE INDEX [auth_option] ON [phpbb_acl_options]([auth_option]) ON [PRIMARY] +CREATE UNIQUE INDEX [auth_option] ON [phpbb_acl_options]([auth_option]) GO @@ -105,20 +113,19 @@ CREATE TABLE [phpbb_acl_roles] ( [role_description] [varchar] (4000) DEFAULT ('') NOT NULL , [role_type] [varchar] (10) DEFAULT ('') NOT NULL , [role_order] [int] DEFAULT (0) NOT NULL -) ON [PRIMARY] -GO +)GO ALTER TABLE [phpbb_acl_roles] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_acl_roles] PRIMARY KEY CLUSTERED ( [role_id] - ) ON [PRIMARY] + ) GO -CREATE INDEX [role_type] ON [phpbb_acl_roles]([role_type]) ON [PRIMARY] +CREATE INDEX [role_type] ON [phpbb_acl_roles]([role_type]) GO -CREATE INDEX [role_order] ON [phpbb_acl_roles]([role_order]) ON [PRIMARY] +CREATE INDEX [role_order] ON [phpbb_acl_roles]([role_order]) GO @@ -129,18 +136,17 @@ CREATE TABLE [phpbb_acl_roles_data] ( [role_id] [int] DEFAULT (0) NOT NULL , [auth_option_id] [int] DEFAULT (0) NOT NULL , [auth_setting] [int] DEFAULT (0) NOT NULL -) ON [PRIMARY] -GO +)GO ALTER TABLE [phpbb_acl_roles_data] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_acl_roles_data] PRIMARY KEY CLUSTERED ( [role_id], [auth_option_id] - ) ON [PRIMARY] + ) GO -CREATE INDEX [ath_op_id] ON [phpbb_acl_roles_data]([auth_option_id]) ON [PRIMARY] +CREATE INDEX [ath_op_id] ON [phpbb_acl_roles_data]([auth_option_id]) GO @@ -153,16 +159,26 @@ CREATE TABLE [phpbb_acl_users] ( [auth_option_id] [int] DEFAULT (0) NOT NULL , [auth_role_id] [int] DEFAULT (0) NOT NULL , [auth_setting] [int] DEFAULT (0) NOT NULL -) ON [PRIMARY] +)GO + +ALTER TABLE [phpbb_acl_users] WITH NOCHECK ADD + CONSTRAINT [PK_phpbb_acl_users] PRIMARY KEY CLUSTERED + ( + [user_id], + [forum_id], + [auth_option_id], + [auth_role_id], + [auth_setting] + ) GO -CREATE INDEX [user_id] ON [phpbb_acl_users]([user_id]) ON [PRIMARY] +CREATE INDEX [user_id] ON [phpbb_acl_users]([user_id]) GO -CREATE INDEX [auth_option_id] ON [phpbb_acl_users]([auth_option_id]) ON [PRIMARY] +CREATE INDEX [auth_option_id] ON [phpbb_acl_users]([auth_option_id]) GO -CREATE INDEX [auth_role_id] ON [phpbb_acl_users]([auth_role_id]) ON [PRIMARY] +CREATE INDEX [auth_role_id] ON [phpbb_acl_users]([auth_role_id]) GO @@ -179,26 +195,25 @@ CREATE TABLE [phpbb_banlist] ( [ban_exclude] [int] DEFAULT (0) NOT NULL , [ban_reason] [varchar] (255) DEFAULT ('') NOT NULL , [ban_give_reason] [varchar] (255) DEFAULT ('') NOT NULL -) ON [PRIMARY] -GO +)GO ALTER TABLE [phpbb_banlist] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_banlist] PRIMARY KEY CLUSTERED ( [ban_id] - ) ON [PRIMARY] + ) GO -CREATE INDEX [ban_end] ON [phpbb_banlist]([ban_end]) ON [PRIMARY] +CREATE INDEX [ban_end] ON [phpbb_banlist]([ban_end]) GO -CREATE INDEX [ban_user] ON [phpbb_banlist]([ban_userid], [ban_exclude]) ON [PRIMARY] +CREATE INDEX [ban_user] ON [phpbb_banlist]([ban_userid], [ban_exclude]) GO -CREATE INDEX [ban_email] ON [phpbb_banlist]([ban_email], [ban_exclude]) ON [PRIMARY] +CREATE INDEX [ban_email] ON [phpbb_banlist]([ban_email], [ban_exclude]) GO -CREATE INDEX [ban_ip] ON [phpbb_banlist]([ban_ip], [ban_exclude]) ON [PRIMARY] +CREATE INDEX [ban_ip] ON [phpbb_banlist]([ban_ip], [ban_exclude]) GO @@ -216,17 +231,16 @@ CREATE TABLE [phpbb_bbcodes] ( [first_pass_replace] [text] DEFAULT ('') NOT NULL , [second_pass_match] [text] DEFAULT ('') NOT NULL , [second_pass_replace] [text] DEFAULT ('') NOT NULL -) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] -GO +)GO ALTER TABLE [phpbb_bbcodes] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_bbcodes] PRIMARY KEY CLUSTERED ( [bbcode_id] - ) ON [PRIMARY] + ) GO -CREATE INDEX [display_on_post] ON [phpbb_bbcodes]([display_on_posting]) ON [PRIMARY] +CREATE INDEX [display_on_post] ON [phpbb_bbcodes]([display_on_posting]) GO @@ -236,15 +250,14 @@ GO CREATE TABLE [phpbb_bookmarks] ( [topic_id] [int] DEFAULT (0) NOT NULL , [user_id] [int] DEFAULT (0) NOT NULL -) ON [PRIMARY] -GO +)GO ALTER TABLE [phpbb_bookmarks] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_bookmarks] PRIMARY KEY CLUSTERED ( [topic_id], [user_id] - ) ON [PRIMARY] + ) GO @@ -258,17 +271,16 @@ CREATE TABLE [phpbb_bots] ( [user_id] [int] DEFAULT (0) NOT NULL , [bot_agent] [varchar] (255) DEFAULT ('') NOT NULL , [bot_ip] [varchar] (255) DEFAULT ('') NOT NULL -) ON [PRIMARY] -GO +)GO ALTER TABLE [phpbb_bots] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_bots] PRIMARY KEY CLUSTERED ( [bot_id] - ) ON [PRIMARY] + ) GO -CREATE INDEX [bot_active] ON [phpbb_bots]([bot_active]) ON [PRIMARY] +CREATE INDEX [bot_active] ON [phpbb_bots]([bot_active]) GO @@ -279,17 +291,16 @@ CREATE TABLE [phpbb_config] ( [config_name] [varchar] (255) DEFAULT ('') NOT NULL , [config_value] [varchar] (255) DEFAULT ('') NOT NULL , [is_dynamic] [int] DEFAULT (0) NOT NULL -) ON [PRIMARY] -GO +)GO ALTER TABLE [phpbb_config] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_config] PRIMARY KEY CLUSTERED ( [config_name] - ) ON [PRIMARY] + ) GO -CREATE INDEX [is_dynamic] ON [phpbb_config]([is_dynamic]) ON [PRIMARY] +CREATE INDEX [is_dynamic] ON [phpbb_config]([is_dynamic]) GO @@ -303,18 +314,17 @@ CREATE TABLE [phpbb_confirm] ( [code] [varchar] (8) DEFAULT ('') NOT NULL , [seed] [int] DEFAULT (0) NOT NULL , [attempts] [int] DEFAULT (0) NOT NULL -) ON [PRIMARY] -GO +)GO ALTER TABLE [phpbb_confirm] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_confirm] PRIMARY KEY CLUSTERED ( [session_id], [confirm_id] - ) ON [PRIMARY] + ) GO -CREATE INDEX [confirm_type] ON [phpbb_confirm]([confirm_type]) ON [PRIMARY] +CREATE INDEX [confirm_type] ON [phpbb_confirm]([confirm_type]) GO @@ -324,14 +334,13 @@ GO CREATE TABLE [phpbb_disallow] ( [disallow_id] [int] IDENTITY (1, 1) NOT NULL , [disallow_username] [varchar] (255) DEFAULT ('') NOT NULL -) ON [PRIMARY] -GO +)GO ALTER TABLE [phpbb_disallow] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_disallow] PRIMARY KEY CLUSTERED ( [disallow_id] - ) ON [PRIMARY] + ) GO @@ -346,17 +355,16 @@ CREATE TABLE [phpbb_drafts] ( [save_time] [int] DEFAULT (0) NOT NULL , [draft_subject] [varchar] (255) DEFAULT ('') NOT NULL , [draft_message] [text] DEFAULT ('') NOT NULL -) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] -GO +)GO ALTER TABLE [phpbb_drafts] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_drafts] PRIMARY KEY CLUSTERED ( [draft_id] - ) ON [PRIMARY] + ) GO -CREATE INDEX [save_time] ON [phpbb_drafts]([save_time]) ON [PRIMARY] +CREATE INDEX [save_time] ON [phpbb_drafts]([save_time]) GO @@ -367,14 +375,13 @@ CREATE TABLE [phpbb_extensions] ( [extension_id] [int] IDENTITY (1, 1) NOT NULL , [group_id] [int] DEFAULT (0) NOT NULL , [extension] [varchar] (100) DEFAULT ('') NOT NULL -) ON [PRIMARY] -GO +)GO ALTER TABLE [phpbb_extensions] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_extensions] PRIMARY KEY CLUSTERED ( [extension_id] - ) ON [PRIMARY] + ) GO @@ -391,14 +398,13 @@ CREATE TABLE [phpbb_extension_groups] ( [max_filesize] [int] DEFAULT (0) NOT NULL , [allowed_forums] [varchar] (8000) DEFAULT ('') NOT NULL , [allow_in_pm] [int] DEFAULT (0) NOT NULL -) ON [PRIMARY] -GO +)GO ALTER TABLE [phpbb_extension_groups] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_extension_groups] PRIMARY KEY CLUSTERED ( [group_id] - ) ON [PRIMARY] + ) GO @@ -448,20 +454,19 @@ CREATE TABLE [phpbb_forums] ( [prune_days] [int] DEFAULT (0) NOT NULL , [prune_viewed] [int] DEFAULT (0) NOT NULL , [prune_freq] [int] DEFAULT (0) NOT NULL -) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] -GO +)GO ALTER TABLE [phpbb_forums] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_forums] PRIMARY KEY CLUSTERED ( [forum_id] - ) ON [PRIMARY] + ) GO -CREATE INDEX [left_right_id] ON [phpbb_forums]([left_id], [right_id]) ON [PRIMARY] +CREATE INDEX [left_right_id] ON [phpbb_forums]([left_id], [right_id]) GO -CREATE INDEX [forum_lastpost_id] ON [phpbb_forums]([forum_last_post_id]) ON [PRIMARY] +CREATE INDEX [forum_lastpost_id] ON [phpbb_forums]([forum_last_post_id]) GO @@ -472,8 +477,7 @@ CREATE TABLE [phpbb_forums_access] ( [forum_id] [int] DEFAULT (0) NOT NULL , [user_id] [int] DEFAULT (0) NOT NULL , [session_id] [char] (32) DEFAULT ('') NOT NULL -) ON [PRIMARY] -GO +)GO ALTER TABLE [phpbb_forums_access] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_forums_access] PRIMARY KEY CLUSTERED @@ -481,7 +485,7 @@ ALTER TABLE [phpbb_forums_access] WITH NOCHECK ADD [forum_id], [user_id], [session_id] - ) ON [PRIMARY] + ) GO @@ -492,15 +496,14 @@ CREATE TABLE [phpbb_forums_track] ( [user_id] [int] DEFAULT (0) NOT NULL , [forum_id] [int] DEFAULT (0) NOT NULL , [mark_time] [int] DEFAULT (0) NOT NULL -) ON [PRIMARY] -GO +)GO ALTER TABLE [phpbb_forums_track] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_forums_track] PRIMARY KEY CLUSTERED ( [user_id], [forum_id] - ) ON [PRIMARY] + ) GO @@ -511,16 +514,23 @@ CREATE TABLE [phpbb_forums_watch] ( [forum_id] [int] DEFAULT (0) NOT NULL , [user_id] [int] DEFAULT (0) NOT NULL , [notify_status] [int] DEFAULT (0) NOT NULL -) ON [PRIMARY] +)GO + +ALTER TABLE [phpbb_forums_watch] WITH NOCHECK ADD + CONSTRAINT [PK_phpbb_forums_watch] PRIMARY KEY CLUSTERED + ( + [forum_id], + [user_id] + ) GO -CREATE INDEX [forum_id] ON [phpbb_forums_watch]([forum_id]) ON [PRIMARY] +CREATE INDEX [forum_id] ON [phpbb_forums_watch]([forum_id]) GO -CREATE INDEX [user_id] ON [phpbb_forums_watch]([user_id]) ON [PRIMARY] +CREATE INDEX [user_id] ON [phpbb_forums_watch]([user_id]) GO -CREATE INDEX [notify_stat] ON [phpbb_forums_watch]([notify_status]) ON [PRIMARY] +CREATE INDEX [notify_stat] ON [phpbb_forums_watch]([notify_status]) GO @@ -549,17 +559,16 @@ CREATE TABLE [phpbb_groups] ( [group_message_limit] [int] DEFAULT (0) NOT NULL , [group_max_recipients] [int] DEFAULT (0) NOT NULL , [group_legend] [int] DEFAULT (1) NOT NULL -) ON [PRIMARY] -GO +)GO ALTER TABLE [phpbb_groups] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_groups] PRIMARY KEY CLUSTERED ( [group_id] - ) ON [PRIMARY] + ) GO -CREATE INDEX [group_legend_name] ON [phpbb_groups]([group_legend], [group_name]) ON [PRIMARY] +CREATE INDEX [group_legend_name] ON [phpbb_groups]([group_legend], [group_name]) GO @@ -573,17 +582,16 @@ CREATE TABLE [phpbb_icons] ( [icons_height] [int] DEFAULT (0) NOT NULL , [icons_order] [int] DEFAULT (0) NOT NULL , [display_on_posting] [int] DEFAULT (1) NOT NULL -) ON [PRIMARY] -GO +)GO ALTER TABLE [phpbb_icons] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_icons] PRIMARY KEY CLUSTERED ( [icons_id] - ) ON [PRIMARY] + ) GO -CREATE INDEX [display_on_posting] ON [phpbb_icons]([display_on_posting]) ON [PRIMARY] +CREATE INDEX [display_on_posting] ON [phpbb_icons]([display_on_posting]) GO @@ -597,17 +605,16 @@ CREATE TABLE [phpbb_lang] ( [lang_english_name] [varchar] (100) DEFAULT ('') NOT NULL , [lang_local_name] [varchar] (255) DEFAULT ('') NOT NULL , [lang_author] [varchar] (255) DEFAULT ('') NOT NULL -) ON [PRIMARY] -GO +)GO ALTER TABLE [phpbb_lang] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_lang] PRIMARY KEY CLUSTERED ( [lang_id] - ) ON [PRIMARY] + ) GO -CREATE INDEX [lang_iso] ON [phpbb_lang]([lang_iso]) ON [PRIMARY] +CREATE INDEX [lang_iso] ON [phpbb_lang]([lang_iso]) GO @@ -625,29 +632,28 @@ CREATE TABLE [phpbb_log] ( [log_time] [int] DEFAULT (0) NOT NULL , [log_operation] [varchar] (4000) DEFAULT ('') NOT NULL , [log_data] [text] DEFAULT ('') NOT NULL -) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] -GO +)GO ALTER TABLE [phpbb_log] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_log] PRIMARY KEY CLUSTERED ( [log_id] - ) ON [PRIMARY] + ) GO -CREATE INDEX [log_type] ON [phpbb_log]([log_type]) ON [PRIMARY] +CREATE INDEX [log_type] ON [phpbb_log]([log_type]) GO -CREATE INDEX [forum_id] ON [phpbb_log]([forum_id]) ON [PRIMARY] +CREATE INDEX [forum_id] ON [phpbb_log]([forum_id]) GO -CREATE INDEX [topic_id] ON [phpbb_log]([topic_id]) ON [PRIMARY] +CREATE INDEX [topic_id] ON [phpbb_log]([topic_id]) GO -CREATE INDEX [reportee_id] ON [phpbb_log]([reportee_id]) ON [PRIMARY] +CREATE INDEX [reportee_id] ON [phpbb_log]([reportee_id]) GO -CREATE INDEX [user_id] ON [phpbb_log]([user_id]) ON [PRIMARY] +CREATE INDEX [user_id] ON [phpbb_log]([user_id]) GO @@ -662,19 +668,18 @@ CREATE TABLE [phpbb_login_attempts] ( [user_id] [int] DEFAULT (0) NOT NULL , [username] [varchar] (255) DEFAULT (0) NOT NULL , [username_clean] [varchar] (255) DEFAULT (0) NOT NULL -) ON [PRIMARY] +)GO + +CREATE INDEX [att_ip] ON [phpbb_login_attempts]([attempt_ip], [attempt_time]) GO -CREATE INDEX [att_ip] ON [phpbb_login_attempts]([attempt_ip], [attempt_time]) ON [PRIMARY] +CREATE INDEX [att_for] ON [phpbb_login_attempts]([attempt_forwarded_for], [attempt_time]) GO -CREATE INDEX [att_for] ON [phpbb_login_attempts]([attempt_forwarded_for], [attempt_time]) ON [PRIMARY] +CREATE INDEX [att_time] ON [phpbb_login_attempts]([attempt_time]) GO -CREATE INDEX [att_time] ON [phpbb_login_attempts]([attempt_time]) ON [PRIMARY] -GO - -CREATE INDEX [user_id] ON [phpbb_login_attempts]([user_id]) ON [PRIMARY] +CREATE INDEX [user_id] ON [phpbb_login_attempts]([user_id]) GO @@ -688,13 +693,21 @@ CREATE TABLE [phpbb_moderator_cache] ( [group_id] [int] DEFAULT (0) NOT NULL , [group_name] [varchar] (255) DEFAULT ('') NOT NULL , [display_on_index] [int] DEFAULT (1) NOT NULL -) ON [PRIMARY] +)GO + +ALTER TABLE [phpbb_moderator_cache] WITH NOCHECK ADD + CONSTRAINT [PK_phpbb_moderator_cache] PRIMARY KEY CLUSTERED + ( + [forum_id], + [user_id], + [group_id] + ) GO -CREATE INDEX [disp_idx] ON [phpbb_moderator_cache]([display_on_index]) ON [PRIMARY] +CREATE INDEX [disp_idx] ON [phpbb_moderator_cache]([display_on_index]) GO -CREATE INDEX [forum_id] ON [phpbb_moderator_cache]([forum_id]) ON [PRIMARY] +CREATE INDEX [forum_id] ON [phpbb_moderator_cache]([forum_id]) GO @@ -713,23 +726,22 @@ CREATE TABLE [phpbb_modules] ( [module_langname] [varchar] (255) DEFAULT ('') NOT NULL , [module_mode] [varchar] (255) DEFAULT ('') NOT NULL , [module_auth] [varchar] (255) DEFAULT ('') NOT NULL -) ON [PRIMARY] -GO +)GO ALTER TABLE [phpbb_modules] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_modules] PRIMARY KEY CLUSTERED ( [module_id] - ) ON [PRIMARY] + ) GO -CREATE INDEX [left_right_id] ON [phpbb_modules]([left_id], [right_id]) ON [PRIMARY] +CREATE INDEX [left_right_id] ON [phpbb_modules]([left_id], [right_id]) GO -CREATE INDEX [module_enabled] ON [phpbb_modules]([module_enabled]) ON [PRIMARY] +CREATE INDEX [module_enabled] ON [phpbb_modules]([module_enabled]) GO -CREATE INDEX [class_left_id] ON [phpbb_modules]([module_class], [left_id]) ON [PRIMARY] +CREATE INDEX [class_left_id] ON [phpbb_modules]([module_class], [left_id]) GO @@ -741,13 +753,20 @@ CREATE TABLE [phpbb_poll_options] ( [topic_id] [int] DEFAULT (0) NOT NULL , [poll_option_text] [varchar] (4000) DEFAULT ('') NOT NULL , [poll_option_total] [int] DEFAULT (0) NOT NULL -) ON [PRIMARY] +)GO + +ALTER TABLE [phpbb_poll_options] WITH NOCHECK ADD + CONSTRAINT [PK_phpbb_poll_options] PRIMARY KEY CLUSTERED + ( + [topic_id], + [poll_option_id] + ) GO -CREATE INDEX [poll_opt_id] ON [phpbb_poll_options]([poll_option_id]) ON [PRIMARY] +CREATE INDEX [poll_opt_id] ON [phpbb_poll_options]([poll_option_id]) GO -CREATE INDEX [topic_id] ON [phpbb_poll_options]([topic_id]) ON [PRIMARY] +CREATE INDEX [topic_id] ON [phpbb_poll_options]([topic_id]) GO @@ -759,16 +778,24 @@ CREATE TABLE [phpbb_poll_votes] ( [poll_option_id] [int] DEFAULT (0) NOT NULL , [vote_user_id] [int] DEFAULT (0) NOT NULL , [vote_user_ip] [varchar] (40) DEFAULT ('') NOT NULL -) ON [PRIMARY] +)GO + +ALTER TABLE [phpbb_poll_votes] WITH NOCHECK ADD + CONSTRAINT [PK_phpbb_poll_votes] PRIMARY KEY CLUSTERED + ( + [topic_id], + [poll_option_id], + [vote_user_id] + ) GO -CREATE INDEX [topic_id] ON [phpbb_poll_votes]([topic_id]) ON [PRIMARY] +CREATE INDEX [topic_id] ON [phpbb_poll_votes]([topic_id]) GO -CREATE INDEX [vote_user_id] ON [phpbb_poll_votes]([vote_user_id]) ON [PRIMARY] +CREATE INDEX [vote_user_id] ON [phpbb_poll_votes]([vote_user_id]) GO -CREATE INDEX [vote_user_ip] ON [phpbb_poll_votes]([vote_user_ip]) ON [PRIMARY] +CREATE INDEX [vote_user_ip] ON [phpbb_poll_votes]([vote_user_ip]) GO @@ -802,35 +829,34 @@ CREATE TABLE [phpbb_posts] ( [post_edit_user] [int] DEFAULT (0) NOT NULL , [post_edit_count] [int] DEFAULT (0) NOT NULL , [post_edit_locked] [int] DEFAULT (0) NOT NULL -) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] -GO +)GO ALTER TABLE [phpbb_posts] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_posts] PRIMARY KEY CLUSTERED ( [post_id] - ) ON [PRIMARY] + ) GO -CREATE INDEX [forum_id] ON [phpbb_posts]([forum_id]) ON [PRIMARY] +CREATE INDEX [forum_id] ON [phpbb_posts]([forum_id]) GO -CREATE INDEX [topic_id] ON [phpbb_posts]([topic_id]) ON [PRIMARY] +CREATE INDEX [topic_id] ON [phpbb_posts]([topic_id]) GO -CREATE INDEX [poster_ip] ON [phpbb_posts]([poster_ip]) ON [PRIMARY] +CREATE INDEX [poster_ip] ON [phpbb_posts]([poster_ip]) GO -CREATE INDEX [poster_id] ON [phpbb_posts]([poster_id]) ON [PRIMARY] +CREATE INDEX [poster_id] ON [phpbb_posts]([poster_id]) GO -CREATE INDEX [post_approved] ON [phpbb_posts]([post_approved]) ON [PRIMARY] +CREATE INDEX [post_approved] ON [phpbb_posts]([post_approved]) GO -CREATE INDEX [post_username] ON [phpbb_posts]([post_username]) ON [PRIMARY] +CREATE INDEX [post_username] ON [phpbb_posts]([post_username]) GO -CREATE INDEX [tid_post_time] ON [phpbb_posts]([topic_id], [post_time]) ON [PRIMARY] +CREATE INDEX [tid_post_time] ON [phpbb_posts]([topic_id], [post_time]) GO @@ -860,26 +886,25 @@ CREATE TABLE [phpbb_privmsgs] ( [to_address] [varchar] (4000) DEFAULT ('') NOT NULL , [bcc_address] [varchar] (4000) DEFAULT ('') NOT NULL , [message_reported] [int] DEFAULT (0) NOT NULL -) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] -GO +)GO ALTER TABLE [phpbb_privmsgs] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_privmsgs] PRIMARY KEY CLUSTERED ( [msg_id] - ) ON [PRIMARY] + ) GO -CREATE INDEX [author_ip] ON [phpbb_privmsgs]([author_ip]) ON [PRIMARY] +CREATE INDEX [author_ip] ON [phpbb_privmsgs]([author_ip]) GO -CREATE INDEX [message_time] ON [phpbb_privmsgs]([message_time]) ON [PRIMARY] +CREATE INDEX [message_time] ON [phpbb_privmsgs]([message_time]) GO -CREATE INDEX [author_id] ON [phpbb_privmsgs]([author_id]) ON [PRIMARY] +CREATE INDEX [author_id] ON [phpbb_privmsgs]([author_id]) GO -CREATE INDEX [root_level] ON [phpbb_privmsgs]([root_level]) ON [PRIMARY] +CREATE INDEX [root_level] ON [phpbb_privmsgs]([root_level]) GO @@ -891,17 +916,16 @@ CREATE TABLE [phpbb_privmsgs_folder] ( [user_id] [int] DEFAULT (0) NOT NULL , [folder_name] [varchar] (255) DEFAULT ('') NOT NULL , [pm_count] [int] DEFAULT (0) NOT NULL -) ON [PRIMARY] -GO +)GO ALTER TABLE [phpbb_privmsgs_folder] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_privmsgs_folder] PRIMARY KEY CLUSTERED ( [folder_id] - ) ON [PRIMARY] + ) GO -CREATE INDEX [user_id] ON [phpbb_privmsgs_folder]([user_id]) ON [PRIMARY] +CREATE INDEX [user_id] ON [phpbb_privmsgs_folder]([user_id]) GO @@ -918,17 +942,16 @@ CREATE TABLE [phpbb_privmsgs_rules] ( [rule_group_id] [int] DEFAULT (0) NOT NULL , [rule_action] [int] DEFAULT (0) NOT NULL , [rule_folder_id] [int] DEFAULT (0) NOT NULL -) ON [PRIMARY] -GO +)GO ALTER TABLE [phpbb_privmsgs_rules] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_privmsgs_rules] PRIMARY KEY CLUSTERED ( [rule_id] - ) ON [PRIMARY] + ) GO -CREATE INDEX [user_id] ON [phpbb_privmsgs_rules]([user_id]) ON [PRIMARY] +CREATE INDEX [user_id] ON [phpbb_privmsgs_rules]([user_id]) GO @@ -946,16 +969,24 @@ CREATE TABLE [phpbb_privmsgs_to] ( [pm_marked] [int] DEFAULT (0) NOT NULL , [pm_forwarded] [int] DEFAULT (0) NOT NULL , [folder_id] [int] DEFAULT (0) NOT NULL -) ON [PRIMARY] +)GO + +ALTER TABLE [phpbb_privmsgs_to] WITH NOCHECK ADD + CONSTRAINT [PK_phpbb_privmsgs_to] PRIMARY KEY CLUSTERED + ( + [msg_id], + [user_id], + [author_id] + ) GO -CREATE INDEX [msg_id] ON [phpbb_privmsgs_to]([msg_id]) ON [PRIMARY] +CREATE INDEX [msg_id] ON [phpbb_privmsgs_to]([msg_id]) GO -CREATE INDEX [author_id] ON [phpbb_privmsgs_to]([author_id]) ON [PRIMARY] +CREATE INDEX [author_id] ON [phpbb_privmsgs_to]([author_id]) GO -CREATE INDEX [usr_flder_id] ON [phpbb_privmsgs_to]([user_id], [folder_id]) ON [PRIMARY] +CREATE INDEX [usr_flder_id] ON [phpbb_privmsgs_to]([user_id], [folder_id]) GO @@ -982,20 +1013,19 @@ CREATE TABLE [phpbb_profile_fields] ( [field_no_view] [int] DEFAULT (0) NOT NULL , [field_active] [int] DEFAULT (0) NOT NULL , [field_order] [int] DEFAULT (0) NOT NULL -) ON [PRIMARY] -GO +)GO ALTER TABLE [phpbb_profile_fields] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_profile_fields] PRIMARY KEY CLUSTERED ( [field_id] - ) ON [PRIMARY] + ) GO -CREATE INDEX [fld_type] ON [phpbb_profile_fields]([field_type]) ON [PRIMARY] +CREATE INDEX [fld_type] ON [phpbb_profile_fields]([field_type]) GO -CREATE INDEX [fld_ordr] ON [phpbb_profile_fields]([field_order]) ON [PRIMARY] +CREATE INDEX [fld_ordr] ON [phpbb_profile_fields]([field_order]) GO @@ -1004,14 +1034,13 @@ GO */ CREATE TABLE [phpbb_profile_fields_data] ( [user_id] [int] DEFAULT (0) NOT NULL -) ON [PRIMARY] -GO +)GO ALTER TABLE [phpbb_profile_fields_data] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_profile_fields_data] PRIMARY KEY CLUSTERED ( [user_id] - ) ON [PRIMARY] + ) GO @@ -1024,8 +1053,7 @@ CREATE TABLE [phpbb_profile_fields_lang] ( [option_id] [int] DEFAULT (0) NOT NULL , [field_type] [int] DEFAULT (0) NOT NULL , [lang_value] [varchar] (255) DEFAULT ('') NOT NULL -) ON [PRIMARY] -GO +)GO ALTER TABLE [phpbb_profile_fields_lang] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_profile_fields_lang] PRIMARY KEY CLUSTERED @@ -1033,7 +1061,7 @@ ALTER TABLE [phpbb_profile_fields_lang] WITH NOCHECK ADD [field_id], [lang_id], [option_id] - ) ON [PRIMARY] + ) GO @@ -1046,15 +1074,14 @@ CREATE TABLE [phpbb_profile_lang] ( [lang_name] [varchar] (255) DEFAULT ('') NOT NULL , [lang_explain] [varchar] (4000) DEFAULT ('') NOT NULL , [lang_default_value] [varchar] (255) DEFAULT ('') NOT NULL -) ON [PRIMARY] -GO +)GO ALTER TABLE [phpbb_profile_lang] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_profile_lang] PRIMARY KEY CLUSTERED ( [field_id], [lang_id] - ) ON [PRIMARY] + ) GO @@ -1067,14 +1094,13 @@ CREATE TABLE [phpbb_ranks] ( [rank_min] [int] DEFAULT (0) NOT NULL , [rank_special] [int] DEFAULT (0) NOT NULL , [rank_image] [varchar] (255) DEFAULT ('') NOT NULL -) ON [PRIMARY] -GO +)GO ALTER TABLE [phpbb_ranks] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_ranks] PRIMARY KEY CLUSTERED ( [rank_id] - ) ON [PRIMARY] + ) GO @@ -1091,20 +1117,19 @@ CREATE TABLE [phpbb_reports] ( [report_closed] [int] DEFAULT (0) NOT NULL , [report_time] [int] DEFAULT (0) NOT NULL , [report_text] [text] DEFAULT ('') NOT NULL -) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] -GO +)GO ALTER TABLE [phpbb_reports] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_reports] PRIMARY KEY CLUSTERED ( [report_id] - ) ON [PRIMARY] + ) GO -CREATE INDEX [post_id] ON [phpbb_reports]([post_id]) ON [PRIMARY] +CREATE INDEX [post_id] ON [phpbb_reports]([post_id]) GO -CREATE INDEX [pm_id] ON [phpbb_reports]([pm_id]) ON [PRIMARY] +CREATE INDEX [pm_id] ON [phpbb_reports]([pm_id]) GO @@ -1116,14 +1141,13 @@ CREATE TABLE [phpbb_reports_reasons] ( [reason_title] [varchar] (255) DEFAULT ('') NOT NULL , [reason_description] [text] DEFAULT ('') NOT NULL , [reason_order] [int] DEFAULT (0) NOT NULL -) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] -GO +)GO ALTER TABLE [phpbb_reports_reasons] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_reports_reasons] PRIMARY KEY CLUSTERED ( [reason_id] - ) ON [PRIMARY] + ) GO @@ -1135,14 +1159,13 @@ CREATE TABLE [phpbb_search_results] ( [search_time] [int] DEFAULT (0) NOT NULL , [search_keywords] [text] DEFAULT ('') NOT NULL , [search_authors] [text] DEFAULT ('') NOT NULL -) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] -GO +)GO ALTER TABLE [phpbb_search_results] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_search_results] PRIMARY KEY CLUSTERED ( [search_key] - ) ON [PRIMARY] + ) GO @@ -1154,20 +1177,19 @@ CREATE TABLE [phpbb_search_wordlist] ( [word_text] [varchar] (255) DEFAULT ('') NOT NULL , [word_common] [int] DEFAULT (0) NOT NULL , [word_count] [int] DEFAULT (0) NOT NULL -) ON [PRIMARY] -GO +)GO ALTER TABLE [phpbb_search_wordlist] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_search_wordlist] PRIMARY KEY CLUSTERED ( [word_id] - ) ON [PRIMARY] + ) GO -CREATE UNIQUE INDEX [wrd_txt] ON [phpbb_search_wordlist]([word_text]) ON [PRIMARY] +CREATE UNIQUE INDEX [wrd_txt] ON [phpbb_search_wordlist]([word_text]) GO -CREATE INDEX [wrd_cnt] ON [phpbb_search_wordlist]([word_count]) ON [PRIMARY] +CREATE INDEX [wrd_cnt] ON [phpbb_search_wordlist]([word_count]) GO @@ -1178,16 +1200,23 @@ CREATE TABLE [phpbb_search_wordmatch] ( [post_id] [int] DEFAULT (0) NOT NULL , [word_id] [int] DEFAULT (0) NOT NULL , [title_match] [int] DEFAULT (0) NOT NULL -) ON [PRIMARY] +)GO + +ALTER TABLE [phpbb_search_wordmatch] WITH NOCHECK ADD + CONSTRAINT [PK_phpbb_search_wordmatch] PRIMARY KEY CLUSTERED + ( + [post_id], + [word_id] + ) GO -CREATE UNIQUE INDEX [unq_mtch] ON [phpbb_search_wordmatch]([word_id], [post_id], [title_match]) ON [PRIMARY] +CREATE UNIQUE INDEX [unq_mtch] ON [phpbb_search_wordmatch]([word_id], [post_id], [title_match]) GO -CREATE INDEX [word_id] ON [phpbb_search_wordmatch]([word_id]) ON [PRIMARY] +CREATE INDEX [word_id] ON [phpbb_search_wordmatch]([word_id]) GO -CREATE INDEX [post_id] ON [phpbb_search_wordmatch]([post_id]) ON [PRIMARY] +CREATE INDEX [post_id] ON [phpbb_search_wordmatch]([post_id]) GO @@ -1208,23 +1237,22 @@ CREATE TABLE [phpbb_sessions] ( [session_viewonline] [int] DEFAULT (1) NOT NULL , [session_autologin] [int] DEFAULT (0) NOT NULL , [session_admin] [int] DEFAULT (0) NOT NULL -) ON [PRIMARY] -GO +)GO ALTER TABLE [phpbb_sessions] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_sessions] PRIMARY KEY CLUSTERED ( [session_id] - ) ON [PRIMARY] + ) GO -CREATE INDEX [session_time] ON [phpbb_sessions]([session_time]) ON [PRIMARY] +CREATE INDEX [session_time] ON [phpbb_sessions]([session_time]) GO -CREATE INDEX [session_user_id] ON [phpbb_sessions]([session_user_id]) ON [PRIMARY] +CREATE INDEX [session_user_id] ON [phpbb_sessions]([session_user_id]) GO -CREATE INDEX [session_fid] ON [phpbb_sessions]([session_forum_id]) ON [PRIMARY] +CREATE INDEX [session_fid] ON [phpbb_sessions]([session_forum_id]) GO @@ -1236,18 +1264,17 @@ CREATE TABLE [phpbb_sessions_keys] ( [user_id] [int] DEFAULT (0) NOT NULL , [last_ip] [varchar] (40) DEFAULT ('') NOT NULL , [last_login] [int] DEFAULT (0) NOT NULL -) ON [PRIMARY] -GO +)GO ALTER TABLE [phpbb_sessions_keys] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_sessions_keys] PRIMARY KEY CLUSTERED ( [key_id], [user_id] - ) ON [PRIMARY] + ) GO -CREATE INDEX [last_login] ON [phpbb_sessions_keys]([last_login]) ON [PRIMARY] +CREATE INDEX [last_login] ON [phpbb_sessions_keys]([last_login]) GO @@ -1259,14 +1286,13 @@ CREATE TABLE [phpbb_sitelist] ( [site_ip] [varchar] (40) DEFAULT ('') NOT NULL , [site_hostname] [varchar] (255) DEFAULT ('') NOT NULL , [ip_exclude] [int] DEFAULT (0) NOT NULL -) ON [PRIMARY] -GO +)GO ALTER TABLE [phpbb_sitelist] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_sitelist] PRIMARY KEY CLUSTERED ( [site_id] - ) ON [PRIMARY] + ) GO @@ -1282,17 +1308,16 @@ CREATE TABLE [phpbb_smilies] ( [smiley_height] [int] DEFAULT (0) NOT NULL , [smiley_order] [int] DEFAULT (0) NOT NULL , [display_on_posting] [int] DEFAULT (1) NOT NULL -) ON [PRIMARY] -GO +)GO ALTER TABLE [phpbb_smilies] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_smilies] PRIMARY KEY CLUSTERED ( [smiley_id] - ) ON [PRIMARY] + ) GO -CREATE INDEX [display_on_post] ON [phpbb_smilies]([display_on_posting]) ON [PRIMARY] +CREATE INDEX [display_on_post] ON [phpbb_smilies]([display_on_posting]) GO @@ -1307,26 +1332,25 @@ CREATE TABLE [phpbb_styles] ( [template_id] [int] DEFAULT (0) NOT NULL , [theme_id] [int] DEFAULT (0) NOT NULL , [imageset_id] [int] DEFAULT (0) NOT NULL -) ON [PRIMARY] -GO +)GO ALTER TABLE [phpbb_styles] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_styles] PRIMARY KEY CLUSTERED ( [style_id] - ) ON [PRIMARY] + ) GO -CREATE UNIQUE INDEX [style_name] ON [phpbb_styles]([style_name]) ON [PRIMARY] +CREATE UNIQUE INDEX [style_name] ON [phpbb_styles]([style_name]) GO -CREATE INDEX [template_id] ON [phpbb_styles]([template_id]) ON [PRIMARY] +CREATE INDEX [template_id] ON [phpbb_styles]([template_id]) GO -CREATE INDEX [theme_id] ON [phpbb_styles]([theme_id]) ON [PRIMARY] +CREATE INDEX [theme_id] ON [phpbb_styles]([theme_id]) GO -CREATE INDEX [imageset_id] ON [phpbb_styles]([imageset_id]) ON [PRIMARY] +CREATE INDEX [imageset_id] ON [phpbb_styles]([imageset_id]) GO @@ -1342,17 +1366,16 @@ CREATE TABLE [phpbb_styles_template] ( [template_storedb] [int] DEFAULT (0) NOT NULL , [template_inherits_id] [int] DEFAULT (0) NOT NULL , [template_inherit_path] [varchar] (255) DEFAULT ('') NOT NULL -) ON [PRIMARY] -GO +)GO ALTER TABLE [phpbb_styles_template] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_styles_template] PRIMARY KEY CLUSTERED ( [template_id] - ) ON [PRIMARY] + ) GO -CREATE UNIQUE INDEX [tmplte_nm] ON [phpbb_styles_template]([template_name]) ON [PRIMARY] +CREATE UNIQUE INDEX [tmplte_nm] ON [phpbb_styles_template]([template_name]) GO @@ -1365,13 +1388,20 @@ CREATE TABLE [phpbb_styles_template_data] ( [template_included] [varchar] (8000) DEFAULT ('') NOT NULL , [template_mtime] [int] DEFAULT (0) NOT NULL , [template_data] [text] DEFAULT ('') NOT NULL -) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] +)GO + +ALTER TABLE [phpbb_styles_template_data] WITH NOCHECK ADD + CONSTRAINT [PK_phpbb_styles_template_data] PRIMARY KEY CLUSTERED + ( + [template_id], + [template_filename] + ) GO -CREATE INDEX [tid] ON [phpbb_styles_template_data]([template_id]) ON [PRIMARY] +CREATE INDEX [tid] ON [phpbb_styles_template_data]([template_id]) GO -CREATE INDEX [tfn] ON [phpbb_styles_template_data]([template_filename]) ON [PRIMARY] +CREATE INDEX [tfn] ON [phpbb_styles_template_data]([template_filename]) GO @@ -1386,17 +1416,16 @@ CREATE TABLE [phpbb_styles_theme] ( [theme_storedb] [int] DEFAULT (0) NOT NULL , [theme_mtime] [int] DEFAULT (0) NOT NULL , [theme_data] [text] DEFAULT ('') NOT NULL -) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] -GO +)GO ALTER TABLE [phpbb_styles_theme] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_styles_theme] PRIMARY KEY CLUSTERED ( [theme_id] - ) ON [PRIMARY] + ) GO -CREATE UNIQUE INDEX [theme_name] ON [phpbb_styles_theme]([theme_name]) ON [PRIMARY] +CREATE UNIQUE INDEX [theme_name] ON [phpbb_styles_theme]([theme_name]) GO @@ -1408,17 +1437,16 @@ CREATE TABLE [phpbb_styles_imageset] ( [imageset_name] [varchar] (255) DEFAULT ('') NOT NULL , [imageset_copyright] [varchar] (255) DEFAULT ('') NOT NULL , [imageset_path] [varchar] (100) DEFAULT ('') NOT NULL -) ON [PRIMARY] -GO +)GO ALTER TABLE [phpbb_styles_imageset] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_styles_imageset] PRIMARY KEY CLUSTERED ( [imageset_id] - ) ON [PRIMARY] + ) GO -CREATE UNIQUE INDEX [imgset_nm] ON [phpbb_styles_imageset]([imageset_name]) ON [PRIMARY] +CREATE UNIQUE INDEX [imgset_nm] ON [phpbb_styles_imageset]([imageset_name]) GO @@ -1433,17 +1461,16 @@ CREATE TABLE [phpbb_styles_imageset_data] ( [image_height] [int] DEFAULT (0) NOT NULL , [image_width] [int] DEFAULT (0) NOT NULL , [imageset_id] [int] DEFAULT (0) NOT NULL -) ON [PRIMARY] -GO +)GO ALTER TABLE [phpbb_styles_imageset_data] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_styles_imageset_data] PRIMARY KEY CLUSTERED ( [image_id] - ) ON [PRIMARY] + ) GO -CREATE INDEX [i_d] ON [phpbb_styles_imageset_data]([imageset_id]) ON [PRIMARY] +CREATE INDEX [i_d] ON [phpbb_styles_imageset_data]([imageset_id]) GO @@ -1485,32 +1512,31 @@ CREATE TABLE [phpbb_topics] ( [poll_max_options] [int] DEFAULT (1) NOT NULL , [poll_last_vote] [int] DEFAULT (0) NOT NULL , [poll_vote_change] [int] DEFAULT (0) NOT NULL -) ON [PRIMARY] -GO +)GO ALTER TABLE [phpbb_topics] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_topics] PRIMARY KEY CLUSTERED ( [topic_id] - ) ON [PRIMARY] + ) GO -CREATE INDEX [forum_id] ON [phpbb_topics]([forum_id]) ON [PRIMARY] +CREATE INDEX [forum_id] ON [phpbb_topics]([forum_id]) GO -CREATE INDEX [forum_id_type] ON [phpbb_topics]([forum_id], [topic_type]) ON [PRIMARY] +CREATE INDEX [forum_id_type] ON [phpbb_topics]([forum_id], [topic_type]) GO -CREATE INDEX [last_post_time] ON [phpbb_topics]([topic_last_post_time]) ON [PRIMARY] +CREATE INDEX [last_post_time] ON [phpbb_topics]([topic_last_post_time]) GO -CREATE INDEX [topic_approved] ON [phpbb_topics]([topic_approved]) ON [PRIMARY] +CREATE INDEX [topic_approved] ON [phpbb_topics]([topic_approved]) GO -CREATE INDEX [forum_appr_last] ON [phpbb_topics]([forum_id], [topic_approved], [topic_last_post_id]) ON [PRIMARY] +CREATE INDEX [forum_appr_last] ON [phpbb_topics]([forum_id], [topic_approved], [topic_last_post_id]) GO -CREATE INDEX [fid_time_moved] ON [phpbb_topics]([forum_id], [topic_last_post_time], [topic_moved_id]) ON [PRIMARY] +CREATE INDEX [fid_time_moved] ON [phpbb_topics]([forum_id], [topic_last_post_time], [topic_moved_id]) GO @@ -1522,21 +1548,20 @@ CREATE TABLE [phpbb_topics_track] ( [topic_id] [int] DEFAULT (0) NOT NULL , [forum_id] [int] DEFAULT (0) NOT NULL , [mark_time] [int] DEFAULT (0) NOT NULL -) ON [PRIMARY] -GO +)GO ALTER TABLE [phpbb_topics_track] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_topics_track] PRIMARY KEY CLUSTERED ( [user_id], [topic_id] - ) ON [PRIMARY] + ) GO -CREATE INDEX [topic_id] ON [phpbb_topics_track]([topic_id]) ON [PRIMARY] +CREATE INDEX [topic_id] ON [phpbb_topics_track]([topic_id]) GO -CREATE INDEX [forum_id] ON [phpbb_topics_track]([forum_id]) ON [PRIMARY] +CREATE INDEX [forum_id] ON [phpbb_topics_track]([forum_id]) GO @@ -1547,15 +1572,14 @@ CREATE TABLE [phpbb_topics_posted] ( [user_id] [int] DEFAULT (0) NOT NULL , [topic_id] [int] DEFAULT (0) NOT NULL , [topic_posted] [int] DEFAULT (0) NOT NULL -) ON [PRIMARY] -GO +)GO ALTER TABLE [phpbb_topics_posted] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_topics_posted] PRIMARY KEY CLUSTERED ( [user_id], [topic_id] - ) ON [PRIMARY] + ) GO @@ -1566,16 +1590,23 @@ CREATE TABLE [phpbb_topics_watch] ( [topic_id] [int] DEFAULT (0) NOT NULL , [user_id] [int] DEFAULT (0) NOT NULL , [notify_status] [int] DEFAULT (0) NOT NULL -) ON [PRIMARY] +)GO + +ALTER TABLE [phpbb_topics_watch] WITH NOCHECK ADD + CONSTRAINT [PK_phpbb_topics_watch] PRIMARY KEY CLUSTERED + ( + [topic_id], + [user_id] + ) GO -CREATE INDEX [topic_id] ON [phpbb_topics_watch]([topic_id]) ON [PRIMARY] +CREATE INDEX [topic_id] ON [phpbb_topics_watch]([topic_id]) GO -CREATE INDEX [user_id] ON [phpbb_topics_watch]([user_id]) ON [PRIMARY] +CREATE INDEX [user_id] ON [phpbb_topics_watch]([user_id]) GO -CREATE INDEX [notify_stat] ON [phpbb_topics_watch]([notify_status]) ON [PRIMARY] +CREATE INDEX [notify_stat] ON [phpbb_topics_watch]([notify_status]) GO @@ -1587,16 +1618,23 @@ CREATE TABLE [phpbb_user_group] ( [user_id] [int] DEFAULT (0) NOT NULL , [group_leader] [int] DEFAULT (0) NOT NULL , [user_pending] [int] DEFAULT (1) NOT NULL -) ON [PRIMARY] +)GO + +ALTER TABLE [phpbb_user_group] WITH NOCHECK ADD + CONSTRAINT [PK_phpbb_user_group] PRIMARY KEY CLUSTERED + ( + [group_id], + [user_id] + ) GO -CREATE INDEX [group_id] ON [phpbb_user_group]([group_id]) ON [PRIMARY] +CREATE INDEX [group_id] ON [phpbb_user_group]([group_id]) GO -CREATE INDEX [user_id] ON [phpbb_user_group]([user_id]) ON [PRIMARY] +CREATE INDEX [user_id] ON [phpbb_user_group]([user_id]) GO -CREATE INDEX [group_leader] ON [phpbb_user_group]([group_leader]) ON [PRIMARY] +CREATE INDEX [group_leader] ON [phpbb_user_group]([group_leader]) GO @@ -1680,26 +1718,25 @@ CREATE TABLE [phpbb_users] ( [user_new] [int] DEFAULT (1) NOT NULL , [user_reminded] [int] DEFAULT (0) NOT NULL , [user_reminded_time] [int] DEFAULT (0) NOT NULL -) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] -GO +)GO ALTER TABLE [phpbb_users] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_users] PRIMARY KEY CLUSTERED ( [user_id] - ) ON [PRIMARY] + ) GO -CREATE INDEX [user_birthday] ON [phpbb_users]([user_birthday]) ON [PRIMARY] +CREATE INDEX [user_birthday] ON [phpbb_users]([user_birthday]) GO -CREATE INDEX [user_email_hash] ON [phpbb_users]([user_email_hash]) ON [PRIMARY] +CREATE INDEX [user_email_hash] ON [phpbb_users]([user_email_hash]) GO -CREATE INDEX [user_type] ON [phpbb_users]([user_type]) ON [PRIMARY] +CREATE INDEX [user_type] ON [phpbb_users]([user_type]) GO -CREATE UNIQUE INDEX [username_clean] ON [phpbb_users]([username_clean]) ON [PRIMARY] +CREATE UNIQUE INDEX [username_clean] ON [phpbb_users]([username_clean]) GO @@ -1712,14 +1749,13 @@ CREATE TABLE [phpbb_warnings] ( [post_id] [int] DEFAULT (0) NOT NULL , [log_id] [int] DEFAULT (0) NOT NULL , [warning_time] [int] DEFAULT (0) NOT NULL -) ON [PRIMARY] -GO +)GO ALTER TABLE [phpbb_warnings] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_warnings] PRIMARY KEY CLUSTERED ( [warning_id] - ) ON [PRIMARY] + ) GO @@ -1730,14 +1766,13 @@ CREATE TABLE [phpbb_words] ( [word_id] [int] IDENTITY (1, 1) NOT NULL , [word] [varchar] (255) DEFAULT ('') NOT NULL , [replacement] [varchar] (255) DEFAULT ('') NOT NULL -) ON [PRIMARY] -GO +)GO ALTER TABLE [phpbb_words] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_words] PRIMARY KEY CLUSTERED ( [word_id] - ) ON [PRIMARY] + ) GO @@ -1749,15 +1784,14 @@ CREATE TABLE [phpbb_zebra] ( [zebra_id] [int] DEFAULT (0) NOT NULL , [friend] [int] DEFAULT (0) NOT NULL , [foe] [int] DEFAULT (0) NOT NULL -) ON [PRIMARY] -GO +)GO ALTER TABLE [phpbb_zebra] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_zebra] PRIMARY KEY CLUSTERED ( [user_id], [zebra_id] - ) ON [PRIMARY] + ) GO From b993fa54a5d8902590d0d6a83bbe1c581d043f46 Mon Sep 17 00:00:00 2001 From: Henry Sudhof Date: Thu, 12 Apr 2012 18:39:40 +0200 Subject: [PATCH 2/9] [ticket/9725] Add dummy indexes for Azure SQL Azure requires a primary AKA clustered key on every table. This adds a dummy INT column to act as key, avoiding possible duplicate entries. so that these columns can support bigger (speak: huge) tables PHPBB3-9725 --- phpBB/develop/create_schema_files.php | 27 ++++---- phpBB/install/schemas/mssql_schema.sql | 85 +++++++++++++------------- 2 files changed, 56 insertions(+), 56 deletions(-) diff --git a/phpBB/develop/create_schema_files.php b/phpBB/develop/create_schema_files.php index 23ef2f6c74..b869c507e5 100644 --- a/phpBB/develop/create_schema_files.php +++ b/phpBB/develop/create_schema_files.php @@ -237,6 +237,19 @@ $supported_dbms = array('firebird', 'mssql', 'mysql_40', 'mysql_41', 'oracle', ' foreach ($supported_dbms as $dbms) { + $schema_data = get_schema_struct(); + if ($dbms == 'mssql') + { + foreach ($schema_data as $table_name => $table_data) + { + if (!isset($table_data['PRIMARY_KEY'])) + { + $schema_data[$table_name]['COLUMNS']['mssqlindex'] = array('UINT', NULL, 'auto_increment'); + $schema_data[$table_name]['PRIMARY_KEY'] = 'mssqlindex'; + } + } + } + $fp = fopen($schema_path . $dbms . '_schema.sql', 'wb'); $line = ''; @@ -863,9 +876,8 @@ function get_schema_struct() 'KEYS' => array( 'group_id' => array('INDEX', 'group_id'), 'auth_opt_id' => array('INDEX', 'auth_option_id'), - 'auth_role_id' => array('INDEX', 'auth_role_id', 'auth_option_id'), + 'auth_role_id' => array('INDEX', 'auth_role_id'), ), - 'PRIMARY_KEY' => array('group_id', 'forum_id', 'auth_option_id', 'auth_role_id', 'auth_setting'), ); $schema_data['phpbb_acl_options'] = array( @@ -922,7 +934,6 @@ function get_schema_struct() 'auth_option_id' => array('INDEX', 'auth_option_id'), 'auth_role_id' => array('INDEX', 'auth_role_id'), ), - 'PRIMARY_KEY' => array('user_id', 'forum_id', 'auth_option_id', 'auth_role_id', 'auth_setting'), ); $schema_data['phpbb_banlist'] = array( @@ -1144,7 +1155,6 @@ function get_schema_struct() 'user_id' => array('INDEX', 'user_id'), 'notify_stat' => array('INDEX', 'notify_status'), ), - 'PRIMARY_KEY' => array('forum_id', 'user_id'), ); $schema_data['phpbb_groups'] = array( @@ -1261,8 +1271,6 @@ function get_schema_struct() 'disp_idx' => array('INDEX', 'display_on_index'), 'forum_id' => array('INDEX', 'forum_id'), ), - 'PRIMARY_KEY' => array('forum_id', 'user_id', 'group_id'), - ); $schema_data['phpbb_modules'] = array( @@ -1298,7 +1306,6 @@ function get_schema_struct() 'poll_opt_id' => array('INDEX', 'poll_option_id'), 'topic_id' => array('INDEX', 'topic_id'), ), - 'PRIMARY_KEY' => array('topic_id', 'poll_option_id'), ); $schema_data['phpbb_poll_votes'] = array( @@ -1313,7 +1320,6 @@ function get_schema_struct() 'vote_user_id' => array('INDEX', 'vote_user_id'), 'vote_user_ip' => array('INDEX', 'vote_user_ip'), ), - 'PRIMARY_KEY' => array('topic_id', 'poll_option_id', 'vote_user_id'), ); $schema_data['phpbb_posts'] = array( @@ -1440,7 +1446,6 @@ function get_schema_struct() 'author_id' => array('INDEX', 'author_id'), 'usr_flder_id' => array('INDEX', array('user_id', 'folder_id')), ), -'PRIMARY_KEY' => array('msg_id', 'user_id', 'author_id'), ); $schema_data['phpbb_profile_fields'] = array( @@ -1576,7 +1581,6 @@ function get_schema_struct() 'word_id' => array('INDEX', 'word_id'), 'post_id' => array('INDEX', 'post_id'), ), - 'PRIMARY_KEY' => array('post_id', 'word_id'), ); $schema_data['phpbb_sessions'] = array( @@ -1692,7 +1696,6 @@ function get_schema_struct() 'tid' => array('INDEX', 'template_id'), 'tfn' => array('INDEX', 'template_filename'), ), - 'PRIMARY_KEY' => array('template_id', 'template_filename'), ); $schema_data['phpbb_styles_theme'] = array( @@ -1822,7 +1825,6 @@ function get_schema_struct() 'user_id' => array('INDEX', 'user_id'), 'notify_stat' => array('INDEX', 'notify_status'), ), - 'PRIMARY_KEY' => array('topic_id', 'user_id'), ); $schema_data['phpbb_user_group'] = array( @@ -1837,7 +1839,6 @@ function get_schema_struct() 'user_id' => array('INDEX', 'user_id'), 'group_leader' => array('INDEX', 'group_leader'), ), - 'PRIMARY_KEY' => array('group_id', 'user_id'), ); $schema_data['phpbb_users'] = array( diff --git a/phpBB/install/schemas/mssql_schema.sql b/phpBB/install/schemas/mssql_schema.sql index 5397480280..b4b378147b 100644 --- a/phpBB/install/schemas/mssql_schema.sql +++ b/phpBB/install/schemas/mssql_schema.sql @@ -58,17 +58,14 @@ CREATE TABLE [phpbb_acl_groups] ( [forum_id] [int] DEFAULT (0) NOT NULL , [auth_option_id] [int] DEFAULT (0) NOT NULL , [auth_role_id] [int] DEFAULT (0) NOT NULL , - [auth_setting] [int] DEFAULT (0) NOT NULL + [auth_setting] [int] DEFAULT (0) NOT NULL , + [mssqlindex] [int] IDENTITY (1, 1) NOT NULL )GO ALTER TABLE [phpbb_acl_groups] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_acl_groups] PRIMARY KEY CLUSTERED ( - [group_id], - [forum_id], - [auth_option_id], - [auth_role_id], - [auth_setting] + [mssqlindex] ) GO @@ -158,17 +155,14 @@ CREATE TABLE [phpbb_acl_users] ( [forum_id] [int] DEFAULT (0) NOT NULL , [auth_option_id] [int] DEFAULT (0) NOT NULL , [auth_role_id] [int] DEFAULT (0) NOT NULL , - [auth_setting] [int] DEFAULT (0) NOT NULL + [auth_setting] [int] DEFAULT (0) NOT NULL , + [mssqlindex] [int] IDENTITY (1, 1) NOT NULL )GO ALTER TABLE [phpbb_acl_users] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_acl_users] PRIMARY KEY CLUSTERED ( - [user_id], - [forum_id], - [auth_option_id], - [auth_role_id], - [auth_setting] + [mssqlindex] ) GO @@ -513,14 +507,14 @@ GO CREATE TABLE [phpbb_forums_watch] ( [forum_id] [int] DEFAULT (0) NOT NULL , [user_id] [int] DEFAULT (0) NOT NULL , - [notify_status] [int] DEFAULT (0) NOT NULL + [notify_status] [int] DEFAULT (0) NOT NULL , + [mssqlindex] [int] IDENTITY (1, 1) NOT NULL )GO ALTER TABLE [phpbb_forums_watch] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_forums_watch] PRIMARY KEY CLUSTERED ( - [forum_id], - [user_id] + [mssqlindex] ) GO @@ -667,9 +661,17 @@ CREATE TABLE [phpbb_login_attempts] ( [attempt_time] [int] DEFAULT (0) NOT NULL , [user_id] [int] DEFAULT (0) NOT NULL , [username] [varchar] (255) DEFAULT (0) NOT NULL , - [username_clean] [varchar] (255) DEFAULT (0) NOT NULL + [username_clean] [varchar] (255) DEFAULT (0) NOT NULL , + [mssqlindex] [int] IDENTITY (1, 1) NOT NULL )GO +ALTER TABLE [phpbb_login_attempts] WITH NOCHECK ADD + CONSTRAINT [PK_phpbb_login_attempts] PRIMARY KEY CLUSTERED + ( + [mssqlindex] + ) +GO + CREATE INDEX [att_ip] ON [phpbb_login_attempts]([attempt_ip], [attempt_time]) GO @@ -692,15 +694,14 @@ CREATE TABLE [phpbb_moderator_cache] ( [username] [varchar] (255) DEFAULT ('') NOT NULL , [group_id] [int] DEFAULT (0) NOT NULL , [group_name] [varchar] (255) DEFAULT ('') NOT NULL , - [display_on_index] [int] DEFAULT (1) NOT NULL + [display_on_index] [int] DEFAULT (1) NOT NULL , + [mssqlindex] [int] IDENTITY (1, 1) NOT NULL )GO ALTER TABLE [phpbb_moderator_cache] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_moderator_cache] PRIMARY KEY CLUSTERED ( - [forum_id], - [user_id], - [group_id] + [mssqlindex] ) GO @@ -752,14 +753,14 @@ CREATE TABLE [phpbb_poll_options] ( [poll_option_id] [int] DEFAULT (0) NOT NULL , [topic_id] [int] DEFAULT (0) NOT NULL , [poll_option_text] [varchar] (4000) DEFAULT ('') NOT NULL , - [poll_option_total] [int] DEFAULT (0) NOT NULL + [poll_option_total] [int] DEFAULT (0) NOT NULL , + [mssqlindex] [int] IDENTITY (1, 1) NOT NULL )GO ALTER TABLE [phpbb_poll_options] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_poll_options] PRIMARY KEY CLUSTERED ( - [topic_id], - [poll_option_id] + [mssqlindex] ) GO @@ -777,15 +778,14 @@ CREATE TABLE [phpbb_poll_votes] ( [topic_id] [int] DEFAULT (0) NOT NULL , [poll_option_id] [int] DEFAULT (0) NOT NULL , [vote_user_id] [int] DEFAULT (0) NOT NULL , - [vote_user_ip] [varchar] (40) DEFAULT ('') NOT NULL + [vote_user_ip] [varchar] (40) DEFAULT ('') NOT NULL , + [mssqlindex] [int] IDENTITY (1, 1) NOT NULL )GO ALTER TABLE [phpbb_poll_votes] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_poll_votes] PRIMARY KEY CLUSTERED ( - [topic_id], - [poll_option_id], - [vote_user_id] + [mssqlindex] ) GO @@ -968,15 +968,14 @@ CREATE TABLE [phpbb_privmsgs_to] ( [pm_replied] [int] DEFAULT (0) NOT NULL , [pm_marked] [int] DEFAULT (0) NOT NULL , [pm_forwarded] [int] DEFAULT (0) NOT NULL , - [folder_id] [int] DEFAULT (0) NOT NULL + [folder_id] [int] DEFAULT (0) NOT NULL , + [mssqlindex] [int] IDENTITY (1, 1) NOT NULL )GO ALTER TABLE [phpbb_privmsgs_to] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_privmsgs_to] PRIMARY KEY CLUSTERED ( - [msg_id], - [user_id], - [author_id] + [mssqlindex] ) GO @@ -1199,14 +1198,14 @@ GO CREATE TABLE [phpbb_search_wordmatch] ( [post_id] [int] DEFAULT (0) NOT NULL , [word_id] [int] DEFAULT (0) NOT NULL , - [title_match] [int] DEFAULT (0) NOT NULL + [title_match] [int] DEFAULT (0) NOT NULL , + [mssqlindex] [int] IDENTITY (1, 1) NOT NULL )GO ALTER TABLE [phpbb_search_wordmatch] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_search_wordmatch] PRIMARY KEY CLUSTERED ( - [post_id], - [word_id] + [mssqlindex] ) GO @@ -1387,14 +1386,14 @@ CREATE TABLE [phpbb_styles_template_data] ( [template_filename] [varchar] (100) DEFAULT ('') NOT NULL , [template_included] [varchar] (8000) DEFAULT ('') NOT NULL , [template_mtime] [int] DEFAULT (0) NOT NULL , - [template_data] [text] DEFAULT ('') NOT NULL + [template_data] [text] DEFAULT ('') NOT NULL , + [mssqlindex] [int] IDENTITY (1, 1) NOT NULL )GO ALTER TABLE [phpbb_styles_template_data] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_styles_template_data] PRIMARY KEY CLUSTERED ( - [template_id], - [template_filename] + [mssqlindex] ) GO @@ -1589,14 +1588,14 @@ GO CREATE TABLE [phpbb_topics_watch] ( [topic_id] [int] DEFAULT (0) NOT NULL , [user_id] [int] DEFAULT (0) NOT NULL , - [notify_status] [int] DEFAULT (0) NOT NULL + [notify_status] [int] DEFAULT (0) NOT NULL , + [mssqlindex] [int] IDENTITY (1, 1) NOT NULL )GO ALTER TABLE [phpbb_topics_watch] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_topics_watch] PRIMARY KEY CLUSTERED ( - [topic_id], - [user_id] + [mssqlindex] ) GO @@ -1617,14 +1616,14 @@ CREATE TABLE [phpbb_user_group] ( [group_id] [int] DEFAULT (0) NOT NULL , [user_id] [int] DEFAULT (0) NOT NULL , [group_leader] [int] DEFAULT (0) NOT NULL , - [user_pending] [int] DEFAULT (1) NOT NULL + [user_pending] [int] DEFAULT (1) NOT NULL , + [mssqlindex] [int] IDENTITY (1, 1) NOT NULL )GO ALTER TABLE [phpbb_user_group] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_user_group] PRIMARY KEY CLUSTERED ( - [group_id], - [user_id] + [mssqlindex] ) GO From 80a844d38ce17378bb12b2e84cc7db99932913f5 Mon Sep 17 00:00:00 2001 From: Patrick Webster Date: Sat, 1 Mar 2014 22:14:18 -0600 Subject: [PATCH 3/9] [ticket/9725] Fetch Azure db stats from proper table PHPBB3-9725 --- phpBB/includes/functions_admin.php | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/phpBB/includes/functions_admin.php b/phpBB/includes/functions_admin.php index 2f73858ea2..3e69a997a2 100644 --- a/phpBB/includes/functions_admin.php +++ b/phpBB/includes/functions_admin.php @@ -3057,8 +3057,24 @@ function get_database_size() case 'mssql': case 'mssql_odbc': case 'mssqlnative': + $sql = 'SELECT @@VERSION AS mssql_version'; + $result = $db->sql_query($sql); + $row = $db->sql_fetchrow($result); + $db->sql_freeresult($result); + $sql = 'SELECT ((SUM(size) * 8.0) * 1024.0) as dbsize FROM sysfiles'; + + if ($row) + { + // Azure stats are stored elsewhere + if (strpos($row['mssql_version'], 'SQL Azure') !== false) + { + $sql = 'SELECT ((SUM(reserved_page_count) * 8.0) * 1024.0) as dbsize + FROM sys.dm_db_partition_stats'; + } + } + $result = $db->sql_query($sql, 7200); $database_size = ($row = $db->sql_fetchrow($result)) ? $row['dbsize'] : false; $db->sql_freeresult($result); From 68ae8dfa97f81cd7febff92b38a5f6296d50c43f Mon Sep 17 00:00:00 2001 From: Patrick Webster Date: Sat, 1 Mar 2014 22:29:08 -0600 Subject: [PATCH 4/9] [ticket/9725] Remove explicit filegroup designations PHPBB3-9725 --- phpBB/includes/db/db_tools.php | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/phpBB/includes/db/db_tools.php b/phpBB/includes/db/db_tools.php index e394b1ffa0..0518b7eb29 100644 --- a/phpBB/includes/db/db_tools.php +++ b/phpBB/includes/db/db_tools.php @@ -452,9 +452,6 @@ class phpbb_db_tools // Determine if we have created a PRIMARY KEY in the earliest $primary_key_gen = false; - // Determine if the table must be created with TEXTIMAGE - $create_textimage = false; - // Determine if the table requires a sequence $create_sequence = false; @@ -501,12 +498,6 @@ class phpbb_db_tools $primary_key_gen = isset($prepared_column['primary_key_set']) && $prepared_column['primary_key_set']; } - // create textimage DDL based off of the existance of certain column types - if (!$create_textimage) - { - $create_textimage = isset($prepared_column['textimage']) && $prepared_column['textimage']; - } - // create sequence DDL based off of the existance of auto incrementing columns if (!$create_sequence && isset($prepared_column['auto_increment']) && $prepared_column['auto_increment']) { @@ -521,13 +512,9 @@ class phpbb_db_tools switch ($this->sql_layer) { case 'firebird': - $table_sql .= "\n);"; - $statements[] = $table_sql; - break; - case 'mssql': case 'mssqlnative': - $table_sql .= "\n) ON [PRIMARY]" . (($create_textimage) ? ' TEXTIMAGE_ON [PRIMARY]' : ''); + $table_sql .= "\n);"; $statements[] = $table_sql; break; } @@ -2038,7 +2025,7 @@ class phpbb_db_tools $sql = "ALTER TABLE [{$table_name}] WITH NOCHECK ADD "; $sql .= "CONSTRAINT [PK_{$table_name}] PRIMARY KEY CLUSTERED ("; $sql .= '[' . implode("],\n\t\t[", $column) . ']'; - $sql .= ') ON [PRIMARY]'; + $sql .= ')'; $statements[] = $sql; break; @@ -2136,7 +2123,7 @@ class phpbb_db_tools case 'mssql': case 'mssqlnative': - $statements[] = 'CREATE UNIQUE INDEX ' . $index_name . ' ON ' . $table_name . '(' . implode(', ', $column) . ') ON [PRIMARY]'; + $statements[] = 'CREATE UNIQUE INDEX ' . $index_name . ' ON ' . $table_name . '(' . implode(', ', $column) . ')'; break; } @@ -2189,7 +2176,7 @@ class phpbb_db_tools case 'mssql': case 'mssqlnative': - $statements[] = 'CREATE INDEX ' . $index_name . ' ON ' . $table_name . '(' . implode(', ', $column) . ') ON [PRIMARY]'; + $statements[] = 'CREATE INDEX ' . $index_name . ' ON ' . $table_name . '(' . implode(', ', $column) . ')'; break; } From 83be9907013b9463f737f9761d85e3e6b907ad16 Mon Sep 17 00:00:00 2001 From: Patrick Webster Date: Sat, 1 Mar 2014 23:11:19 -0600 Subject: [PATCH 5/9] [ticket/9725] Create MSSQL primary keys if none exist PHPBB3-9725 --- phpBB/includes/db/db_tools.php | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/phpBB/includes/db/db_tools.php b/phpBB/includes/db/db_tools.php index 0518b7eb29..3a7ea2f945 100644 --- a/phpBB/includes/db/db_tools.php +++ b/phpBB/includes/db/db_tools.php @@ -523,6 +523,15 @@ class phpbb_db_tools // this means that we can add the one we really wanted instead if (!$primary_key_gen) { + if ($this->sql_layer == 'mssql' || $this->sql_layer == 'mssqlnative') + { + if (!isset($table_data['PRIMARY_KEY'])) + { + $table_data['COLUMNS']['mssqlindex'] = array('UINT', NULL, 'auto_increment'); + $table_data['PRIMARY_KEY'] = 'mssqlindex'; + } + } + // Write primary key if (isset($table_data['PRIMARY_KEY'])) { From a2580687ee8a557d026af75d8d6fcf477e8c435e Mon Sep 17 00:00:00 2001 From: Patrick Webster Date: Sat, 1 Mar 2014 23:14:53 -0600 Subject: [PATCH 6/9] [ticket/9725] Remove trailing spaces from MSSQL schema PHPBB3-9725 --- phpBB/develop/create_schema_files.php | 4 +- phpBB/install/schemas/mssql_schema.sql | 344 ++++++++++++------------- 2 files changed, 174 insertions(+), 174 deletions(-) diff --git a/phpBB/develop/create_schema_files.php b/phpBB/develop/create_schema_files.php index b869c507e5..b5f1202c0d 100644 --- a/phpBB/develop/create_schema_files.php +++ b/phpBB/develop/create_schema_files.php @@ -602,7 +602,7 @@ foreach ($supported_dbms as $dbms) $line .= "\tCONSTRAINT [PK_{$table_name}] PRIMARY KEY CLUSTERED \n"; $line .= "\t(\n"; $line .= "\t\t[" . implode("],\n\t\t[", $table_data['PRIMARY_KEY']) . "]\n"; - $line .= "\t) \n"; + $line .= "\t)\n"; $line .= "GO\n\n"; break; @@ -697,7 +697,7 @@ foreach ($supported_dbms as $dbms) case 'mssql': $line .= ($key_data[0] == 'INDEX') ? 'CREATE INDEX' : ''; $line .= ($key_data[0] == 'UNIQUE') ? 'CREATE UNIQUE INDEX' : ''; - $line .= " [{$key_name}] ON [{$table_name}]([" . implode('], [', $key_data[1]) . "]) \n"; + $line .= " [{$key_name}] ON [{$table_name}]([" . implode('], [', $key_data[1]) . "])\n"; $line .= "GO\n\n"; break; diff --git a/phpBB/install/schemas/mssql_schema.sql b/phpBB/install/schemas/mssql_schema.sql index b4b378147b..68993d45ee 100644 --- a/phpBB/install/schemas/mssql_schema.sql +++ b/phpBB/install/schemas/mssql_schema.sql @@ -31,22 +31,22 @@ ALTER TABLE [phpbb_attachments] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_attachments] PRIMARY KEY CLUSTERED ( [attach_id] - ) + ) GO -CREATE INDEX [filetime] ON [phpbb_attachments]([filetime]) +CREATE INDEX [filetime] ON [phpbb_attachments]([filetime]) GO -CREATE INDEX [post_msg_id] ON [phpbb_attachments]([post_msg_id]) +CREATE INDEX [post_msg_id] ON [phpbb_attachments]([post_msg_id]) GO -CREATE INDEX [topic_id] ON [phpbb_attachments]([topic_id]) +CREATE INDEX [topic_id] ON [phpbb_attachments]([topic_id]) GO -CREATE INDEX [poster_id] ON [phpbb_attachments]([poster_id]) +CREATE INDEX [poster_id] ON [phpbb_attachments]([poster_id]) GO -CREATE INDEX [is_orphan] ON [phpbb_attachments]([is_orphan]) +CREATE INDEX [is_orphan] ON [phpbb_attachments]([is_orphan]) GO @@ -66,16 +66,16 @@ ALTER TABLE [phpbb_acl_groups] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_acl_groups] PRIMARY KEY CLUSTERED ( [mssqlindex] - ) + ) GO -CREATE INDEX [group_id] ON [phpbb_acl_groups]([group_id]) +CREATE INDEX [group_id] ON [phpbb_acl_groups]([group_id]) GO -CREATE INDEX [auth_opt_id] ON [phpbb_acl_groups]([auth_option_id]) +CREATE INDEX [auth_opt_id] ON [phpbb_acl_groups]([auth_option_id]) GO -CREATE INDEX [auth_role_id] ON [phpbb_acl_groups]([auth_role_id]) +CREATE INDEX [auth_role_id] ON [phpbb_acl_groups]([auth_role_id]) GO @@ -94,10 +94,10 @@ ALTER TABLE [phpbb_acl_options] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_acl_options] PRIMARY KEY CLUSTERED ( [auth_option_id] - ) + ) GO -CREATE UNIQUE INDEX [auth_option] ON [phpbb_acl_options]([auth_option]) +CREATE UNIQUE INDEX [auth_option] ON [phpbb_acl_options]([auth_option]) GO @@ -116,13 +116,13 @@ ALTER TABLE [phpbb_acl_roles] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_acl_roles] PRIMARY KEY CLUSTERED ( [role_id] - ) + ) GO -CREATE INDEX [role_type] ON [phpbb_acl_roles]([role_type]) +CREATE INDEX [role_type] ON [phpbb_acl_roles]([role_type]) GO -CREATE INDEX [role_order] ON [phpbb_acl_roles]([role_order]) +CREATE INDEX [role_order] ON [phpbb_acl_roles]([role_order]) GO @@ -140,10 +140,10 @@ ALTER TABLE [phpbb_acl_roles_data] WITH NOCHECK ADD ( [role_id], [auth_option_id] - ) + ) GO -CREATE INDEX [ath_op_id] ON [phpbb_acl_roles_data]([auth_option_id]) +CREATE INDEX [ath_op_id] ON [phpbb_acl_roles_data]([auth_option_id]) GO @@ -163,16 +163,16 @@ ALTER TABLE [phpbb_acl_users] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_acl_users] PRIMARY KEY CLUSTERED ( [mssqlindex] - ) + ) GO -CREATE INDEX [user_id] ON [phpbb_acl_users]([user_id]) +CREATE INDEX [user_id] ON [phpbb_acl_users]([user_id]) GO -CREATE INDEX [auth_option_id] ON [phpbb_acl_users]([auth_option_id]) +CREATE INDEX [auth_option_id] ON [phpbb_acl_users]([auth_option_id]) GO -CREATE INDEX [auth_role_id] ON [phpbb_acl_users]([auth_role_id]) +CREATE INDEX [auth_role_id] ON [phpbb_acl_users]([auth_role_id]) GO @@ -195,19 +195,19 @@ ALTER TABLE [phpbb_banlist] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_banlist] PRIMARY KEY CLUSTERED ( [ban_id] - ) + ) GO -CREATE INDEX [ban_end] ON [phpbb_banlist]([ban_end]) +CREATE INDEX [ban_end] ON [phpbb_banlist]([ban_end]) GO -CREATE INDEX [ban_user] ON [phpbb_banlist]([ban_userid], [ban_exclude]) +CREATE INDEX [ban_user] ON [phpbb_banlist]([ban_userid], [ban_exclude]) GO -CREATE INDEX [ban_email] ON [phpbb_banlist]([ban_email], [ban_exclude]) +CREATE INDEX [ban_email] ON [phpbb_banlist]([ban_email], [ban_exclude]) GO -CREATE INDEX [ban_ip] ON [phpbb_banlist]([ban_ip], [ban_exclude]) +CREATE INDEX [ban_ip] ON [phpbb_banlist]([ban_ip], [ban_exclude]) GO @@ -231,10 +231,10 @@ ALTER TABLE [phpbb_bbcodes] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_bbcodes] PRIMARY KEY CLUSTERED ( [bbcode_id] - ) + ) GO -CREATE INDEX [display_on_post] ON [phpbb_bbcodes]([display_on_posting]) +CREATE INDEX [display_on_post] ON [phpbb_bbcodes]([display_on_posting]) GO @@ -251,7 +251,7 @@ ALTER TABLE [phpbb_bookmarks] WITH NOCHECK ADD ( [topic_id], [user_id] - ) + ) GO @@ -271,10 +271,10 @@ ALTER TABLE [phpbb_bots] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_bots] PRIMARY KEY CLUSTERED ( [bot_id] - ) + ) GO -CREATE INDEX [bot_active] ON [phpbb_bots]([bot_active]) +CREATE INDEX [bot_active] ON [phpbb_bots]([bot_active]) GO @@ -291,10 +291,10 @@ ALTER TABLE [phpbb_config] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_config] PRIMARY KEY CLUSTERED ( [config_name] - ) + ) GO -CREATE INDEX [is_dynamic] ON [phpbb_config]([is_dynamic]) +CREATE INDEX [is_dynamic] ON [phpbb_config]([is_dynamic]) GO @@ -315,10 +315,10 @@ ALTER TABLE [phpbb_confirm] WITH NOCHECK ADD ( [session_id], [confirm_id] - ) + ) GO -CREATE INDEX [confirm_type] ON [phpbb_confirm]([confirm_type]) +CREATE INDEX [confirm_type] ON [phpbb_confirm]([confirm_type]) GO @@ -334,7 +334,7 @@ ALTER TABLE [phpbb_disallow] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_disallow] PRIMARY KEY CLUSTERED ( [disallow_id] - ) + ) GO @@ -355,10 +355,10 @@ ALTER TABLE [phpbb_drafts] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_drafts] PRIMARY KEY CLUSTERED ( [draft_id] - ) + ) GO -CREATE INDEX [save_time] ON [phpbb_drafts]([save_time]) +CREATE INDEX [save_time] ON [phpbb_drafts]([save_time]) GO @@ -375,7 +375,7 @@ ALTER TABLE [phpbb_extensions] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_extensions] PRIMARY KEY CLUSTERED ( [extension_id] - ) + ) GO @@ -398,7 +398,7 @@ ALTER TABLE [phpbb_extension_groups] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_extension_groups] PRIMARY KEY CLUSTERED ( [group_id] - ) + ) GO @@ -454,13 +454,13 @@ ALTER TABLE [phpbb_forums] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_forums] PRIMARY KEY CLUSTERED ( [forum_id] - ) + ) GO -CREATE INDEX [left_right_id] ON [phpbb_forums]([left_id], [right_id]) +CREATE INDEX [left_right_id] ON [phpbb_forums]([left_id], [right_id]) GO -CREATE INDEX [forum_lastpost_id] ON [phpbb_forums]([forum_last_post_id]) +CREATE INDEX [forum_lastpost_id] ON [phpbb_forums]([forum_last_post_id]) GO @@ -479,7 +479,7 @@ ALTER TABLE [phpbb_forums_access] WITH NOCHECK ADD [forum_id], [user_id], [session_id] - ) + ) GO @@ -497,7 +497,7 @@ ALTER TABLE [phpbb_forums_track] WITH NOCHECK ADD ( [user_id], [forum_id] - ) + ) GO @@ -515,16 +515,16 @@ ALTER TABLE [phpbb_forums_watch] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_forums_watch] PRIMARY KEY CLUSTERED ( [mssqlindex] - ) + ) GO -CREATE INDEX [forum_id] ON [phpbb_forums_watch]([forum_id]) +CREATE INDEX [forum_id] ON [phpbb_forums_watch]([forum_id]) GO -CREATE INDEX [user_id] ON [phpbb_forums_watch]([user_id]) +CREATE INDEX [user_id] ON [phpbb_forums_watch]([user_id]) GO -CREATE INDEX [notify_stat] ON [phpbb_forums_watch]([notify_status]) +CREATE INDEX [notify_stat] ON [phpbb_forums_watch]([notify_status]) GO @@ -559,10 +559,10 @@ ALTER TABLE [phpbb_groups] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_groups] PRIMARY KEY CLUSTERED ( [group_id] - ) + ) GO -CREATE INDEX [group_legend_name] ON [phpbb_groups]([group_legend], [group_name]) +CREATE INDEX [group_legend_name] ON [phpbb_groups]([group_legend], [group_name]) GO @@ -582,10 +582,10 @@ ALTER TABLE [phpbb_icons] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_icons] PRIMARY KEY CLUSTERED ( [icons_id] - ) + ) GO -CREATE INDEX [display_on_posting] ON [phpbb_icons]([display_on_posting]) +CREATE INDEX [display_on_posting] ON [phpbb_icons]([display_on_posting]) GO @@ -605,10 +605,10 @@ ALTER TABLE [phpbb_lang] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_lang] PRIMARY KEY CLUSTERED ( [lang_id] - ) + ) GO -CREATE INDEX [lang_iso] ON [phpbb_lang]([lang_iso]) +CREATE INDEX [lang_iso] ON [phpbb_lang]([lang_iso]) GO @@ -632,22 +632,22 @@ ALTER TABLE [phpbb_log] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_log] PRIMARY KEY CLUSTERED ( [log_id] - ) + ) GO -CREATE INDEX [log_type] ON [phpbb_log]([log_type]) +CREATE INDEX [log_type] ON [phpbb_log]([log_type]) GO -CREATE INDEX [forum_id] ON [phpbb_log]([forum_id]) +CREATE INDEX [forum_id] ON [phpbb_log]([forum_id]) GO -CREATE INDEX [topic_id] ON [phpbb_log]([topic_id]) +CREATE INDEX [topic_id] ON [phpbb_log]([topic_id]) GO -CREATE INDEX [reportee_id] ON [phpbb_log]([reportee_id]) +CREATE INDEX [reportee_id] ON [phpbb_log]([reportee_id]) GO -CREATE INDEX [user_id] ON [phpbb_log]([user_id]) +CREATE INDEX [user_id] ON [phpbb_log]([user_id]) GO @@ -669,19 +669,19 @@ ALTER TABLE [phpbb_login_attempts] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_login_attempts] PRIMARY KEY CLUSTERED ( [mssqlindex] - ) + ) GO -CREATE INDEX [att_ip] ON [phpbb_login_attempts]([attempt_ip], [attempt_time]) +CREATE INDEX [att_ip] ON [phpbb_login_attempts]([attempt_ip], [attempt_time]) GO -CREATE INDEX [att_for] ON [phpbb_login_attempts]([attempt_forwarded_for], [attempt_time]) +CREATE INDEX [att_for] ON [phpbb_login_attempts]([attempt_forwarded_for], [attempt_time]) GO -CREATE INDEX [att_time] ON [phpbb_login_attempts]([attempt_time]) +CREATE INDEX [att_time] ON [phpbb_login_attempts]([attempt_time]) GO -CREATE INDEX [user_id] ON [phpbb_login_attempts]([user_id]) +CREATE INDEX [user_id] ON [phpbb_login_attempts]([user_id]) GO @@ -702,13 +702,13 @@ ALTER TABLE [phpbb_moderator_cache] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_moderator_cache] PRIMARY KEY CLUSTERED ( [mssqlindex] - ) + ) GO -CREATE INDEX [disp_idx] ON [phpbb_moderator_cache]([display_on_index]) +CREATE INDEX [disp_idx] ON [phpbb_moderator_cache]([display_on_index]) GO -CREATE INDEX [forum_id] ON [phpbb_moderator_cache]([forum_id]) +CREATE INDEX [forum_id] ON [phpbb_moderator_cache]([forum_id]) GO @@ -733,16 +733,16 @@ ALTER TABLE [phpbb_modules] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_modules] PRIMARY KEY CLUSTERED ( [module_id] - ) + ) GO -CREATE INDEX [left_right_id] ON [phpbb_modules]([left_id], [right_id]) +CREATE INDEX [left_right_id] ON [phpbb_modules]([left_id], [right_id]) GO -CREATE INDEX [module_enabled] ON [phpbb_modules]([module_enabled]) +CREATE INDEX [module_enabled] ON [phpbb_modules]([module_enabled]) GO -CREATE INDEX [class_left_id] ON [phpbb_modules]([module_class], [left_id]) +CREATE INDEX [class_left_id] ON [phpbb_modules]([module_class], [left_id]) GO @@ -761,13 +761,13 @@ ALTER TABLE [phpbb_poll_options] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_poll_options] PRIMARY KEY CLUSTERED ( [mssqlindex] - ) + ) GO -CREATE INDEX [poll_opt_id] ON [phpbb_poll_options]([poll_option_id]) +CREATE INDEX [poll_opt_id] ON [phpbb_poll_options]([poll_option_id]) GO -CREATE INDEX [topic_id] ON [phpbb_poll_options]([topic_id]) +CREATE INDEX [topic_id] ON [phpbb_poll_options]([topic_id]) GO @@ -786,16 +786,16 @@ ALTER TABLE [phpbb_poll_votes] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_poll_votes] PRIMARY KEY CLUSTERED ( [mssqlindex] - ) + ) GO -CREATE INDEX [topic_id] ON [phpbb_poll_votes]([topic_id]) +CREATE INDEX [topic_id] ON [phpbb_poll_votes]([topic_id]) GO -CREATE INDEX [vote_user_id] ON [phpbb_poll_votes]([vote_user_id]) +CREATE INDEX [vote_user_id] ON [phpbb_poll_votes]([vote_user_id]) GO -CREATE INDEX [vote_user_ip] ON [phpbb_poll_votes]([vote_user_ip]) +CREATE INDEX [vote_user_ip] ON [phpbb_poll_votes]([vote_user_ip]) GO @@ -835,28 +835,28 @@ ALTER TABLE [phpbb_posts] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_posts] PRIMARY KEY CLUSTERED ( [post_id] - ) + ) GO -CREATE INDEX [forum_id] ON [phpbb_posts]([forum_id]) +CREATE INDEX [forum_id] ON [phpbb_posts]([forum_id]) GO -CREATE INDEX [topic_id] ON [phpbb_posts]([topic_id]) +CREATE INDEX [topic_id] ON [phpbb_posts]([topic_id]) GO -CREATE INDEX [poster_ip] ON [phpbb_posts]([poster_ip]) +CREATE INDEX [poster_ip] ON [phpbb_posts]([poster_ip]) GO -CREATE INDEX [poster_id] ON [phpbb_posts]([poster_id]) +CREATE INDEX [poster_id] ON [phpbb_posts]([poster_id]) GO -CREATE INDEX [post_approved] ON [phpbb_posts]([post_approved]) +CREATE INDEX [post_approved] ON [phpbb_posts]([post_approved]) GO -CREATE INDEX [post_username] ON [phpbb_posts]([post_username]) +CREATE INDEX [post_username] ON [phpbb_posts]([post_username]) GO -CREATE INDEX [tid_post_time] ON [phpbb_posts]([topic_id], [post_time]) +CREATE INDEX [tid_post_time] ON [phpbb_posts]([topic_id], [post_time]) GO @@ -892,19 +892,19 @@ ALTER TABLE [phpbb_privmsgs] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_privmsgs] PRIMARY KEY CLUSTERED ( [msg_id] - ) + ) GO -CREATE INDEX [author_ip] ON [phpbb_privmsgs]([author_ip]) +CREATE INDEX [author_ip] ON [phpbb_privmsgs]([author_ip]) GO -CREATE INDEX [message_time] ON [phpbb_privmsgs]([message_time]) +CREATE INDEX [message_time] ON [phpbb_privmsgs]([message_time]) GO -CREATE INDEX [author_id] ON [phpbb_privmsgs]([author_id]) +CREATE INDEX [author_id] ON [phpbb_privmsgs]([author_id]) GO -CREATE INDEX [root_level] ON [phpbb_privmsgs]([root_level]) +CREATE INDEX [root_level] ON [phpbb_privmsgs]([root_level]) GO @@ -922,10 +922,10 @@ ALTER TABLE [phpbb_privmsgs_folder] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_privmsgs_folder] PRIMARY KEY CLUSTERED ( [folder_id] - ) + ) GO -CREATE INDEX [user_id] ON [phpbb_privmsgs_folder]([user_id]) +CREATE INDEX [user_id] ON [phpbb_privmsgs_folder]([user_id]) GO @@ -948,10 +948,10 @@ ALTER TABLE [phpbb_privmsgs_rules] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_privmsgs_rules] PRIMARY KEY CLUSTERED ( [rule_id] - ) + ) GO -CREATE INDEX [user_id] ON [phpbb_privmsgs_rules]([user_id]) +CREATE INDEX [user_id] ON [phpbb_privmsgs_rules]([user_id]) GO @@ -976,16 +976,16 @@ ALTER TABLE [phpbb_privmsgs_to] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_privmsgs_to] PRIMARY KEY CLUSTERED ( [mssqlindex] - ) + ) GO -CREATE INDEX [msg_id] ON [phpbb_privmsgs_to]([msg_id]) +CREATE INDEX [msg_id] ON [phpbb_privmsgs_to]([msg_id]) GO -CREATE INDEX [author_id] ON [phpbb_privmsgs_to]([author_id]) +CREATE INDEX [author_id] ON [phpbb_privmsgs_to]([author_id]) GO -CREATE INDEX [usr_flder_id] ON [phpbb_privmsgs_to]([user_id], [folder_id]) +CREATE INDEX [usr_flder_id] ON [phpbb_privmsgs_to]([user_id], [folder_id]) GO @@ -1018,13 +1018,13 @@ ALTER TABLE [phpbb_profile_fields] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_profile_fields] PRIMARY KEY CLUSTERED ( [field_id] - ) + ) GO -CREATE INDEX [fld_type] ON [phpbb_profile_fields]([field_type]) +CREATE INDEX [fld_type] ON [phpbb_profile_fields]([field_type]) GO -CREATE INDEX [fld_ordr] ON [phpbb_profile_fields]([field_order]) +CREATE INDEX [fld_ordr] ON [phpbb_profile_fields]([field_order]) GO @@ -1039,7 +1039,7 @@ ALTER TABLE [phpbb_profile_fields_data] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_profile_fields_data] PRIMARY KEY CLUSTERED ( [user_id] - ) + ) GO @@ -1060,7 +1060,7 @@ ALTER TABLE [phpbb_profile_fields_lang] WITH NOCHECK ADD [field_id], [lang_id], [option_id] - ) + ) GO @@ -1080,7 +1080,7 @@ ALTER TABLE [phpbb_profile_lang] WITH NOCHECK ADD ( [field_id], [lang_id] - ) + ) GO @@ -1099,7 +1099,7 @@ ALTER TABLE [phpbb_ranks] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_ranks] PRIMARY KEY CLUSTERED ( [rank_id] - ) + ) GO @@ -1122,13 +1122,13 @@ ALTER TABLE [phpbb_reports] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_reports] PRIMARY KEY CLUSTERED ( [report_id] - ) + ) GO -CREATE INDEX [post_id] ON [phpbb_reports]([post_id]) +CREATE INDEX [post_id] ON [phpbb_reports]([post_id]) GO -CREATE INDEX [pm_id] ON [phpbb_reports]([pm_id]) +CREATE INDEX [pm_id] ON [phpbb_reports]([pm_id]) GO @@ -1146,7 +1146,7 @@ ALTER TABLE [phpbb_reports_reasons] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_reports_reasons] PRIMARY KEY CLUSTERED ( [reason_id] - ) + ) GO @@ -1164,7 +1164,7 @@ ALTER TABLE [phpbb_search_results] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_search_results] PRIMARY KEY CLUSTERED ( [search_key] - ) + ) GO @@ -1182,13 +1182,13 @@ ALTER TABLE [phpbb_search_wordlist] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_search_wordlist] PRIMARY KEY CLUSTERED ( [word_id] - ) + ) GO -CREATE UNIQUE INDEX [wrd_txt] ON [phpbb_search_wordlist]([word_text]) +CREATE UNIQUE INDEX [wrd_txt] ON [phpbb_search_wordlist]([word_text]) GO -CREATE INDEX [wrd_cnt] ON [phpbb_search_wordlist]([word_count]) +CREATE INDEX [wrd_cnt] ON [phpbb_search_wordlist]([word_count]) GO @@ -1206,16 +1206,16 @@ ALTER TABLE [phpbb_search_wordmatch] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_search_wordmatch] PRIMARY KEY CLUSTERED ( [mssqlindex] - ) + ) GO -CREATE UNIQUE INDEX [unq_mtch] ON [phpbb_search_wordmatch]([word_id], [post_id], [title_match]) +CREATE UNIQUE INDEX [unq_mtch] ON [phpbb_search_wordmatch]([word_id], [post_id], [title_match]) GO -CREATE INDEX [word_id] ON [phpbb_search_wordmatch]([word_id]) +CREATE INDEX [word_id] ON [phpbb_search_wordmatch]([word_id]) GO -CREATE INDEX [post_id] ON [phpbb_search_wordmatch]([post_id]) +CREATE INDEX [post_id] ON [phpbb_search_wordmatch]([post_id]) GO @@ -1242,16 +1242,16 @@ ALTER TABLE [phpbb_sessions] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_sessions] PRIMARY KEY CLUSTERED ( [session_id] - ) + ) GO -CREATE INDEX [session_time] ON [phpbb_sessions]([session_time]) +CREATE INDEX [session_time] ON [phpbb_sessions]([session_time]) GO -CREATE INDEX [session_user_id] ON [phpbb_sessions]([session_user_id]) +CREATE INDEX [session_user_id] ON [phpbb_sessions]([session_user_id]) GO -CREATE INDEX [session_fid] ON [phpbb_sessions]([session_forum_id]) +CREATE INDEX [session_fid] ON [phpbb_sessions]([session_forum_id]) GO @@ -1270,10 +1270,10 @@ ALTER TABLE [phpbb_sessions_keys] WITH NOCHECK ADD ( [key_id], [user_id] - ) + ) GO -CREATE INDEX [last_login] ON [phpbb_sessions_keys]([last_login]) +CREATE INDEX [last_login] ON [phpbb_sessions_keys]([last_login]) GO @@ -1291,7 +1291,7 @@ ALTER TABLE [phpbb_sitelist] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_sitelist] PRIMARY KEY CLUSTERED ( [site_id] - ) + ) GO @@ -1313,10 +1313,10 @@ ALTER TABLE [phpbb_smilies] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_smilies] PRIMARY KEY CLUSTERED ( [smiley_id] - ) + ) GO -CREATE INDEX [display_on_post] ON [phpbb_smilies]([display_on_posting]) +CREATE INDEX [display_on_post] ON [phpbb_smilies]([display_on_posting]) GO @@ -1337,19 +1337,19 @@ ALTER TABLE [phpbb_styles] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_styles] PRIMARY KEY CLUSTERED ( [style_id] - ) + ) GO -CREATE UNIQUE INDEX [style_name] ON [phpbb_styles]([style_name]) +CREATE UNIQUE INDEX [style_name] ON [phpbb_styles]([style_name]) GO -CREATE INDEX [template_id] ON [phpbb_styles]([template_id]) +CREATE INDEX [template_id] ON [phpbb_styles]([template_id]) GO -CREATE INDEX [theme_id] ON [phpbb_styles]([theme_id]) +CREATE INDEX [theme_id] ON [phpbb_styles]([theme_id]) GO -CREATE INDEX [imageset_id] ON [phpbb_styles]([imageset_id]) +CREATE INDEX [imageset_id] ON [phpbb_styles]([imageset_id]) GO @@ -1371,10 +1371,10 @@ ALTER TABLE [phpbb_styles_template] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_styles_template] PRIMARY KEY CLUSTERED ( [template_id] - ) + ) GO -CREATE UNIQUE INDEX [tmplte_nm] ON [phpbb_styles_template]([template_name]) +CREATE UNIQUE INDEX [tmplte_nm] ON [phpbb_styles_template]([template_name]) GO @@ -1394,13 +1394,13 @@ ALTER TABLE [phpbb_styles_template_data] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_styles_template_data] PRIMARY KEY CLUSTERED ( [mssqlindex] - ) + ) GO -CREATE INDEX [tid] ON [phpbb_styles_template_data]([template_id]) +CREATE INDEX [tid] ON [phpbb_styles_template_data]([template_id]) GO -CREATE INDEX [tfn] ON [phpbb_styles_template_data]([template_filename]) +CREATE INDEX [tfn] ON [phpbb_styles_template_data]([template_filename]) GO @@ -1421,10 +1421,10 @@ ALTER TABLE [phpbb_styles_theme] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_styles_theme] PRIMARY KEY CLUSTERED ( [theme_id] - ) + ) GO -CREATE UNIQUE INDEX [theme_name] ON [phpbb_styles_theme]([theme_name]) +CREATE UNIQUE INDEX [theme_name] ON [phpbb_styles_theme]([theme_name]) GO @@ -1442,10 +1442,10 @@ ALTER TABLE [phpbb_styles_imageset] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_styles_imageset] PRIMARY KEY CLUSTERED ( [imageset_id] - ) + ) GO -CREATE UNIQUE INDEX [imgset_nm] ON [phpbb_styles_imageset]([imageset_name]) +CREATE UNIQUE INDEX [imgset_nm] ON [phpbb_styles_imageset]([imageset_name]) GO @@ -1466,10 +1466,10 @@ ALTER TABLE [phpbb_styles_imageset_data] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_styles_imageset_data] PRIMARY KEY CLUSTERED ( [image_id] - ) + ) GO -CREATE INDEX [i_d] ON [phpbb_styles_imageset_data]([imageset_id]) +CREATE INDEX [i_d] ON [phpbb_styles_imageset_data]([imageset_id]) GO @@ -1517,25 +1517,25 @@ ALTER TABLE [phpbb_topics] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_topics] PRIMARY KEY CLUSTERED ( [topic_id] - ) + ) GO -CREATE INDEX [forum_id] ON [phpbb_topics]([forum_id]) +CREATE INDEX [forum_id] ON [phpbb_topics]([forum_id]) GO -CREATE INDEX [forum_id_type] ON [phpbb_topics]([forum_id], [topic_type]) +CREATE INDEX [forum_id_type] ON [phpbb_topics]([forum_id], [topic_type]) GO -CREATE INDEX [last_post_time] ON [phpbb_topics]([topic_last_post_time]) +CREATE INDEX [last_post_time] ON [phpbb_topics]([topic_last_post_time]) GO -CREATE INDEX [topic_approved] ON [phpbb_topics]([topic_approved]) +CREATE INDEX [topic_approved] ON [phpbb_topics]([topic_approved]) GO -CREATE INDEX [forum_appr_last] ON [phpbb_topics]([forum_id], [topic_approved], [topic_last_post_id]) +CREATE INDEX [forum_appr_last] ON [phpbb_topics]([forum_id], [topic_approved], [topic_last_post_id]) GO -CREATE INDEX [fid_time_moved] ON [phpbb_topics]([forum_id], [topic_last_post_time], [topic_moved_id]) +CREATE INDEX [fid_time_moved] ON [phpbb_topics]([forum_id], [topic_last_post_time], [topic_moved_id]) GO @@ -1554,13 +1554,13 @@ ALTER TABLE [phpbb_topics_track] WITH NOCHECK ADD ( [user_id], [topic_id] - ) + ) GO -CREATE INDEX [topic_id] ON [phpbb_topics_track]([topic_id]) +CREATE INDEX [topic_id] ON [phpbb_topics_track]([topic_id]) GO -CREATE INDEX [forum_id] ON [phpbb_topics_track]([forum_id]) +CREATE INDEX [forum_id] ON [phpbb_topics_track]([forum_id]) GO @@ -1578,7 +1578,7 @@ ALTER TABLE [phpbb_topics_posted] WITH NOCHECK ADD ( [user_id], [topic_id] - ) + ) GO @@ -1596,16 +1596,16 @@ ALTER TABLE [phpbb_topics_watch] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_topics_watch] PRIMARY KEY CLUSTERED ( [mssqlindex] - ) + ) GO -CREATE INDEX [topic_id] ON [phpbb_topics_watch]([topic_id]) +CREATE INDEX [topic_id] ON [phpbb_topics_watch]([topic_id]) GO -CREATE INDEX [user_id] ON [phpbb_topics_watch]([user_id]) +CREATE INDEX [user_id] ON [phpbb_topics_watch]([user_id]) GO -CREATE INDEX [notify_stat] ON [phpbb_topics_watch]([notify_status]) +CREATE INDEX [notify_stat] ON [phpbb_topics_watch]([notify_status]) GO @@ -1624,16 +1624,16 @@ ALTER TABLE [phpbb_user_group] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_user_group] PRIMARY KEY CLUSTERED ( [mssqlindex] - ) + ) GO -CREATE INDEX [group_id] ON [phpbb_user_group]([group_id]) +CREATE INDEX [group_id] ON [phpbb_user_group]([group_id]) GO -CREATE INDEX [user_id] ON [phpbb_user_group]([user_id]) +CREATE INDEX [user_id] ON [phpbb_user_group]([user_id]) GO -CREATE INDEX [group_leader] ON [phpbb_user_group]([group_leader]) +CREATE INDEX [group_leader] ON [phpbb_user_group]([group_leader]) GO @@ -1723,19 +1723,19 @@ ALTER TABLE [phpbb_users] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_users] PRIMARY KEY CLUSTERED ( [user_id] - ) + ) GO -CREATE INDEX [user_birthday] ON [phpbb_users]([user_birthday]) +CREATE INDEX [user_birthday] ON [phpbb_users]([user_birthday]) GO -CREATE INDEX [user_email_hash] ON [phpbb_users]([user_email_hash]) +CREATE INDEX [user_email_hash] ON [phpbb_users]([user_email_hash]) GO -CREATE INDEX [user_type] ON [phpbb_users]([user_type]) +CREATE INDEX [user_type] ON [phpbb_users]([user_type]) GO -CREATE UNIQUE INDEX [username_clean] ON [phpbb_users]([username_clean]) +CREATE UNIQUE INDEX [username_clean] ON [phpbb_users]([username_clean]) GO @@ -1754,7 +1754,7 @@ ALTER TABLE [phpbb_warnings] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_warnings] PRIMARY KEY CLUSTERED ( [warning_id] - ) + ) GO @@ -1771,7 +1771,7 @@ ALTER TABLE [phpbb_words] WITH NOCHECK ADD CONSTRAINT [PK_phpbb_words] PRIMARY KEY CLUSTERED ( [word_id] - ) + ) GO @@ -1790,7 +1790,7 @@ ALTER TABLE [phpbb_zebra] WITH NOCHECK ADD ( [user_id], [zebra_id] - ) + ) GO From 31e610f0b1a9f22701660e72d63fe2290298d812 Mon Sep 17 00:00:00 2001 From: Patrick Webster Date: Sun, 2 Mar 2014 21:36:50 -0600 Subject: [PATCH 7/9] [ticket/9725] Move primary key creation to the correct location PHPBB3-9725 --- phpBB/includes/db/db_tools.php | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/phpBB/includes/db/db_tools.php b/phpBB/includes/db/db_tools.php index 3a7ea2f945..8372f90369 100644 --- a/phpBB/includes/db/db_tools.php +++ b/phpBB/includes/db/db_tools.php @@ -468,6 +468,15 @@ class phpbb_db_tools break; } + if ($this->sql_layer == 'mssql' || $this->sql_layer == 'mssqlnative') + { + if (!isset($table_data['PRIMARY_KEY'])) + { + $table_data['COLUMNS']['mssqlindex'] = array('UINT', NULL, 'auto_increment'); + $table_data['PRIMARY_KEY'] = 'mssqlindex'; + } + } + // Iterate through the columns to create a table foreach ($table_data['COLUMNS'] as $column_name => $column_data) { @@ -523,15 +532,6 @@ class phpbb_db_tools // this means that we can add the one we really wanted instead if (!$primary_key_gen) { - if ($this->sql_layer == 'mssql' || $this->sql_layer == 'mssqlnative') - { - if (!isset($table_data['PRIMARY_KEY'])) - { - $table_data['COLUMNS']['mssqlindex'] = array('UINT', NULL, 'auto_increment'); - $table_data['PRIMARY_KEY'] = 'mssqlindex'; - } - } - // Write primary key if (isset($table_data['PRIMARY_KEY'])) { From aaa846cb3a008a76ad2e2d6f457de5995cd3a9db Mon Sep 17 00:00:00 2001 From: Patrick Webster Date: Mon, 3 Mar 2014 00:37:22 -0600 Subject: [PATCH 8/9] [ticket/9725] Do not use deprecated views to remove default constraints PHPBB3-9725 --- phpBB/includes/db/db_tools.php | 116 ++++++++++++++++++++++++--------- 1 file changed, 84 insertions(+), 32 deletions(-) diff --git a/phpBB/includes/db/db_tools.php b/phpBB/includes/db/db_tools.php index 8372f90369..5645d04867 100644 --- a/phpBB/includes/db/db_tools.php +++ b/phpBB/includes/db/db_tools.php @@ -1815,22 +1815,49 @@ class phpbb_db_tools case 'mssql': case 'mssqlnative': - // remove default cosntraints first - // http://msdn.microsoft.com/en-us/library/aa175912%28v=sql.80%29.aspx - $statements[] = "DECLARE @drop_default_name VARCHAR(100), @cmd VARCHAR(1000) - SET @drop_default_name = - (SELECT so.name FROM sysobjects so - JOIN sysconstraints sc ON so.id = sc.constid - WHERE object_name(so.parent_obj) = '{$table_name}' - AND so.xtype = 'D' - AND sc.colid = (SELECT colid FROM syscolumns - WHERE id = object_id('{$table_name}') - AND name = '{$column_name}')) - IF @drop_default_name <> '' - BEGIN - SET @cmd = 'ALTER TABLE [{$table_name}] DROP CONSTRAINT [' + @drop_default_name + ']' - EXEC(@cmd) - END"; + $sql = "SELECT CAST(SERVERPROPERTY('productversion') AS VARCHAR(25)) AS mssql_version"; + $result = $this->db->sql_query($sql); + $row = $this->db->sql_fetchrow($result); + $this->db->sql_freeresult($result); + + // Remove default constraints + if ($row['mssql_version'][0] == '8') // SQL Server 2000 + { + // http://msdn.microsoft.com/en-us/library/aa175912%28v=sql.80%29.aspx + // Deprecated in SQL Server 2005 + $statements[] = "DECLARE @drop_default_name VARCHAR(100), @cmd VARCHAR(1000) + SET @drop_default_name = + (SELECT so.name FROM sysobjects so + JOIN sysconstraints sc ON so.id = sc.constid + WHERE object_name(so.parent_obj) = '{$table_name}' + AND so.xtype = 'D' + AND sc.colid = (SELECT colid FROM syscolumns + WHERE id = object_id('{$table_name}') + AND name = '{$column_name}')) + IF @drop_default_name <> '' + BEGIN + SET @cmd = 'ALTER TABLE [{$table_name}] DROP CONSTRAINT [' + @drop_default_name + ']' + EXEC(@cmd) + END"; + } + else + { + $sql = "SELECT dobj.name AS def_name + FROM sys.columns col + LEFT OUTER JOIN sys.objects dobj ON (dobj.object_id = col.default_object_id AND dobj.type = 'D') + WHERE col.object_id = object_id('{$table_name}') + AND col.name = '{$column_name}' + AND dobj.name IS NOT NULL"; + $result = $this->db->sql_query($sql); + $row = $this->db->sql_fetchrow($result); + $this->db->sql_freeresult($result); + + if ($row) + { + $statements[] = 'ALTER TABLE [' . $table_name . '] DROP CONSTRAINT [' . $row['def_name'] . ']'; + } + } + $statements[] = 'ALTER TABLE [' . $table_name . '] DROP COLUMN [' . $column_name . ']'; break; @@ -2317,23 +2344,48 @@ class phpbb_db_tools if (!empty($column_data['default'])) { + $sql = "SELECT CAST(SERVERPROPERTY('productversion') AS VARCHAR(25)) AS mssql_version"; + $result = $this->db->sql_query($sql); + $row = $this->db->sql_fetchrow($result); + $this->db->sql_freeresult($result); + // Using TRANSACT-SQL for this statement because we do not want to have colliding data if statements are executed at a later stage - $statements[] = "DECLARE @drop_default_name VARCHAR(100), @cmd VARCHAR(1000) - SET @drop_default_name = - (SELECT so.name FROM sysobjects so - JOIN sysconstraints sc ON so.id = sc.constid - WHERE object_name(so.parent_obj) = '{$table_name}' - AND so.xtype = 'D' - AND sc.colid = (SELECT colid FROM syscolumns - WHERE id = object_id('{$table_name}') - AND name = '{$column_name}')) - IF @drop_default_name <> '' - BEGIN - SET @cmd = 'ALTER TABLE [{$table_name}] DROP CONSTRAINT [' + @drop_default_name + ']' - EXEC(@cmd) - END - SET @cmd = 'ALTER TABLE [{$table_name}] ADD CONSTRAINT [DF_{$table_name}_{$column_name}_1] {$column_data['default']} FOR [{$column_name}]' - EXEC(@cmd)"; + if ($row['mssql_version'][0] == '8') // SQL Server 2000 + { + $statements[] = "DECLARE @drop_default_name VARCHAR(100), @cmd VARCHAR(1000) + SET @drop_default_name = + (SELECT so.name FROM sysobjects so + JOIN sysconstraints sc ON so.id = sc.constid + WHERE object_name(so.parent_obj) = '{$table_name}' + AND so.xtype = 'D' + AND sc.colid = (SELECT colid FROM syscolumns + WHERE id = object_id('{$table_name}') + AND name = '{$column_name}')) + IF @drop_default_name <> '' + BEGIN + SET @cmd = 'ALTER TABLE [{$table_name}] DROP CONSTRAINT [' + @drop_default_name + ']' + EXEC(@cmd) + END + SET @cmd = 'ALTER TABLE [{$table_name}] ADD CONSTRAINT [DF_{$table_name}_{$column_name}_1] {$column_data['default']} FOR [{$column_name}]' + EXEC(@cmd)"; + } + else + { + $statements[] = "DECLARE @drop_default_name VARCHAR(100), @cmd VARCHAR(1000) + SET @drop_default_name = + (SELECT dobj.name FROM sys.columns col + LEFT OUTER JOIN sys.objects dobj ON (dobj.object_id = col.default_object_id AND dobj.type = 'D') + WHERE col.object_id = object_id('{$table_name}') + AND col.name = '{$column_name}' + AND dobj.name IS NOT NULL) + IF @drop_default_name <> '' + BEGIN + SET @cmd = 'ALTER TABLE [{$table_name}] DROP CONSTRAINT [' + @drop_default_name + ']' + EXEC(@cmd) + END + SET @cmd = 'ALTER TABLE [{$table_name}] ADD CONSTRAINT [DF_{$table_name}_{$column_name}_1] {$column_data['default']} FOR [{$column_name}]' + EXEC(@cmd)"; + } } break; From 79492d41109eba2932c020bb5c9a90f19aac2321 Mon Sep 17 00:00:00 2001 From: Patrick Webster Date: Sun, 23 Mar 2014 22:17:52 -0500 Subject: [PATCH 9/9] [ticket/9725] Code sniffer fixes PHPBB3-9725 --- phpBB/includes/db/db_tools.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/phpBB/includes/db/db_tools.php b/phpBB/includes/db/db_tools.php index 5645d04867..8dce769395 100644 --- a/phpBB/includes/db/db_tools.php +++ b/phpBB/includes/db/db_tools.php @@ -472,7 +472,7 @@ class phpbb_db_tools { if (!isset($table_data['PRIMARY_KEY'])) { - $table_data['COLUMNS']['mssqlindex'] = array('UINT', NULL, 'auto_increment'); + $table_data['COLUMNS']['mssqlindex'] = array('UINT', null, 'auto_increment'); $table_data['PRIMARY_KEY'] = 'mssqlindex'; } } @@ -1819,7 +1819,7 @@ class phpbb_db_tools $result = $this->db->sql_query($sql); $row = $this->db->sql_fetchrow($result); $this->db->sql_freeresult($result); - + // Remove default constraints if ($row['mssql_version'][0] == '8') // SQL Server 2000 { @@ -1851,7 +1851,7 @@ class phpbb_db_tools $result = $this->db->sql_query($sql); $row = $this->db->sql_fetchrow($result); $this->db->sql_freeresult($result); - + if ($row) { $statements[] = 'ALTER TABLE [' . $table_name . '] DROP CONSTRAINT [' . $row['def_name'] . ']'; @@ -2348,7 +2348,7 @@ class phpbb_db_tools $result = $this->db->sql_query($sql); $row = $this->db->sql_fetchrow($result); $this->db->sql_freeresult($result); - + // Using TRANSACT-SQL for this statement because we do not want to have colliding data if statements are executed at a later stage if ($row['mssql_version'][0] == '8') // SQL Server 2000 {