r39921 - in /trunk/libjifty-dbi-perl: Changes SIGNATURE debian/changelog debian/control debian/rules lib/Jifty/DBI.pm lib/Jifty/DBI/Collection.pm lib/Jifty/DBI/Handle.pm lib/Jifty/DBI/Schema.pm t/utils.pl

yvesago-guest at users.alioth.debian.org yvesago-guest at users.alioth.debian.org
Wed Jul 15 08:06:34 UTC 2009


Author: yvesago-guest
Date: Wed Jul 15 08:06:17 2009
New Revision: 39921

URL: http://svn.debian.org/wsvn/pkg-perl/?sc=1&rev=39921
Log:
 * New upstream release
  * control: Bump Standards-Version to 3.8.2, no change
  * rules: add export DH_ALWAYS_EXCLUDE=.svn (svn dir was in Examples)

Modified:
    trunk/libjifty-dbi-perl/Changes
    trunk/libjifty-dbi-perl/SIGNATURE
    trunk/libjifty-dbi-perl/debian/changelog
    trunk/libjifty-dbi-perl/debian/control
    trunk/libjifty-dbi-perl/debian/rules
    trunk/libjifty-dbi-perl/lib/Jifty/DBI.pm
    trunk/libjifty-dbi-perl/lib/Jifty/DBI/Collection.pm
    trunk/libjifty-dbi-perl/lib/Jifty/DBI/Handle.pm
    trunk/libjifty-dbi-perl/lib/Jifty/DBI/Schema.pm
    trunk/libjifty-dbi-perl/t/utils.pl

Modified: trunk/libjifty-dbi-perl/Changes
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libjifty-dbi-perl/Changes?rev=39921&op=diff
==============================================================================
--- trunk/libjifty-dbi-perl/Changes (original)
+++ trunk/libjifty-dbi-perl/Changes Wed Jul 15 08:06:17 2009
@@ -1,4 +1,23 @@
 Revision history for Perl extension Jifty::DBI.
+
+0.58 Tue Jul 14 03:21:21 EST 2009
+- Possible incompatibilities:
+    * Modules which use Jifty::DBI::Schema will have strict and warnings
+      automatically applied to them.
+
+- Features:
+    * Jifty::DBI::Handle now has methods for supported_drivers,
+      available_drivers, and is_available_driver.
+
+- Fixes:
+    * Remove unused _limit_clause method
+    * Various error message improvements
+    * Use ->new_item instead of ->record_class->new since it was a performance
+        hit in Jifty
+    * Avoid cals to ->new_item where possible
+
+- Documentation:
+    * Document connect's quirky return value
 
 0.57 Tue May 19 08:02:03 EDT 2009
 - Major bugfixes:

Modified: trunk/libjifty-dbi-perl/SIGNATURE
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libjifty-dbi-perl/SIGNATURE?rev=39921&op=diff
==============================================================================
--- trunk/libjifty-dbi-perl/SIGNATURE (original)
+++ trunk/libjifty-dbi-perl/SIGNATURE Wed Jul 15 08:06:17 2009
@@ -15,7 +15,7 @@
 Hash: SHA1
 
 SHA1 f29ac6543498d1b0e81f387b7284a039f83e7d29 .gitignore
-SHA1 85746120ae35bfdb3811297cfc3331a0d1c56343 Changes
+SHA1 64906601c4115e5507dd41021127384db33a1e62 Changes
 SHA1 006b044e48cc925d04f620f317a907d459b2d128 MANIFEST
 SHA1 d3897bc376b40669acb9171adfd51f321d184fd8 META.yml
 SHA1 48bd6ca8a37ec79b7cae91028d7e9489ad33a03b Makefile.PL
@@ -41,8 +41,8 @@
 SHA1 7ad1da4fff7a1e7a634c9d734111c8292be08884 inc/Module/Install/Metadata.pm
 SHA1 e9aa83f3e8b16ccfce544a90a57b63b70a497759 inc/Module/Install/Win32.pm
 SHA1 ade2ac0b0246d4d8e28fa46942e53f6925abda46 inc/Module/Install/WriteAll.pm
-SHA1 249e7173876dca5ea914281036c853f7c9226991 lib/Jifty/DBI.pm
-SHA1 f181211220602d2883fd8d006fdb3c79ca417b05 lib/Jifty/DBI/Collection.pm
+SHA1 dd7c0df4e3dd9ff7112ff0ea2fbe501b8d786246 lib/Jifty/DBI.pm
+SHA1 79cb88cd57d1194370a6a5beab9dcd2baf5eb7b3 lib/Jifty/DBI/Collection.pm
 SHA1 639ef9c81f03fb084b312a5f9a6f6a3ff63b36b7 lib/Jifty/DBI/Collection/Union.pm
 SHA1 bcba77fd2bacf0475aea1de97f57365c8de92ca6 lib/Jifty/DBI/Collection/Unique.pm
 SHA1 6d59ec1286f3ed887494753d01ed1f4760fd0a9b lib/Jifty/DBI/Column.pm
