X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FSchema%2FLoader%2FDBI%2FPg.pm;h=2a95245f8b627a4dd67caef3b5fad4358cd8e349;hb=306bf770bf08b06f92863808b1938f2fc704acb0;hp=a70106a10ca40b329030a4ff5c6caf574ea73d1a;hpb=a6fd0a48650a165b84866c1d14b65d35f25ef416;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 a70106a..2a95245 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.07047'; =head1 NAME @@ -184,13 +184,11 @@ sub _column_comment { return $column_comment if $column_comment; - my ($table_oid) = $self->dbh->selectrow_array(<<'EOF', {}, $table->name, $table->schema); -SELECT oid + return $self->dbh->selectrow_array(<<'EOF', {}, $column_number, $table->name, $table->schema); +SELECT pg_catalog.col_description(oid, ?) FROM pg_catalog.pg_class WHERE relname=? AND relnamespace=(SELECT oid FROM pg_catalog.pg_namespace WHERE nspname=?) EOF - - return $self->dbh->selectrow_array('SELECT pg_catalog.col_description(?,?)', {}, $table_oid, $column_number); } # Make sure data_type's that don't need it don't have a 'size' column_info, and @@ -291,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 @@ -303,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}; @@ -347,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,