summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2016-02-04 16:42:22 +0100
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2016-02-04 16:42:22 +0100
commitdfe12649f64bcac76b270a96be04285bbe0c2aa2 (patch)
treee98dc2bb6d887f8c904a5082748f9f9a5a1bafd3 /lib
parentd9624bb87aa6a1ad505cbb0541489c88ae662e44 (diff)
parent4105f292e1c9d9c9416914fcd41f9c982b4a80fb (diff)
downloadgitlab-ce-dfe12649f64bcac76b270a96be04285bbe0c2aa2.tar.gz
Merge remote-tracking branch 'origin/rs-database-info'
Diffstat (limited to 'lib')
-rw-r--r--lib/gitlab/database.rb38
1 files changed, 32 insertions, 6 deletions
diff --git a/lib/gitlab/database.rb b/lib/gitlab/database.rb
index de77a6fbff1..6ebb8027553 100644
--- a/lib/gitlab/database.rb
+++ b/lib/gitlab/database.rb
@@ -1,16 +1,23 @@
module Gitlab
module Database
+ def self.adapter_name
+ connection.adapter_name
+ end
+
def self.mysql?
- ActiveRecord::Base.connection.adapter_name.downcase == 'mysql2'
+ adapter_name.downcase == 'mysql2'
end
def self.postgresql?
- ActiveRecord::Base.connection.adapter_name.downcase == 'postgresql'
+ adapter_name.downcase == 'postgresql'
+ end
+
+ def self.version
+ database_version.match(/\A(?:PostgreSQL |)([^\s]+).*\z/)[1]
end
def true_value
- case ActiveRecord::Base.connection.adapter_name.downcase
- when 'postgresql'
+ if self.class.postgresql?
"'t'"
else
1
@@ -18,12 +25,31 @@ module Gitlab
end
def false_value
- case ActiveRecord::Base.connection.adapter_name.downcase
- when 'postgresql'
+ if self.class.postgresql?
"'f'"
else
0
end
end
+
+ private
+
+ def self.connection
+ ActiveRecord::Base.connection
+ end
+
+ def self.database_version
+ row = connection.execute("SELECT VERSION()").first
+
+ if postgresql?
+ row['version']
+ else
+ row.first
+ end
+ end
+
+ def connection
+ self.class.connection
+ end
end
end