@@ -59,7 +59,7 @@
 SHA1 67ffe7188a1f529d7594f4fa3803bcbe15ba6485 lib/Jifty/DBI/Filter/YAML.pm
 SHA1 9a6fd17e677321904436fefec4d434e17a4685b1 lib/Jifty/DBI/Filter/base64.pm
 SHA1 deb33fa7b35f3542aac3e2d7fb4b5d3070dc3917 lib/Jifty/DBI/Filter/utf8.pm
-SHA1 ac3555c9ec6bdf462e24d043e34b977625ca6407 lib/Jifty/DBI/Handle.pm
+SHA1 64d39ed536e8cb5465b0e1aa0f40f7bb9ae5e47a lib/Jifty/DBI/Handle.pm
 SHA1 bcc7c456e1c4d0dddd5564f03c8bb03a6c7e261f lib/Jifty/DBI/Handle/Informix.pm
 SHA1 338116a45f8eb6bfca5e76e8d3be78fb61fffe81 lib/Jifty/DBI/Handle/ODBC.pm
 SHA1 960fd0b63f3de11924c5d47a3c0c6d1db105ed5b lib/Jifty/DBI/Handle/Oracle.pm
@@ -73,7 +73,7 @@
 SHA1 3853ce268985b129f2175251fb369d9689837f39 lib/Jifty/DBI/Record/Cachable.pm
 SHA1 1aac77960c508d3b2e5188e15825ad5b04391d76 lib/Jifty/DBI/Record/Memcached.pm
 SHA1 53834b3315a509ba33a8647681f472d3ae7b0557 lib/Jifty/DBI/Record/Plugin.pm
-SHA1 501fe382b24b663c328fbb9c1cbf019c78e7bb53 lib/Jifty/DBI/Schema.pm
+SHA1 13b7e19a9ce99323f0ad41ce36422acb46ff07f9 lib/Jifty/DBI/Schema.pm
 SHA1 a4d1a953ea4a29fe169b1c4c043ffff15b24c077 lib/Jifty/DBI/SchemaGenerator.pm
 SHA1 32834b7c4cf5a8d131382fccc8db341be8768291 t/00.load.t
 SHA1 9aa7fed2b2409faa4c71d2a45db210721f47403e t/01-version_checks.t
@@ -114,11 +114,11 @@
 SHA1 59c44900b1cb957d262f96363ceff21b46e0d598 t/pod-coverage.t
 SHA1 e9c6a5881fc60173fbc8d479c1afd2ce3b43bef1 t/pod.t
 SHA1 62742c946808f35bcc8b2777e975c1ce068a0a71 t/testmodels.pl
-SHA1 b11b0df92ffef5a617cf77b74c8b963be577e3c0 t/utils.pl
+SHA1 653c2f961d8b4f195e5391cd261f37815068e8d5 t/utils.pl
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1.4.7 (Darwin)
 
-iD8DBQFKEqZ7sxfQtHhyRPoRAojSAJsFA4i59HHzcODcLP1I8DldBgijBQCdGsQ1
-zTjK+DO/zkobfCE4js2KjII=
-=cRri
+iD8DBQFKXDOCsxfQtHhyRPoRAst4AJ99hkuLonvmHzyX1MeoUiuuZkTIQQCdF9Cd
+uX0sd4zMEnoWm3En9My0mLw=
+=tpG0
 -----END PGP SIGNATURE-----

Modified: trunk/libjifty-dbi-perl/debian/changelog
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libjifty-dbi-perl/debian/changelog?rev=39921&op=diff
==============================================================================
--- trunk/libjifty-dbi-perl/debian/changelog (original)
+++ trunk/libjifty-dbi-perl/debian/changelog Wed Jul 15 08:06:17 2009
@@ -1,8 +1,14 @@
-libjifty-dbi-perl (0.57-2) UNRELEASED; urgency=low
+libjifty-dbi-perl (0.58-1) unstable; urgency=low
 
+  [ Nathan Handler ]
   * debian/watch: Update to ignore development releases.
 
