use strict;
use warnings;
-use Class::C3;
+use base 'DBIx::Class::Schema::Loader::DBI';
+use mro 'c3';
-our $VERSION = '0.05000';
+our $VERSION = '0.07029';
=head1 NAME
-DBIx::Class::Schema::Loader::DBI::Component::QuotedDefault -- Loader Component
-to parse quoted default constants and functions
+DBIx::Class::Schema::Loader::DBI::Component::QuotedDefault -- Loader::DBI
+Component to parse quoted default constants and functions
=head1 DESCRIPTION
$def =~ s/^\s+//;
$def =~ s/\s+\z//;
- if ($def =~ /^["'](.*?)['"]\z/) {
+# remove Pg typecasts (e.g. 'foo'::character varying) too
+ if ($def =~ /^["'](.*?)['"](?:::[\w\s]+)?\z/) {
$info->{default_value} = $1;
}
+# Some DBs (eg. Pg) put parenthesis around negative number defaults
+ elsif ($def =~ /^\((-?\d.*?)\)(?:::[\w\s]+)?\z/) {
+ $info->{default_value} = $1;
+ }
+ elsif ($def =~ /^(-?\d.*?)(?:::[\w\s]+)?\z/) {
+ $info->{default_value} = $1;
+ }
+ elsif ($def =~ /^NULL:?/i) {
+ my $null = 'null';
+ $info->{default_value} = \$null;
+ }
else {
- $info->{default_value} = $def =~ /^\d/ ? $def : \$def;
+ $info->{default_value} = \$def;
}
}
}