[Bast-commits] r7988 - in branches/DBIx-Class-Schema-Loader/back-compat: . lib/DBIx/Class/Schema lib/DBIx/Class/Schema/Loader lib/DBIx/Class/Schema/Loader/DBI lib/DBIx/Class/Schema/Loader/DBI/ODBC lib/DBIx/Class/Schema/Loader/DBI/Sybase t t/lib

caelum at dev.catalyst.perl.org caelum at dev.catalyst.perl.org
Sun Nov 29 18:32:00 GMT 2009


Author: caelum
Date: 2009-11-29 18:32:00 +0000 (Sun, 29 Nov 2009)
New Revision: 7988

Removed:
   branches/DBIx-Class-Schema-Loader/back-compat/README
Modified:
   branches/DBIx-Class-Schema-Loader/back-compat/
   branches/DBIx-Class-Schema-Loader/back-compat/Changes
   branches/DBIx-Class-Schema-Loader/back-compat/Makefile.PL
   branches/DBIx-Class-Schema-Loader/back-compat/lib/DBIx/Class/Schema/Loader.pm
   branches/DBIx-Class-Schema-Loader/back-compat/lib/DBIx/Class/Schema/Loader/Base.pm
   branches/DBIx-Class-Schema-Loader/back-compat/lib/DBIx/Class/Schema/Loader/DBI.pm
   branches/DBIx-Class-Schema-Loader/back-compat/lib/DBIx/Class/Schema/Loader/DBI/DB2.pm
   branches/DBIx-Class-Schema-Loader/back-compat/lib/DBIx/Class/Schema/Loader/DBI/MSSQL.pm
   branches/DBIx-Class-Schema-Loader/back-compat/lib/DBIx/Class/Schema/Loader/DBI/ODBC.pm
   branches/DBIx-Class-Schema-Loader/back-compat/lib/DBIx/Class/Schema/Loader/DBI/ODBC/Microsoft_SQL_Server.pm
   branches/DBIx-Class-Schema-Loader/back-compat/lib/DBIx/Class/Schema/Loader/DBI/Oracle.pm
   branches/DBIx-Class-Schema-Loader/back-compat/lib/DBIx/Class/Schema/Loader/DBI/Pg.pm
   branches/DBIx-Class-Schema-Loader/back-compat/lib/DBIx/Class/Schema/Loader/DBI/SQLite.pm
   branches/DBIx-Class-Schema-Loader/back-compat/lib/DBIx/Class/Schema/Loader/DBI/Sybase.pm
   branches/DBIx-Class-Schema-Loader/back-compat/lib/DBIx/Class/Schema/Loader/DBI/Sybase/Common.pm
   branches/DBIx-Class-Schema-Loader/back-compat/lib/DBIx/Class/Schema/Loader/DBI/Sybase/Microsoft_SQL_Server.pm
   branches/DBIx-Class-Schema-Loader/back-compat/lib/DBIx/Class/Schema/Loader/DBI/Writing.pm
   branches/DBIx-Class-Schema-Loader/back-compat/lib/DBIx/Class/Schema/Loader/DBI/mysql.pm
   branches/DBIx-Class-Schema-Loader/back-compat/lib/DBIx/Class/Schema/Loader/RelBuilder.pm
   branches/DBIx-Class-Schema-Loader/back-compat/t/12pg_common.t
   branches/DBIx-Class-Schema-Loader/back-compat/t/20invocations.t
   branches/DBIx-Class-Schema-Loader/back-compat/t/22dump.t
   branches/DBIx-Class-Schema-Loader/back-compat/t/23dumpmore.t
   branches/DBIx-Class-Schema-Loader/back-compat/t/lib/dbixcsl_common_tests.pm
Log:
 r21690 at hlagh (orig r7985):  caelum | 2009-11-29 09:51:18 -0500
 added patch to generate POD from postgres by Andrey Kostenko (GUGU)
 r21691 at hlagh (orig r7986):  caelum | 2009-11-29 12:49:40 -0500
 fix table count test in common tests, inc version for dev release, add extra tests for table/column comments for Pg, make tests less noisy
 r21692 at hlagh (orig r7987):  caelum | 2009-11-29 13:17:04 -0500
 new dev release



Property changes on: branches/DBIx-Class-Schema-Loader/back-compat
___________________________________________________________________
Name: svk:merge
   - 46bc3436-8211-0410-8564-d96f7a728040:/local/DBIx-Class-Schema-Loader/branches/common-dump:37173
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class-Schema-Loader/current:7970
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class-Schema-Loader/mssql_tweaks:7407
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class-Schema-Loader/odbc-mssql:6439
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/trunk/DBIx-Class-Schema-Loader:5726
   + 46bc3436-8211-0410-8564-d96f7a728040:/local/DBIx-Class-Schema-Loader/branches/common-dump:37173
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class-Schema-Loader/current:7987
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class-Schema-Loader/mssql_tweaks:7407
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class-Schema-Loader/odbc-mssql:6439
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/trunk/DBIx-Class-Schema-Loader:5726

Modified: branches/DBIx-Class-Schema-Loader/back-compat/Changes
===================================================================
--- branches/DBIx-Class-Schema-Loader/back-compat/Changes	2009-11-29 18:17:04 UTC (rev 7987)
+++ branches/DBIx-Class-Schema-Loader/back-compat/Changes	2009-11-29 18:32:00 UTC (rev 7988)
@@ -1,5 +1,7 @@
 Revision history for Perl extension DBIx::Class::Schema::Loader
 