- -- Nathan Handler <nhandler at ubuntu.com>  Sat, 06 Jun 2009 01:34:40 +0000
+  [ AGOSTINI Yves ]
+  * New upstream release
+  * control: Bump Standards-Version to 3.8.2, no change
+  * rules: add export DH_ALWAYS_EXCLUDE=.svn (svn dir was in Examples)
+
+ -- AGOSTINI Yves <agostini at univ-metz.fr>  Wed, 15 Jul 2009 09:58:24 +0200
 
 libjifty-dbi-perl (0.57-1) unstable; urgency=low
 

Modified: trunk/libjifty-dbi-perl/debian/control
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libjifty-dbi-perl/debian/control?rev=39921&op=diff
==============================================================================
--- trunk/libjifty-dbi-perl/debian/control (original)
+++ trunk/libjifty-dbi-perl/debian/control Wed Jul 15 08:06:17 2009
@@ -33,7 +33,7 @@
  libyaml-syck-perl
 Maintainer: Debian Perl Group <pkg-perl-maintainers at lists.alioth.debian.org>
 Uploaders: AGOSTINI Yves <agostini at univ-metz.fr>
-Standards-Version: 3.8.1
+Standards-Version: 3.8.2
 Homepage: http://search.cpan.org/dist/Jifty-DBI/
 Vcs-Svn: svn://svn.debian.org/pkg-perl/trunk/libjifty-dbi-perl/
 Vcs-Browser: http://svn.debian.org/viewsvn/pkg-perl/trunk/libjifty-dbi-perl/

Modified: trunk/libjifty-dbi-perl/debian/rules
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libjifty-dbi-perl/debian/rules?rev=39921&op=diff
==============================================================================
--- trunk/libjifty-dbi-perl/debian/rules (original)
+++ trunk/libjifty-dbi-perl/debian/rules Wed Jul 15 08:06:17 2009
@@ -1,4 +1,6 @@
 #!/usr/bin/make -f
+
+export DH_ALWAYS_EXCLUDE=.svn
 
 %:
 	dh $@

Modified: trunk/libjifty-dbi-perl/lib/Jifty/DBI.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libjifty-dbi-perl/lib/Jifty/DBI.pm?rev=39921&op=diff
==============================================================================
--- trunk/libjifty-dbi-perl/lib/Jifty/DBI.pm (original)
+++ trunk/libjifty-dbi-perl/lib/Jifty/DBI.pm Wed Jul 15 08:06:17 2009
@@ -2,7 +2,7 @@
 use warnings;
 use strict;
 
-$Jifty::DBI::VERSION = '0.57';
+$Jifty::DBI::VERSION = '0.58';
 
 =head1 NAME
 
@@ -18,7 +18,7 @@
 This module is the direct descendent of L<DBIx::SearchBuilder>. If you're familiar
 with SearchBuilder, Jifty::DBI should be quite familiar to you.
 
-=head2 What is it trying to do. 
+=head2 Purpose
 
 Jifty::DBI::Record abstracts the agony of writing the common and generally 
 simple SQL statements needed to serialize and de-serialize an object to the

Modified: trunk/libjifty-dbi-perl/lib/Jifty/DBI/Collection.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libjifty-dbi-perl/lib/Jifty/DBI/Collection.pm?rev=39921&op=diff
==============================================================================
--- trunk/libjifty-dbi-perl/lib/Jifty/DBI/Collection.pm (original)
+++ trunk/libjifty-dbi-perl/lib/Jifty/DBI/Collection.pm Wed Jul 15 08:06:17 2009
@@ -117,7 +117,7 @@
     );
     $self->_handle( $args{'handle'} )  if ( $args{'handle'} );
     $self->derived( $args{'derived'} ) if ( $args{'derived'} );
-    $self->table( $self->new_item->table() );
+    $self->table( $self->record_class->table() );
     $self->clean_slate(%args);
 }
 
@@ -434,24 +434,6 @@
     }
 }
 
-# LIMIT clauses are used for restricting ourselves to subsets of the
-# search.
-sub _limit_clause {
-    my $self = shift;
-    my $limit_clause;
-
-    if ( $self->rows_per_page ) {
-        $limit_clause = " LIMIT ";
-        if ( $self->first_row != 0 ) {
-            $limit_clause .= $self->first_row . ", ";
-        }
-        $limit_clause .= $self->rows_per_page;
-    } else {
-        $limit_clause = "";
-    }
-    return $limit_clause;
-}
-
 =head2 _is_limited
 
 If we've limited down this search, return true. Otherwise, return
