diff options
author | Jan Provaznik <jprovaznik@gitlab.com> | 2018-06-09 20:13:50 +0200 |
---|---|---|
committer | Jan Provaznik <jprovaznik@gitlab.com> | 2018-06-21 22:06:50 +0200 |
commit | 1ec356a0b5b6594ef0df3fb764cb57c0859ca86f (patch) | |
tree | b75ffcc6ec975429457a4ac7e0d6c701ee3bfc95 /lib/mysql_zero_date.rb | |
parent | e3a1b825f4c787e2fb29f852c530138347014d31 (diff) | |
download | gitlab-ce-1ec356a0b5b6594ef0df3fb764cb57c0859ca86f.tar.gz |
Mysql fixes for Rails 5jprovazn-rails5-mysql-datetime
* `MysqlDateTimeWithTimeZone` inherits from `ActiveRecord::Type::DateTime`
(`MysqlDateTime` is not present in Rails 5)
* explicitly set `NULL` default value for `merge_request_diff_files`'s
`diff` column (otherwise empty string is used in a migration) and
empty string is not allowed for text/blob fields in Mysql
* disable NO_ZERO_DATE mode for all Mysql DB connections, otherwise
SQL queries fail on inserting `0` value for `created_at` column
Diffstat (limited to 'lib/mysql_zero_date.rb')
-rw-r--r-- | lib/mysql_zero_date.rb | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/lib/mysql_zero_date.rb b/lib/mysql_zero_date.rb new file mode 100644 index 00000000000..64634f789da --- /dev/null +++ b/lib/mysql_zero_date.rb @@ -0,0 +1,18 @@ +# Disable NO_ZERO_DATE mode for mysql in rails 5. +# 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. + +require 'active_record/connection_adapters/abstract_mysql_adapter' + +module MysqlZeroDate + def configure_connection + super + + @connection.query "SET @@SESSION.sql_mode = REPLACE(@@SESSION.sql_mode, 'NO_ZERO_DATE', '');" # rubocop:disable Gitlab/ModuleWithInstanceVariables + end +end + +ActiveRecord::ConnectionAdapters::AbstractMysqlAdapter.prepend(MysqlZeroDate) if Gitlab.rails5? |