+0.04999_11  2009-11-29 18:08:46
+        - added patch to generate POD from postgres by Andrey Kostenko (GUGU)
         - added test for norewrite feature
         - fix default_value for MSSQL
 

Modified: branches/DBIx-Class-Schema-Loader/back-compat/Makefile.PL
===================================================================
--- branches/DBIx-Class-Schema-Loader/back-compat/Makefile.PL	2009-11-29 18:17:04 UTC (rev 7987)
+++ branches/DBIx-Class-Schema-Loader/back-compat/Makefile.PL	2009-11-29 18:32:00 UTC (rev 7988)
@@ -125,10 +125,12 @@
 }
 
 # Rebuild README for maintainers
-if(-e 'MANIFEST.SKIP') {
+if ($Module::Install::AUTHOR) {
     system("pod2text lib/DBIx/Class/Schema/Loader.pm > README");
 }
 
+realclean_files 'README';
+
 resources 'IRC'         => 'irc://irc.perl.org/#dbix-class';
 resources 'license'     => 'http://dev.perl.org/licenses/';
 resources 'repository'  => 'http://dev.catalyst.perl.org/repos/bast/branches/DBIx-Class-Schema-Loader/current/';

Deleted: branches/DBIx-Class-Schema-Loader/back-compat/README
===================================================================
--- branches/DBIx-Class-Schema-Loader/back-compat/README	2009-11-29 18:17:04 UTC (rev 7987)
+++ branches/DBIx-Class-Schema-Loader/back-compat/README	2009-11-29 18:32:00 UTC (rev 7988)
@@ -1,241 +0,0 @@
-NAME
-    DBIx::Class::Schema::Loader - Dynamic definition of a
-    DBIx::Class::Schema
-
-SYNOPSIS
-      ### use this module to generate a set of class files
-
-      # in a script
-      use DBIx::Class::Schema::Loader qw/ make_schema_at /;
-      make_schema_at(
-          'My::Schema',
-          { debug => 1,
-            dump_directory => './lib',
-          },
-          [ 'dbi:Pg:dbname="foo"', 'myuser', 'mypassword' ],
-      );
-
-      # from the command line or a shell script with dbicdump (distributed
-      # with this module).  Do `perldoc dbicdump` for usage.
-      dbicdump -o dump_directory=./lib \
-               -o debug=1 \
-               My::Schema \
-               'dbi:Pg:dbname=foo' \
-               myuser \
-               mypassword
-
-      ### or generate and load classes at runtime
-      # note: this technique is not recommended
-      # for use in production code
-
-      package My::Schema;
-      use base qw/DBIx::Class::Schema::Loader/;
-
-      __PACKAGE__->loader_options(
-          constraint              => '^foo.*',
-          # debug                 => 1,
-      );
-
-      #### in application code elsewhere:
-
-      use My::Schema;
-
-      my $schema1 = My::Schema->connect( $dsn, $user, $password, $attrs);
-      # -or-
-      my $schema1 = "My::Schema"; $schema1->connection(as above);
-
-DESCRIPTION
-    DBIx::Class::Schema::Loader automates the definition of a
-    DBIx::Class::Schema by scanning database table definitions and setting
-    up the columns, primary keys, and relationships.
-
-    DBIx::Class::Schema::Loader currently supports only the DBI storage
-    type. It has explicit support for DBD::Pg, DBD::mysql, DBD::DB2,
-    DBD::SQLite, and DBD::Oracle. Other DBI drivers may function to a
-    greater or lesser degree with this loader, depending on how much of the
-    DBI spec they implement, and how standard their implementation is.
-
-    Patches to make other DBDs work correctly welcome.
-
-    See DBIx::Class::Schema::Loader::DBI::Writing for notes on writing your
-    own vendor-specific subclass for an unsupported DBD driver.
-
-    This module requires DBIx::Class 0.07006 or later, and obsoletes the
-    older DBIx::Class::Loader.
-
-    This module is designed more to get you up and running quickly against
-    an existing database, or to be effective for simple situations, rather
-    than to be what you use in the long term for a complex database/project.
-
-    That being said, transitioning your code from a Schema generated by this
-    module to one that doesn't use this module should be straightforward and
-    painless, so don't shy away from it just for fears of the transition
-    down the road.
-
-METHODS
-  loader_class
-    Argument: $loader_class
-
-    Set the loader class to be instantiated when "connection" is called. If
-    the classname starts with "::", "DBIx::Class::Schema::Loader" is
-    prepended. Defaults to "storage_type" in DBIx::Class::Schema (which must
-    start with "::" when using DBIx::Class::Schema::Loader).
-
-    This is mostly useful for subclassing existing loaders or in conjunction
-    with "dump_to_dir".
-
-  loader_options
-    Argument: \%loader_options
-
-    Example in Synopsis above demonstrates a few common arguments. For
-    detailed information on all of the arguments, most of which are only
-    useful in fairly complex scenarios, see the
-    DBIx::Class::Schema::Loader::Base documentation.
-
-    If you intend to use "loader_options", you must call "loader_options"
-    before any connection is made, or embed the "loader_options" in the
-    connection information itself as shown below. Setting "loader_options"
-    after the connection has already been made is useless.
-
-  connection
-    Arguments: @args
-    Return Value: $new_schema
-
-    See "connection" in DBIx::Class::Schema for basic usage.
-
-    If the final argument is a hashref, and it contains the keys
-    "loader_options" or "loader_class", those keys will be deleted, and
-    their values value will be used for the loader options or class,
-    respectively, just as if set via the "loader_options" or "loader_class"
-    methods above.
-
-    The actual auto-loading operation (the heart of this module) will be
-    invoked as soon as the connection information is defined.
-
-  clone
-    See "clone" in DBIx::Class::Schema.
-
-  dump_to_dir
-    Argument: $directory
-
-    Calling this as a class method on either DBIx::Class::Schema::Loader or
-    any derived schema class will cause all schemas to dump manual versions
-    of themselves to the named directory when they are loaded. In order to
-    be effective, this must be set before defining a connection on this
-    schema class or any derived object (as the loading happens as soon as
-    both a connection and loader_options are set, and only once per class).
-
-    See "dump_directory" in DBIx::Class::Schema::Loader::Base for more
-    details on the dumping mechanism.
-
-    This can also be set at module import time via the import option
-    "dump_to_dir:/foo/bar" to DBIx::Class::Schema::Loader, where "/foo/bar"
-    is the target directory.
-
-    Examples:
-
-        # My::Schema isa DBIx::Class::Schema::Loader, and has connection info
-        #   hardcoded in the class itself:
-        perl -MDBIx::Class::Schema::Loader=dump_to_dir:/foo/bar -MMy::Schema -e1
-
-        # Same, but no hard-coded connection, so we must provide one:
-        perl -MDBIx::Class::Schema::Loader=dump_to_dir:/foo/bar -MMy::Schema -e 'My::Schema->connection("dbi:Pg:dbname=foo", ...)'
-
-        # Or as a class method, as long as you get it done *before* defining a
-        #  connection on this schema class or any derived object:
-        use My::Schema;
-        My::Schema->dump_to_dir('/foo/bar');
-        My::Schema->connection(........);
-
-        # Or as a class method on the DBIx::Class::Schema::Loader itself, which affects all
-        #   derived schemas
-        use My::Schema;
-        use My::OtherSchema;
-        DBIx::Class::Schema::Loader->dump_to_dir('/foo/bar');
-        My::Schema->connection(.......);
-        My::OtherSchema->connection(.......);
-
-        # Another alternative to the above:
-        use DBIx::Class::Schema::Loader qw| dump_to_dir:/foo/bar |;
-        use My::Schema;
-        use My::OtherSchema;
-        My::Schema->connection(.......);
-        My::OtherSchema->connection(.......);
-
-  make_schema_at
-    Arguments: $schema_class_name, \%loader_options, \@connect_info
-    Return Value: $schema_class_name
-
-    This function creates a DBIx::Class schema from an existing RDBMS
-    schema. With the "dump_directory" option, generates a set of DBIx::Class
-    classes from an existing database schema read from the given dsn.
-    Without a "dump_directory", creates schema classes in memory at runtime
-    without generating on-disk class files.
-
-    For a complete list of supported loader_options, see
-    DBIx::Class::Schema::Loader::Base
-
-    This function can be imported in the usual way, as illustrated in these
-    Examples:
-
-        # Simple example, creates as a new class 'New::Schema::Name' in
-        #  memory in the running perl interpreter.
-        use DBIx::Class::Schema::Loader qw/ make_schema_at /;
-        make_schema_at(
-            'New::Schema::Name',
-            { debug => 1 },
-            [ 'dbi:Pg:dbname="foo"','postgres' ],
-        );
-
-        # Inside a script, specifying a dump directory in which to write
-        # class files
-        use DBIx::Class::Schema::Loader qw/ make_schema_at /;
-        make_schema_at(
-            'New::Schema::Name',
-            { debug => 1, dump_directory => './lib' },
-            [ 'dbi:Pg:dbname="foo"','postgres' ],
-        );
-
-  rescan
-    Return Value: @new_monikers
-
-    Re-scans the database for newly added tables since the initial load, and
-    adds them to the schema at runtime, including relationships, etc. Does
-    not process drops or changes.
-
-    Returns a list of the new monikers added.
-
-KNOWN ISSUES
-  Multiple Database Schemas
-    Currently the loader is limited to working within a single schema (using
-    the underlying RDBMS's definition of "schema"). If you have a
-    multi-schema database with inter-schema relationships (which is easy to
-    do in PostgreSQL or DB2 for instance), you currently can only
-    automatically load the tables of one schema, and relationships to tables
-    in other schemas will be silently ignored.
-
-    At some point in the future, an intelligent way around this might be
-    devised, probably by allowing the "db_schema" option to be an arrayref
-    of schemas to load.
-
-    In "normal" DBIx::Class::Schema usage, manually-defined source classes
-    and relationships have no problems crossing vendor schemas.
-
-AUTHOR
-    Brandon Black, "blblack at gmail.com"
-
-    Based on DBIx::Class::Loader by Sebastian Riedel
-
-    Based upon the work of IKEBE Tomohiro
-
-THANK YOU
-    Matt S Trout, all of the #dbix-class folks, and everyone who's ever sent
-    in a bug report or suggestion.
-
-LICENSE
-    This library is free software; you can redistribute it and/or modify it
-    under the same terms as Perl itself.
-
-SEE ALSO
-    DBIx::Class, DBIx::Class::Manual::ExampleSchema
-

Modified: branches/DBIx-Class-Schema-Loader/back-compat/lib/DBIx/Class/Schema/Loader/Base.pm
===================================================================
--- branches/DBIx-Class-Schema-Loader/back-compat/lib/DBIx/Class/Schema/Loader/Base.pm	2009-11-29 18:17:04 UTC (rev 7987)
+++ branches/DBIx-Class-Schema-Loader/back-compat/lib/DBIx/Class/Schema/Loader/Base.pm	2009-11-29 18:32:00 UTC (rev 7988)
@@ -16,7 +16,7 @@
 use Class::Unload;
 require DBIx::Class;
 
-our $VERSION = '0.04999_10';
+our $VERSION = '0.04999_11';
 
 __PACKAGE__->mk_ro_accessors(qw/
                                 schema
@@ -996,15 +996,59 @@
     my $self = shift;
     my $class = shift;
     my $method = shift;
-
+    if ( $method eq 'table' ) {
+        my ($table) = @_;
+        $self->_pod( $class, "=head1 NAME" );
+        my $table_descr = $class;
+        if ( $self->can('_table_comment') ) {
+            my $comment = $self->_table_comment($table);
+            $table_descr .= " - " . $comment if $comment;
+        }
+        $self->{_class2table}{ $class } = $table;
+        $self->_pod( $class, $table_descr );
+        $self->_pod_cut( $class );
+    } elsif ( $method eq 'add_columns' ) {
+        $self->_pod( $class, "=head1 ACCESSORS" );
+        my $i = 0;
+        foreach ( @_ ) {
+            $i++;
+            next unless $i % 2;
+            $self->_pod( $class, '=head2 ' . $_  );
+            my $comment;
+            $comment = $self->_column_comment( $self->{_class2table}{$class}, ($i - 1) / 2 + 1  ) if $self->can('_column_comment');
+            $self->_pod( $class, $comment ) if $comment;
+        }
+        $self->_pod_cut( $class );
+    } elsif ( $method =~ /^(belongs_to|has_many|might_have)$/ ) {
+        $self->_pod( $class, "=head1 RELATIONS" ) unless $self->{_relations_started} { $class } ;
+        my ( $accessor, $rel_class ) = @_;
+        $self->_pod( $class, "=head2 $accessor" );
+        $self->_pod( $class, 'Type: ' . $method );
+        $self->_pod( $class, "Related object: L<$rel_class>" );
+        $self->_pod_cut( $class );
+        $self->{_relations_started} { $class } = 1;
+    }
     my $args = dump(@_);
     $args = '(' . $args . ')' if @_ < 2;
     my $stmt = $method . $args . q{;};
 
     warn qq|$class\->$stmt\n| if $self->debug;
     $self->_raw_stmt($class, '__PACKAGE__->' . $stmt);
+    return;
 }
 
+# Stores a POD documentation
+sub _pod {
+    my ($self, $class, $stmt) = @_;
+    $self->_raw_stmt( $class, "\n" . $stmt  );
+}
+
+sub _pod_cut {
+    my ($self, $class ) = @_;
+    $self->_raw_stmt( $class, "\n=cut\n" );
+}
+
+
 # Store a raw source line for a class (for dumping purposes)
 sub _raw_stmt {
     my ($self, $class, $stmt) = @_;

Modified: branches/DBIx-Class-Schema-Loader/back-compat/lib/DBIx/Class/Schema/Loader/DBI/DB2.pm
===================================================================
--- branches/DBIx-Class-Schema-Loader/back-compat/lib/DBIx/Class/Schema/Loader/DBI/DB2.pm	2009-11-29 18:17:04 UTC (rev 7987)
+++ branches/DBIx-Class-Schema-Loader/back-compat/lib/DBIx/Class/Schema/Loader/DBI/DB2.pm	2009-11-29 18:32:00 UTC (rev 7988)
@@ -6,7 +6,7 @@
 use Carp::Clan qw/^DBIx::Class/;
 use Class::C3;
 
-our $VERSION = '0.04999_10';
+our $VERSION = '0.04999_11';
 
 =head1 NAME
 

Modified: branches/DBIx-Class-Schema-Loader/back-compat/lib/DBIx/Class/Schema/Loader/DBI/MSSQL.pm
===================================================================
--- branches/DBIx-Class-Schema-Loader/back-compat/lib/DBIx/Class/Schema/Loader/DBI/MSSQL.pm	2009-11-29 18:17:04 UTC (rev 7987)
+++ branches/DBIx-Class-Schema-Loader/back-compat/lib/DBIx/Class/Schema/Loader/DBI/MSSQL.pm	2009-11-29 18:32:00 UTC (rev 7988)
@@ -9,7 +9,7 @@
 use Carp::Clan qw/^DBIx::Class/;
 use Class::C3;
 
-our $VERSION = '0.04999_10';
+our $VERSION = '0.04999_11';
 
 =head1 NAME
 

Modified: branches/DBIx-Class-Schema-Loader/back-compat/lib/DBIx/Class/Schema/Loader/DBI/ODBC/Microsoft_SQL_Server.pm
===================================================================
--- branches/DBIx-Class-Schema-Loader/back-compat/lib/DBIx/Class/Schema/Loader/DBI/ODBC/Microsoft_SQL_Server.pm	2009-11-29 18:17:04 UTC (rev 7987)
+++ branches/DBIx-Class-Schema-Loader/back-compat/lib/DBIx/Class/Schema/Loader/DBI/ODBC/Microsoft_SQL_Server.pm	2009-11-29 18:32:00 UTC (rev 7988)
@@ -6,7 +6,7 @@
 use Carp::Clan qw/^DBIx::Class/;
 use Class::C3;
 
-our $VERSION = '0.04999_10';
+our $VERSION = '0.04999_11';
 
 =head1 NAME
 

Modified: branches/DBIx-Class-Schema-Loader/back-compat/lib/DBIx/Class/Schema/Loader/DBI/ODBC.pm
===================================================================
--- branches/DBIx-Class-Schema-Loader/back-compat/lib/DBIx/Class/Schema/Loader/DBI/ODBC.pm	2009-11-29 18:17:04 UTC (rev 7987)
+++ branches/DBIx-Class-Schema-Loader/back-compat/lib/DBIx/Class/Schema/Loader/DBI/ODBC.pm	2009-11-29 18:32:00 UTC (rev 7988)
@@ -6,7 +6,7 @@
 use Carp::Clan qw/^DBIx::Class/;
 use Class::C3;
 
-our $VERSION = '0.04999_10';
+our $VERSION = '0.04999_11';
 
 =head1 NAME
 

Modified: branches/DBIx-Class-Schema-Loader/back-compat/lib/DBIx/Class/Schema/Loader/DBI/Oracle.pm
===================================================================
--- branches/DBIx-Class-Schema-Loader/back-compat/lib/DBIx/Class/Schema/Loader/DBI/Oracle.pm	2009-11-29 18:17:04 UTC (rev 7987)
+++ branches/DBIx-Class-Schema-Loader/back-compat/lib/DBIx/Class/Schema/Loader/DBI/Oracle.pm	2009-11-29 18:32:00 UTC (rev 7988)
@@ -6,7 +6,7 @@
 use Carp::Clan qw/^DBIx::Class/;
 use Class::C3;
 
-our $VERSION = '0.04999_10';
+our $VERSION = '0.04999_11';
 
 =head1 NAME
 

Modified: branches/DBIx-Class-Schema-Loader/back-compat/lib/DBIx/Class/Schema/Loader/DBI/Pg.pm
===================================================================
--- branches/DBIx-Class-Schema-Loader/back-compat/lib/DBIx/Class/Schema/Loader/DBI/Pg.pm	2009-11-29 18:17:04 UTC (rev 7987)
+++ branches/DBIx-Class-Schema-Loader/back-compat/lib/DBIx/Class/Schema/Loader/DBI/Pg.pm	2009-11-29 18:32:00 UTC (rev 7988)
@@ -6,7 +6,7 @@
 use Carp::Clan qw/^DBIx::Class/;
 use Class::C3;
 
-our $VERSION = '0.04999_10';
+our $VERSION = '0.04999_11';
 
 =head1 NAME
 
@@ -35,6 +35,7 @@
     $self->{db_schema} ||= 'public';
 }
 
+
 sub _table_uniq_info {
     my ($self, $table) = @_;
 
@@ -95,6 +96,32 @@
     return \@uniqs;
 }
 
+sub _table_comment {
+    my ( $self, $table ) = @_;
+     my ($table_comment) = $self->schema->storage->dbh->selectrow_array(
+        q{SELECT obj_description(oid) 
+            FROM pg_class 
+            WHERE relname=? AND relnamespace=(
+                SELECT oid FROM pg_namespace WHERE nspname=?)
+        }, undef, $table, $self->db_schema
+        );   
+    return $table_comment
+}
+
+
+sub _column_comment {
+    my ( $self, $table, $column_number ) = @_;
+     my ($table_oid) = $self->schema->storage->dbh->selectrow_array(
+        q{SELECT oid
+            FROM pg_class 
+            WHERE relname=? AND relnamespace=(
+                SELECT oid FROM pg_namespace WHERE nspname=?)
+        }, undef, $table, $self->db_schema
+        );   
+    return $self->schema->storage->dbh->selectrow_array('SELECT col_description(?,?)', undef, $table_oid,
+    $column_number );
+}
+
 sub _extra_column_info {
     my ($self, $info) = @_;
     my %extra_info;

Modified: branches/DBIx-Class-Schema-Loader/back-compat/lib/DBIx/Class/Schema/Loader/DBI/SQLite.pm
===================================================================
--- branches/DBIx-Class-Schema-Loader/back-compat/lib/DBIx/Class/Schema/Loader/DBI/SQLite.pm	2009-11-29 18:17:04 UTC (rev 7987)
+++ branches/DBIx-Class-Schema-Loader/back-compat/lib/DBIx/Class/Schema/Loader/DBI/SQLite.pm	2009-11-29 18:32:00 UTC (rev 7988)
@@ -7,7 +7,7 @@
 use Text::Balanced qw( extract_bracketed );
 use Class::C3;
 
-our $VERSION = '0.04999_10';
+our $VERSION = '0.04999_11';
 
 =head1 NAME
 

Modified: branches/DBIx-Class-Schema-Loader/back-compat/lib/DBIx/Class/Schema/Loader/DBI/Sybase/Common.pm
===================================================================
--- branches/DBIx-Class-Schema-Loader/back-compat/lib/DBIx/Class/Schema/Loader/DBI/Sybase/Common.pm	2009-11-29 18:17:04 UTC (rev 7987)
+++ branches/DBIx-Class-Schema-Loader/back-compat/lib/DBIx/Class/Schema/Loader/DBI/Sybase/Common.pm	2009-11-29 18:32:00 UTC (rev 7988)
@@ -5,7 +5,7 @@
 use Carp::Clan qw/^DBIx::Class/;
 use Class::C3;
 
-our $VERSION = '0.04999_10';
+our $VERSION = '0.04999_11';
 
 =head1 NAME
 

Modified: branches/DBIx-Class-Schema-Loader/back-compat/lib/DBIx/Class/Schema/Loader/DBI/Sybase/Microsoft_SQL_Server.pm
===================================================================
--- branches/DBIx-Class-Schema-Loader/back-compat/lib/DBIx/Class/Schema/Loader/DBI/Sybase/Microsoft_SQL_Server.pm	2009-11-29 18:17:04 UTC (rev 7987)
+++ branches/DBIx-Class-Schema-Loader/back-compat/lib/DBIx/Class/Schema/Loader/DBI/Sybase/Microsoft_SQL_Server.pm	2009-11-29 18:32:00 UTC (rev 7988)
@@ -6,7 +6,7 @@
 use Carp::Clan qw/^DBIx::Class/;
 use Class::C3;
 
-our $VERSION = '0.04999_10';
+our $VERSION = '0.04999_11';
 
 =head1 NAME
 

Modified: branches/DBIx-Class-Schema-Loader/back-compat/lib/DBIx/Class/Schema/Loader/DBI/Sybase.pm
===================================================================
--- branches/DBIx-Class-Schema-Loader/back-compat/lib/DBIx/Class/Schema/Loader/DBI/Sybase.pm	2009-11-29 18:17:04 UTC (rev 7987)
+++ branches/DBIx-Class-Schema-Loader/back-compat/lib/DBIx/Class/Schema/Loader/DBI/Sybase.pm	2009-11-29 18:32:00 UTC (rev 7988)
@@ -9,7 +9,7 @@
 use Carp::Clan qw/^DBIx::Class/;
 use Class::C3;
 
-our $VERSION = '0.04999_10';
+our $VERSION = '0.04999_11';
 
 =head1 NAME
 

Modified: branches/DBIx-Class-Schema-Loader/back-compat/lib/DBIx/Class/Schema/Loader/DBI/Writing.pm
===================================================================
--- branches/DBIx-Class-Schema-Loader/back-compat/lib/DBIx/Class/Schema/Loader/DBI/Writing.pm	2009-11-29 18:17:04 UTC (rev 7987)
+++ branches/DBIx-Class-Schema-Loader/back-compat/lib/DBIx/Class/Schema/Loader/DBI/Writing.pm	2009-11-29 18:32:00 UTC (rev 7988)
@@ -1,7 +1,7 @@
 package DBIx::Class::Schema::Loader::DBI::Writing;
 use strict;
 
-our $VERSION = '0.04999_10';
+our $VERSION = '0.04999_11';
 
 # Empty. POD only.
 
@@ -38,6 +38,16 @@
       # concatenated if you wish.
   }
 
+  sub _table_comment {
+      my ( $self, $table ) = @_;
+      return 'Comment';
+  }
+
+  sub _column_comment {
+      my ( $self, $table, $column_number ) = @_;
+      return 'Col. comment';
+  }
+
   1;
 
 =head1 DETAILS
@@ -62,6 +72,9 @@
 This library is free software; you can redistribute it and/or modify it under
 the same terms as Perl itself.
 
+To import comments from database you need to implement C<_table_comment>,
+C<_column_comment>
+
 =cut
 
 1;

Modified: branches/DBIx-Class-Schema-Loader/back-compat/lib/DBIx/Class/Schema/Loader/DBI/mysql.pm
===================================================================
--- branches/DBIx-Class-Schema-Loader/back-compat/lib/DBIx/Class/Schema/Loader/DBI/mysql.pm	2009-11-29 18:17:04 UTC (rev 7987)
+++ branches/DBIx-Class-Schema-Loader/back-compat/lib/DBIx/Class/Schema/Loader/DBI/mysql.pm	2009-11-29 18:32:00 UTC (rev 7988)
@@ -6,7 +6,7 @@
 use Carp::Clan qw/^DBIx::Class/;
 use Class::C3;
 
-our $VERSION = '0.04999_10';
+our $VERSION = '0.04999_11';
 
 =head1 NAME
 

Modified: branches/DBIx-Class-Schema-Loader/back-compat/lib/DBIx/Class/Schema/Loader/DBI.pm
===================================================================
--- branches/DBIx-Class-Schema-Loader/back-compat/lib/DBIx/Class/Schema/Loader/DBI.pm	2009-11-29 18:17:04 UTC (rev 7987)
+++ branches/DBIx-Class-Schema-Loader/back-compat/lib/DBIx/Class/Schema/Loader/DBI.pm	2009-11-29 18:32:00 UTC (rev 7988)
@@ -6,7 +6,7 @@
 use Class::C3;
 use Carp::Clan qw/^DBIx::Class/;
 
-our $VERSION = '0.04999_10';
+our $VERSION = '0.04999_11';
 
 =head1 NAME
 

Modified: branches/DBIx-Class-Schema-Loader/back-compat/lib/DBIx/Class/Schema/Loader/RelBuilder.pm
===================================================================
--- branches/DBIx-Class-Schema-Loader/back-compat/lib/DBIx/Class/Schema/Loader/RelBuilder.pm	2009-11-29 18:17:04 UTC (rev 7987)
+++ branches/DBIx-Class-Schema-Loader/back-compat/lib/DBIx/Class/Schema/Loader/RelBuilder.pm	2009-11-29 18:32:00 UTC (rev 7988)
@@ -6,7 +6,7 @@
 use Carp::Clan qw/^DBIx::Class/;
 use Lingua::EN::Inflect::Number ();
 
-our $VERSION = '0.04999_10';
+our $VERSION = '0.04999_11';
 
 =head1 NAME
 

Modified: branches/DBIx-Class-Schema-Loader/back-compat/lib/DBIx/Class/Schema/Loader.pm
===================================================================
--- branches/DBIx-Class-Schema-Loader/back-compat/lib/DBIx/Class/Schema/Loader.pm	2009-11-29 18:17:04 UTC (rev 7987)
+++ branches/DBIx-Class-Schema-Loader/back-compat/lib/DBIx/Class/Schema/Loader.pm	2009-11-29 18:32:00 UTC (rev 7988)
@@ -10,7 +10,7 @@
 # Always remember to do all digits for the version even if they're 0
 # i.e. first release of 0.XX *must* be 0.XX000. This avoids fBSD ports
 # brain damage and presumably various other packaging systems too
-our $VERSION = '0.04999_10';
+our $VERSION = '0.04999_11';
 
 __PACKAGE__->mk_classaccessor('_loader_args' => {});
 __PACKAGE__->mk_classaccessors(qw/dump_to_dir _loader_invoked _loader loader_class/);
@@ -418,6 +418,8 @@
 
 ribasushi: Peter Rabbitson <rabbit+dbic at rabbit.us>
 
+gugu: Andrey Kostenko <a.kostenko at rambler-co.ru>
+
 ... and lots of other folks. If we forgot you, please write the current
 maintainer or RT.
 

Modified: branches/DBIx-Class-Schema-Loader/back-compat/t/12pg_common.t
===================================================================
--- branches/DBIx-Class-Schema-Loader/back-compat/t/12pg_common.t	2009-11-29 18:17:04 UTC (rev 7987)
+++ branches/DBIx-Class-Schema-Loader/back-compat/t/12pg_common.t	2009-11-29 18:32:00 UTC (rev 7988)
@@ -1,6 +1,7 @@
 use strict;
 use lib qw(t/lib);
 use dbixcsl_common_tests;
+use Test::More;
 
 my $dsn      = $ENV{DBICTEST_PG_DSN} || '';
 my $user     = $ENV{DBICTEST_PG_USER} || '';
@@ -12,6 +13,41 @@
     dsn         => $dsn,
     user        => $user,
     password    => $password,
+    extra       => {
+        create => [
+            q{
+                CREATE TABLE pg_loader_test1 (
+                    id SERIAL NOT NULL PRIMARY KEY,
+                    value VARCHAR(100)
+                )
+            },
+            q{
+                COMMENT ON TABLE pg_loader_test1 IS 'The Table'
+            },
+            q{
+                COMMENT ON COLUMN pg_loader_test1.value IS 'The Column'
+            },
+        ],
+        drop  => [ qw/ pg_loader_test1 / ],
+        count => 2,
+        run   => sub {
+            my ($schema, $monikers, $classes) = @_;
+
+            my $class    = $classes->{pg_loader_test1};
+            my $filename = $schema->_loader->_get_dump_filename($class);
+
+            my $code = do {
+                local ($/, @ARGV) = (undef, $filename);
+                <>;
+            };
+
+            like $code, qr/^=head1 NAME\n\n^$class - The Table\n\n^=cut\n/m,
+                'table comment';
+
+            like $code, qr/^=head2 value\n\nThe Column\n\n/m,
+                'column comment';
+        },
+    },
 );
 
 if( !$dsn || !$user ) {

Modified: branches/DBIx-Class-Schema-Loader/back-compat/t/20invocations.t
===================================================================
--- branches/DBIx-Class-Schema-Loader/back-compat/t/20invocations.t	2009-11-29 18:17:04 UTC (rev 7987)
+++ branches/DBIx-Class-Schema-Loader/back-compat/t/20invocations.t	2009-11-29 18:32:00 UTC (rev 7988)
@@ -3,6 +3,10 @@
 use lib qw(t/lib);
 use make_dbictest_db;
 
+local $SIG{__WARN__} = sub {
+    warn $_[0] unless $_[0] =~ /really_erase_my_files/
+};
+
 # Takes a $schema as input, runs 4 basic tests
 sub test_schema {
     my ($testname, $schema) = @_;

Modified: branches/DBIx-Class-Schema-Loader/back-compat/t/22dump.t
===================================================================
--- branches/DBIx-Class-Schema-Loader/back-compat/t/22dump.t	2009-11-29 18:17:04 UTC (rev 7987)
+++ branches/DBIx-Class-Schema-Loader/back-compat/t/22dump.t	2009-11-29 18:32:00 UTC (rev 7988)
@@ -6,6 +6,11 @@
 
 my $dump_path = './t/_dump';
 
+local $SIG{__WARN__} = sub {
+    warn $_[0] unless $_[0] =~
+        /really_erase_my_files|Dumping manual schema|Schema dump completed/;
+};
+
 {
     package DBICTest::Schema::1;
     use base qw/ DBIx::Class::Schema::Loader /;

Modified: branches/DBIx-Class-Schema-Loader/back-compat/t/23dumpmore.t
===================================================================
--- branches/DBIx-Class-Schema-Loader/back-compat/t/23dumpmore.t	2009-11-29 18:17:04 UTC (rev 7987)
+++ branches/DBIx-Class-Schema-Loader/back-compat/t/23dumpmore.t	2009-11-29 18:32:00 UTC (rev 7988)
@@ -8,7 +8,7 @@
 
 $^O eq 'MSWin32'
     ? plan(skip_all => "ActiveState perl produces additional warnings, and this test uses unix paths")
-    : plan(tests => 145);
+    : plan(tests => 153);
 
 my $DUMP_PATH = './t/_dump';
 
@@ -142,11 +142,15 @@
         ],
         Foo => [
             qr/package DBICTest::DumpMore::1::Foo;/,
+            qr/=head1 NAME/,
+            qr/=head1 ACCESSORS/,
             qr/->set_primary_key/,
             qr/1;\n$/,
         ],
         Bar => [
             qr/package DBICTest::DumpMore::1::Bar;/,
+            qr/=head1 NAME/,
+            qr/=head1 ACCESSORS/,
             qr/->set_primary_key/,
             qr/1;\n$/,
         ],

Modified: branches/DBIx-Class-Schema-Loader/back-compat/t/lib/dbixcsl_common_tests.pm
===================================================================
--- branches/DBIx-Class-Schema-Loader/back-compat/t/lib/dbixcsl_common_tests.pm	2009-11-29 18:17:04 UTC (rev 7987)
+++ branches/DBIx-Class-Schema-Loader/back-compat/t/lib/dbixcsl_common_tests.pm	2009-11-29 18:32:00 UTC (rev 7988)
@@ -73,6 +73,11 @@
     $self->drop_tables;
 }
 
+# defined in sub create
+my (@statements, @statements_reltests, @statements_advanced,
+    @statements_advanced_sqlite, @statements_inline_rels,
+    @statements_implicit_rels);
+
 sub setup_schema {
     my $self = shift;
     my @connect_info = @_;
@@ -115,9 +120,20 @@
        my $file_count;
        find sub { return if -d; $file_count++ }, $DUMP_DIR;
 
-       is $file_count, 34, 'correct number of files generated';
-       exit if $file_count != 34;
+       my $expected_count = 34;
 
+       $expected_count += @{ $self->{extra}{drop} || [] };
+
+       $expected_count -= grep /CREATE TABLE/, @statements_inline_rels
+           if $self->{no_inline_rels};
+
+       $expected_count -= grep /CREATE TABLE/, @statements_implicit_rels
+           if $self->{no_implicit_rels};
+
+       is $file_count, $expected_count, 'correct number of files generated';
+
+       exit if $file_count != $expected_count;
+
        my $warn_count = 0;
        $warn_count++ if grep /ResultSetManager/, @loader_warnings;
 
@@ -655,7 +671,17 @@
         my $before_digest = $digest->digest;
 
         my $dbh = $self->dbconnect(1);
-        $dbh->do($_) for @statements_rescan;
+
+        {
+            # Silence annoying but harmless postgres "NOTICE:  CREATE TABLE..."
+            local $SIG{__WARN__} = sub {
+                my $msg = shift;
+                print STDERR $msg unless $msg =~ m{^NOTICE:\s+CREATE TABLE};
+            };
+
+            $dbh->do($_) for @statements_rescan;
+        }
+
         $dbh->disconnect;
 
         sleep 1;
@@ -726,7 +752,7 @@
     $self->{_created} = 1;
 
     my $make_auto_inc = $self->{auto_inc_cb} || sub {};
-    my @statements = (
+    @statements = (
         qq{
             CREATE TABLE loader_test1s (
                 id $self->{auto_inc_pk},
@@ -769,7 +795,7 @@
         },
     );
 
-    my @statements_reltests = (
+    @statements_reltests = (
         qq{
             CREATE TABLE loader_test3 (
                 id INTEGER NOT NULL PRIMARY KEY,
@@ -1028,7 +1054,7 @@
         q{ INSERT INTO loader_test34 (id,rel1) VALUES (1,2) },
     );
 
-    my @statements_advanced = (
+    @statements_advanced = (
         qq{
             CREATE TABLE loader_test10 (
                 id10 $self->{auto_inc_pk},
@@ -1053,7 +1079,7 @@
          q{ REFERENCES loader_test11 (id11) }),
     );
 
-    my @statements_advanced_sqlite = (
+    @statements_advanced_sqlite = (
         qq{
             CREATE TABLE loader_test10 (
                 id10 $self->{auto_inc_pk},
@@ -1076,7 +1102,7 @@
          q{ loader_test11 INTEGER REFERENCES loader_test11 (id11) }),
     );
 
-    my @statements_inline_rels = (
+    @statements_inline_rels = (
         qq{
             CREATE TABLE loader_test12 (
                 id INTEGER NOT NULL PRIMARY KEY,
@@ -1100,7 +1126,7 @@
     );
 
 
-    my @statements_implicit_rels = (
+    @statements_implicit_rels = (
         qq{
             CREATE TABLE loader_test14 (
                 id INTEGER NOT NULL PRIMARY KEY,




More information about the Bast-commits mailing list