X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FSchema%2FLoader%2FDBI%2FPg.pm;h=4ef980ff37c545eb870880c69a366ed4d4d813fa;hb=d7e0e0e8e9517098567f1a5637771505476ccbc1;hp=131fbd3d77e1b7ffc8c2d49065875d564e54fcaf;hpb=f8791d9f87ade4a4beadf02716e59d2f72a7b25e;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 131fbd3..4ef980f 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.07043'; +our $VERSION = '0.07045'; =head1 NAME @@ -289,11 +289,10 @@ FROM pg_catalog.pg_type WHERE typname = ? EOF if ($typetype && $typetype eq 'e') { - # The following will extract a list of allowed values for the - # enum. + # The following will extract a list of allowed values for the enum. my $order_column = $self->dbh->{pg_server_version} >= 90100 ? 'enumsortorder' : 'oid'; - my $typevalues = $self->dbh - ->selectall_arrayref(<{data_type}); + $info->{extra}{list} = $self->dbh + ->selectcol_arrayref(<{data_type}); SELECT e.enumlabel FROM pg_catalog.pg_enum e JOIN pg_catalog.pg_type t ON t.oid = e.enumtypid @@ -301,8 +300,6 @@ WHERE t.typname = ? ORDER BY e.$order_column EOF - $info->{extra}{list} = [ map { $_->[0] } @$typevalues ]; - # Store its original name in extra for SQLT to pick up. $info->{extra}{custom_type_name} = $info->{data_type}; @@ -345,6 +342,22 @@ EOF return $result; } +sub _view_definition { + my ($self, $view) = @_; + + my $def = $self->schema->storage->dbh->selectrow_array(<<'EOF', {}, $view->schema, $view->name); +SELECT pg_catalog.pg_get_viewdef(oid) +FROM pg_catalog.pg_class +WHERE relnamespace = (SELECT OID FROM pg_catalog.pg_namespace WHERE nspname = ?) +AND relname = ? +EOF + # The definition is returned as a complete statement including the + # trailing semicolon, but that's not allowed in CREATE VIEW, so + # strip it out + $def =~ s/\s*;\s*\z//; + return $def; +} + =head1 SEE ALSO L, L,