PERF: move 3 more option columns out of the user table

This commit is contained in:
Sam
2016-02-18 16:57:22 +11:00
parent f9c5cded6f
commit f0e942f647
22 changed files with 278 additions and 250 deletions

View File

@ -32,9 +32,9 @@ duration = Rails.env.production? ? 60 : 0
if User.exec_sql("SELECT 1 FROM schema_migration_details
WHERE EXISTS(
SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = 'users' AND column_name = 'enable_quoting'
WHERE table_name = 'users' AND column_name = 'last_redirected_to_top_at'
) AND
name = 'AllowDefaultsOnUsersTable' AND
name = 'MoveTrackingOptionsToUserOptions' AND
created_at < (current_timestamp at time zone 'UTC' - interval '#{duration} minutes')
").to_a.length > 0
@ -54,7 +54,10 @@ if User.exec_sql("SELECT 1 FROM schema_migration_details
edit_history_public
automatically_unpin_topics
digest_after_days
].each do |column|
auto_track_topics_after_msecs
new_topic_duration_minutes
last_redirected_to_top_at
].each do |column|
User.exec_sql("ALTER TABLE users DROP column IF EXISTS #{column}")
end

View File

@ -0,0 +1,16 @@
class MoveTrackingOptionsToUserOptions < ActiveRecord::Migration
def change
add_column :user_options, :auto_track_topics_after_msecs, :integer
add_column :user_options, :new_topic_duration_minutes, :integer
add_column :user_options, :last_redirected_to_top_at, :datetime
execute <<SQL
UPDATE user_options
SET auto_track_topics_after_msecs = users.auto_track_topics_after_msecs,
new_topic_duration_minutes = users.new_topic_duration_minutes,
last_redirected_to_top_at = users.last_redirected_to_top_at
FROM users
WHERE users.id = user_options.user_id
SQL
end
end