@@ -513,7 +495,7 @@
     if ( $self->{columns} and @{ $self->{columns} } ) {
         push @cols, @{ $self->{columns} };
     } else {
-        push @cols, $self->_qualified_record_columns( 'main' => $self->new_item );
+        push @cols, $self->_qualified_record_columns( 'main' => $self->record_class );
     }
     my %prefetch_related = %{ $self->prefetch_related || {} };
     foreach my $alias ( keys %prefetch_related ) {
@@ -521,9 +503,9 @@
 
         my $reference;
         if ( $class->isa('Jifty::DBI::Collection') ) {
-            $reference = $class->new( $self->_new_collection_args )->new_item;
+            $reference = $class->record_class;
         } elsif ( $class->isa('Jifty::DBI::Record') ) {
-            $reference = $class->new( $self->_new_record_args );
+            $reference = $class;
         }
 
         push @cols, $self->_qualified_record_columns( $alias => $reference );
@@ -641,7 +623,7 @@
     if ( not $args{class} ) {
 
         # Check the column
-        my $column = $self->new_item->column( $args{name} );
+        my $column = $self->record_class->column( $args{name} );
         $args{class} = $column->refers_to if $column;
 
         die "Don't know class" unless $args{class};
@@ -680,7 +662,7 @@
 
     my $last = pop @names;
     my ( $class, @columns ) = $self->find_class(@names);
-    $class = $class->new_item
+    $class = $class->record_class
         if UNIVERSAL::isa( $class, "Jifty::DBI::Collection" );
     my $column = $class->column($last);
     die "$class has no column '$last'" unless $column;
@@ -702,23 +684,24 @@
 
     my @res;
     my $object = $self;
-    my $item   = $self->new_item;
+    my $itemclass = $self->record_class;
     while ( my $name = shift @names ) {
-        my $column = $item->column($name);
-        die "$item has no column '$name'" unless $column;
+        my $column = $itemclass->column($name);
+        die "$itemclass has no column '$name'" unless $column;
 
         push @res, $column;
 
         my $classname = $column->refers_to;
         unless ($classname) {
-            die "column '$name' of $item is not a reference";
+            die "column '$name' of $itemclass is not a reference";
         }
 
         if ( UNIVERSAL::isa( $classname, 'Jifty::DBI::Collection' ) ) {
             $object = $classname->new( $self->_new_collection_args );
-            $item   = $object->new_item;
+            $itemclass = $object->record_class;
         } elsif ( UNIVERSAL::isa( $classname, 'Jifty::DBI::Record' ) ) {
-            $object = $item = $classname->new( $self->_new_record_args );
+            $object = $classname->new( $self->_new_record_args );
+            $itemclass = $classname;
         } else {
             die
                 "Column '$name' refers to '$classname' which is not record or collection";
@@ -751,9 +734,7 @@
         }
 
         if ( UNIVERSAL::isa( $classname, 'Jifty::DBI::Collection' ) ) {
-            my $item
-                = $classname->new( $self->_new_collection_args )->new_item;
-            my $right_alias = $self->new_alias($item);
+            my $right_alias = $self->new_alias($classname->record_class);
             $self->join(
                 type        => 'left',
                 alias1      => $last_alias,
@@ -764,8 +745,7 @@
             );
             $last_alias = $right_alias;
         } elsif ( UNIVERSAL::isa( $classname, 'Jifty::DBI::Record' ) ) {
-            my $item        = $classname->new( $self->_new_record_args );
-            my $right_alias = $self->new_alias($item);
+            my $right_alias = $self->new_alias($classname);
             $self->join(
                 type        => 'left',
                 alias1      => $last_alias,
@@ -1237,9 +1217,9 @@
         ? $self->{joins}{ $args{alias} }{class}
         ->new( $self->_new_collection_args )
         : $self;
-    my $column_obj = $class->new_item()->column( $args{column} );
-
-    $self->record_class->new(handle => $self->_handle)->_apply_input_filters(
+    my $column_obj = $class->record_class->column( $args{column} );
+
+    $self->new_item->_apply_input_filters(
         column    => $column_obj,
         value_ref => \$args{'value'},
     ) if $column_obj && $column_obj->encode_on_select;

Modified: trunk/libjifty-dbi-perl/lib/Jifty/DBI/Handle.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libjifty-dbi-perl/lib/Jifty/DBI/Handle.pm?rev=39921&op=diff
==============================================================================
--- trunk/libjifty-dbi-perl/lib/Jifty/DBI/Handle.pm (original)
+++ trunk/libjifty-dbi-perl/lib/Jifty/DBI/Handle.pm Wed Jul 15 08:06:17 2009
@@ -72,6 +72,10 @@
      Jifty::DBI::Handle->new
 and there is a Jifty::DBI::Handle::(Driver) subclass for the driver you have chosen,
 the handle will be automatically "upgraded" into that subclass.
+
+If there is an error, an exception will be thrown. If a connection has already
+been established and is still active, C<undef> will be returned (which is not
+an error). Otherwise, if a new connection is made, a true value will be returned.
 
 =cut
 
@@ -110,7 +114,7 @@
     {
         my $handle
             = DBI->connect( $self->dsn, $args{'user'}, $args{'password'}, $args{'extra'} )
-            || Carp::croak "Connect Failed $DBI::errstr\n";
+            || Carp::croak "Connection failed: $DBI::errstr\n";
 
 #databases do case conversion on the name of columns returned.
 #actually, some databases just ignore case. this smashes it to something consistent
@@ -1319,6 +1323,61 @@
     return $self->simple_query("ALTER TABLE $args{'table'} RENAME TO $args{'to'}");
 }
 
+=head2 supported_drivers
+
+Returns a list of the drivers L<Jifty::DBI> supports.
+
+=cut
+
+sub supported_drivers {
+    return qw(
+        SQLite
+        Informix
+        mysql
+        mysqlPP
+        ODBC
+        Oracle
+        Pg
+        Sybase
+    );
+}
+
+=head2 available_drivers
+
+Returns a list of the available drivers based on the presence of C<DBD::*>
+modules.
+
+=cut
+
+sub available_drivers {
+    my $self = shift;
+
+    local $@;
+    return grep { eval "require DBD::" . $_ } $self->supported_drivers;
+}
+
+=head2 is_available_driver
+
+Returns a boolean indicating whether the provided driver is available.
+
+=cut
+
+do {
+    # lazily memoize
+    my $is_available_driver;
+
+    sub is_available_driver {
+        my $self   = shift;
+        my $driver = shift;
+
+        if (!$is_available_driver) {
+            %$is_available_driver = map { $_ => 1 } $self->available_drivers;
+        }
+
+        return $is_available_driver->{$driver};
+    }
+};
+
 =head2 DESTROY
 
 When we get rid of the L<Jifty::DBI::Handle>, we need to disconnect

Modified: trunk/libjifty-dbi-perl/lib/Jifty/DBI/Schema.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libjifty-dbi-perl/lib/Jifty/DBI/Schema.pm?rev=39921&op=diff
==============================================================================
--- trunk/libjifty-dbi-perl/lib/Jifty/DBI/Schema.pm (original)
+++ trunk/libjifty-dbi-perl/lib/Jifty/DBI/Schema.pm Wed Jul 15 08:06:17 2009
@@ -101,14 +101,17 @@
 
 use Exporter::Lite ();
 # TODO - This "sub import" is strictly here to catch the deprecated "length is 40".
-#        Once the deprecation cycle is over we should take this away and rever to
-#        "use Exporter::Lite" in the line above.
+#        Once the deprecation cycle is over we should take the SIGDIE swapping away
 my $old_sig_die;
 
 sub import {
     no warnings qw( uninitialized numeric );
     $old_sig_die ||= $SIG{__DIE__};
     $SIG{__DIE__} = \&filter_die unless $SIG{__DIE__} and $SIG{__DIE__} == \&filter_die;
+
+    strict->import;
+    warnings->import;
+
     goto &Exporter::Lite::import;
 }
 

Modified: trunk/libjifty-dbi-perl/t/utils.pl
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libjifty-dbi-perl/t/utils.pl?rev=39921&op=diff
==============================================================================
--- trunk/libjifty-dbi-perl/t/utils.pl (original)
+++ trunk/libjifty-dbi-perl/t/utils.pl Wed Jul 15 08:06:17 2009
@@ -2,6 +2,7 @@
 
 use strict;
 use File::Temp ();
+use Jifty::DBI::Handle;
 
 =head1 VARIABLES
 
@@ -11,19 +12,7 @@
 
 =cut
 
-our @supported_drivers = qw(
-        SQLite
-        Informix
-        mysql
-        mysqlPP
-        ODBC
-        Oracle
-        Pg
-        Sybase
-);
-
-
-
+our @supported_drivers = Jifty::DBI::Handle->supported_drivers;
 
 =head2 @available_drivers
 
@@ -32,7 +21,7 @@
 
 =cut
 
-our @available_drivers = grep { eval "require DBD::". $_ } @supported_drivers;
+our @available_drivers = Jifty::DBI::Handle->available_drivers;
 
 =head1 FUNCTIONS
 




More information about the Pkg-perl-cvs-commits mailing list