blob: 9ba1e5082183aad74f4a74a7677ab6b28a3e9673 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
# frozen_string_literal: true
require 'active_record/connection_adapters/abstract_mysql_adapter'
module MysqlSessionOptions
def configure_connection
super
# Disable NO_ZERO_DATE mode for mysql.
# We use zero date as a default value
# (config/initializers/active_record_mysql_timestamp.rb), in
# Rails 5 using zero date fails by default (https://gitlab.com/gitlab-org/gitlab-ce/-/jobs/75450216)
# and NO_ZERO_DATE has to be explicitly disabled. Disabling strict mode
# is not sufficient.
sql_mode = "REPLACE(@@sql_mode, 'NO_ZERO_DATE', '')"
# Disable ONLY_FULL_GROUP_BY for mysql.
# If ONLY_FULL_GROUP_BY is enabled then GROUP BY clause
# must include all columns used in SELECT, HAVING and ORDER BY.
# This causes that "duplicit" records are then returned in
# some of our queries and these have to be filtered-out
# on rails side.
sql_mode = "REPLACE(#{sql_mode}, 'ONLY_FULL_GROUP_BY', '')"
@connection.query "SET @@SESSION.sql_mode = #{sql_mode};" # rubocop:disable Gitlab/ModuleWithInstanceVariables
end
end
ActiveRecord::ConnectionAdapters::AbstractMysqlAdapter.prepend(MysqlSessionOptions) if Gitlab.rails5?
|