diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-01-31 21:09:11 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-01-31 21:09:11 +0300 |
commit | 0434f38ef1dce4fe640fe1e4542235746ceb943c (patch) | |
tree | 3affe5902c9da74441dfbf5069f76c023b5cd03a /lib/gitlab/database | |
parent | c27acb1d376f7127cd33eadcc8f5683ed55262bc (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'lib/gitlab/database')
-rw-r--r-- | lib/gitlab/database/grant.rb | 11 |
1 files changed, 3 insertions, 8 deletions
diff --git a/lib/gitlab/database/grant.rb b/lib/gitlab/database/grant.rb index 1f47f320a29..7774dd9fffe 100644 --- a/lib/gitlab/database/grant.rb +++ b/lib/gitlab/database/grant.rb @@ -3,23 +3,18 @@ module Gitlab module Database # Model that can be used for querying permissions of a SQL user. - class Grant < ActiveRecord::Base - include FromUnion - - self.table_name = 'information_schema.role_table_grants' - + class Grant # Returns true if the current user can create and execute triggers on the # given table. def self.create_and_execute_trigger?(table) # We _must not_ use quote_table_name as this will produce double # quotes on PostgreSQL and for "has_table_privilege" we need single # quotes. + connection = ActiveRecord::Base.connection quoted_table = connection.quote(table) begin - from(nil) - .pluck(Arel.sql("has_table_privilege(#{quoted_table}, 'TRIGGER')")) - .first + connection.select_one("SELECT has_table_privilege(#{quoted_table}, 'TRIGGER')").present? rescue ActiveRecord::StatementInvalid # This error is raised when using a non-existing table name. In this # case we just want to return false as a user technically can't |