Commit 17335a42 authored by Sean McGivern's avatar Sean McGivern

Merge branch 'rails5-database' into 'master'

Fix table_exists? to be Rails5 compatible

Closes #45107

See merge request gitlab-org/gitlab-ce!19418
parents c4a3587c fa36101a
...@@ -68,7 +68,7 @@ class Project < ActiveRecord::Base ...@@ -68,7 +68,7 @@ class Project < ActiveRecord::Base
add_authentication_token_field :runners_token add_authentication_token_field :runners_token
before_validation :mark_remote_mirrors_for_removal, if: -> { ActiveRecord::Base.connection.table_exists?(:remote_mirrors) } before_validation :mark_remote_mirrors_for_removal, if: -> { RemoteMirror.table_exists? }
before_save :ensure_runners_token before_save :ensure_runners_token
......
require 'active_record/migration'
module ActiveRecord
class Migration
# data_source_exists? is not available in 4.2.10, table_exists deprecated in 5.0
def table_exists?(table_name)
ActiveRecord::Base.connection.data_source_exists?(table_name)
end
end
end
...@@ -54,7 +54,8 @@ module Gitlab ...@@ -54,7 +54,8 @@ module Gitlab
def ensure_temporary_tracking_table_exists def ensure_temporary_tracking_table_exists
table_name = :untracked_files_for_uploads table_name = :untracked_files_for_uploads
unless UntrackedFile.connection.table_exists?(table_name)
unless ActiveRecord::Base.connection.data_source_exists?(table_name)
UntrackedFile.connection.create_table table_name do |t| UntrackedFile.connection.create_table table_name do |t|
t.string :path, limit: 600, null: false t.string :path, limit: 600, null: false
t.index :path, unique: true t.index :path, unique: true
......
...@@ -188,9 +188,12 @@ module Gitlab ...@@ -188,9 +188,12 @@ module Gitlab
end end
def self.cached_table_exists?(table_name) def self.cached_table_exists?(table_name)
# Rails 5 uses data_source_exists? instead of table_exists? if Gitlab.rails5?
connection.schema_cache.data_source_exists?(table_name)
else
connection.schema_cache.table_exists?(table_name) connection.schema_cache.table_exists?(table_name)
end end
end
private_class_method :connection private_class_method :connection
......
...@@ -114,7 +114,7 @@ describe Gitlab::BackgroundMigration::PopulateUntrackedUploads, :sidekiq, :migra ...@@ -114,7 +114,7 @@ describe Gitlab::BackgroundMigration::PopulateUntrackedUploads, :sidekiq, :migra
it 'does not drop the temporary tracking table after processing the batch, if there are still untracked rows' do it 'does not drop the temporary tracking table after processing the batch, if there are still untracked rows' do
subject.perform(1, untracked_files_for_uploads.last.id - 1) subject.perform(1, untracked_files_for_uploads.last.id - 1)
expect(ActiveRecord::Base.connection.table_exists?(:untracked_files_for_uploads)).to be_truthy expect(ActiveRecord::Base.connection.data_source_exists?(:untracked_files_for_uploads)).to be_truthy
end end
it 'drops the temporary tracking table after processing the batch, if there are no untracked rows left' do it 'drops the temporary tracking table after processing the batch, if there are no untracked rows left' do
......
...@@ -314,8 +314,13 @@ describe Gitlab::Database do ...@@ -314,8 +314,13 @@ describe Gitlab::Database do
describe '.cached_table_exists?' do describe '.cached_table_exists?' do
it 'only retrieves data once per table' do it 'only retrieves data once per table' do
if Gitlab.rails5?
expect(ActiveRecord::Base.connection).to receive(:data_source_exists?).with(:projects).once.and_call_original
expect(ActiveRecord::Base.connection).to receive(:data_source_exists?).with(:bogus_table_name).once.and_call_original
else
expect(ActiveRecord::Base.connection).to receive(:table_exists?).with(:projects).once.and_call_original expect(ActiveRecord::Base.connection).to receive(:table_exists?).with(:projects).once.and_call_original
expect(ActiveRecord::Base.connection).to receive(:table_exists?).with(:bogus_table_name).once.and_call_original expect(ActiveRecord::Base.connection).to receive(:table_exists?).with(:bogus_table_name).once.and_call_original
end
2.times do 2.times do
expect(described_class.cached_table_exists?(:projects)).to be_truthy expect(described_class.cached_table_exists?(:projects)).to be_truthy
......
...@@ -10,10 +10,6 @@ module MigrationsHelpers ...@@ -10,10 +10,6 @@ module MigrationsHelpers
ActiveRecord::Migrator.migrations_paths ActiveRecord::Migrator.migrations_paths
end end
def table_exists?(name)
ActiveRecord::Base.connection.table_exists?(name)
end
def migrations def migrations
ActiveRecord::Migrator.migrations(migrations_paths) ActiveRecord::Migrator.migrations(migrations_paths)
end end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment