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=2a95245f8b627a4dd67caef3b5fad4358cd8e349;hpb=306bf770bf08b06f92863808b1938f2fc704acb0;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 2a95245..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 @@ -286,22 +286,21 @@ EOF ->selectrow_array(<dbh->{pg_server_version} >= 90100 ? 'enumsortorder' : 'oid'; $info->{extra}{list} = $self->dbh - ->selectcol_arrayref(<{data_type}); + ->selectcol_arrayref(<{extra}{custom_type_name} = $info->{data_type}; + $info->{extra}{custom_type_name} = $data_type; $info->{data_type} = 'enum'; @@ -309,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';