@@ -, +, @@ --- Koha/Schema/Loader/mysql.pm | 59 +++++++++++++++++++++++++++++++++++ misc/devel/update_dbix_class_files.pl | 8 +++-- 2 files changed, 65 insertions(+), 2 deletions(-) create mode 100644 Koha/Schema/Loader/mysql.pm --- a/Koha/Schema/Loader/mysql.pm +++ a/Koha/Schema/Loader/mysql.pm @@ -0,0 +1,59 @@ +use utf8; + +package Koha::Schema::Loader::mysql; + +# Copyright 2020 PTFS Europe +# +# This file is part of Koha. +# +# Koha is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# Koha is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with Koha; if not, see . + +use Modern::Perl; + +use base 'DBIx::Class::Schema::Loader::DBI::mysql'; +use mro 'c3'; + +use Scalar::Util 'blessed'; + +# This is being upstreamed, but for now lets make sure whatever version of DBIx::Class::Schema::Loader you are using, +# we will catch MariaDB current_timestamp() and convert it to \"current_timestamp" correctly. +sub _extra_column_info { + no warnings 'uninitialized'; + my ( $self, $table, $col, $info, $dbi_info ) = @_; + my %extra_info; + + if ( $dbi_info->{mysql_is_auto_increment} ) { + $extra_info{is_auto_increment} = 1; + } + if ( $dbi_info->{mysql_type_name} =~ /\bunsigned\b/i ) { + $extra_info{extra}{unsigned} = 1; + } + if ( $dbi_info->{mysql_values} ) { + $extra_info{extra}{list} = $dbi_info->{mysql_values}; + } + if ( + ( not blessed $dbi_info) # isa $sth + && lc( $dbi_info->{COLUMN_DEF} ) =~ m/^current_timestamp/ + && lc( $dbi_info->{mysql_type_name} ) eq 'timestamp' + ) + { + + my $current_timestamp = 'current_timestamp'; + $extra_info{default_value} = \$current_timestamp; + } + + return \%extra_info; +} + +1; --- a/misc/devel/update_dbix_class_files.pl +++ a/misc/devel/update_dbix_class_files.pl @@ -19,7 +19,6 @@ # along with Koha; if not, see . use Modern::Perl; - use DBIx::Class::Schema::Loader qw/ make_schema_at /; use Getopt::Long; @@ -99,7 +98,12 @@ if (! defined $db_name ) { make_schema_at( "Koha::Schema", { debug => 1, dump_directory => $path, preserve_case => 1 }, - ["DBI:$db_driver:dbname=$db_name;host=$db_host;port=$db_port",$db_user, $db_passwd ] + [ + "DBI:$db_driver:dbname=$db_name;host=$db_host;port=$db_port", + $db_user, + $db_passwd, + { loader_class => 'Koha::Schema::Loader::mysql' } + ] ); } --