X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FSchema%2FLoader%2FDBI%2FPg.pm;h=78e8a9f6ef1501cc0111074142469c829a2af0b8;hb=46564a42215c5309753f3e0609ae1adddf68d083;hp=f701e36289833b42e96b667e33d0e5c44dcf5fb8;hpb=a07eab0a070a742540c0cf432c651c0be0a3b9e7;p=dbsrgits%2FDBIx-Class-Schema-Loader.git diff --git a/lib/DBIx/Class/Schema/Loader/DBI/Pg.pm b/lib/DBIx/Class/Schema/Loader/DBI/Pg.pm index f701e36..78e8a9f 100644 --- a/lib/DBIx/Class/Schema/Loader/DBI/Pg.pm +++ b/lib/DBIx/Class/Schema/Loader/DBI/Pg.pm @@ -5,7 +5,7 @@ use warnings; use base 'DBIx::Class::Schema::Loader::DBI::Component::QuotedDefault'; use mro 'c3'; -our $VERSION = '0.07047'; +our $VERSION = '0.07048_01'; =head1 NAME @@ -308,24 +308,28 @@ EOF } } -# process SERIAL columns - if (ref($info->{default_value}) eq 'SCALAR' - && ${ $info->{default_value} } =~ /\bnextval\('([^:]+)'/i) { - $info->{is_auto_increment} = 1; - $info->{sequence} = $1; - delete $info->{default_value}; - } - -# alias now() to current_timestamp for deploying to other DBs - if ((eval { lc ${ $info->{default_value} } }||'') eq 'now()') { - # do not use a ref to a constant, that breaks Data::Dump output - ${$info->{default_value}} = 'current_timestamp'; + if (ref($info->{default_value}) eq 'SCALAR') { + # process SERIAL columns + if (${ $info->{default_value} } =~ /\bnextval\('([^:]+)'/i) { + $info->{is_auto_increment} = 1; + $info->{sequence} = $1; + delete $info->{default_value}; + } + # alias now() to current_timestamp for deploying to other DBs + elsif (lc ${ $info->{default_value} } eq 'now()') { + # do not use a ref to a constant, that breaks Data::Dump output + ${$info->{default_value}} = 'current_timestamp'; - my $now = 'now()'; - $info->{original}{default_value} = \$now; + my $now = 'now()'; + $info->{original}{default_value} = \$now; + } + elsif (${ $info->{default_value} } =~ /\bCURRENT_TIMESTAMP\b/) { + # PostgreSQL v10 upcases current_timestamp in default values + ${ $info->{default_value} } =~ s/\b(CURRENT_TIMESTAMP)\b/lc $1/ge; + } } -# detect 0/1 for booleans and rewrite + # detect 0/1 for booleans and rewrite if ($data_type =~ /^bool/i && exists $info->{default_value}) { if ($info->{default_value} eq '0') { my $false = 'false';