* Converted some of the test cases to use SQL::Abstract::Test.
[dbsrgits/DBIx-Class.git] / lib / DBIx / Class / Storage / DBI.pm
index f36c512..b31ac27 100644 (file)
@@ -237,7 +237,7 @@ sub _recurse_from {
     } else {
       push(@sqlf, $self->_make_as($to));
     }
-    push(@sqlf, ' ON ', $self->_join_condition($on));
+    push(@sqlf, ' ON (', $self->_join_condition($on), ')');
   }
   return join('', @sqlf);
 }
@@ -365,17 +365,18 @@ The argument list may contain:
 =item *
 
 The same 4-element argument set one would normally pass to
-L<DBI/connect>, optionally followed by L<extra attributes|/DBIx::Class
-specific connection attributes> recognized by DBIx::Class:
+L<DBI/connect>, optionally followed by
+L<extra attributes|/DBIx::Class specific connection attributes>
+recognized by DBIx::Class:
 
   $connect_info_args = [ $dsn, $user, $password, \%dbi_attributes?, \%extra_attributes? ];
 
 =item *
 
-A single code reference which returns a connected L<DBI database
-handle|DBI/connect> optionally followed by L<extra
-attributes|/DBIx::Class specific connection attributes> recognized by
-DBIx::Class:
+A single code reference which returns a connected 
+L<DBI database handle|DBI/connect> optionally followed by 
+L<extra attributes|/DBIx::Class specific connection attributes> recognized
+by DBIx::Class:
 
   $connect_info_args = [ sub { DBI->connect (...) }, \%extra_attributes? ];
 
@@ -393,7 +394,7 @@ mixed together:
   }];
 
 This is particularly useful for L<Catalyst> based applications, allowing the 
-following config (in L<Config::General> style):
+following config (L<Config::General> style):
 
   <Model::DB>
     schema_class   App::DB
@@ -410,9 +411,9 @@ following config (in L<Config::General> style):
 Please note that the L<DBI> docs recommend that you always explicitly
 set C<AutoCommit> to either I<0> or I<1>.  L<DBIx::Class> further
 recommends that it be set to I<1>, and that you perform transactions
-via our L</txn_do> method.  L<DBIx::Class> will set it to I<1> if you
-do not do explicitly set it to zero.  This is the default for most
-DBDs. See L</DBIx::Class and AutoCommit> for details.
+via our L<DBIx::Class::Schema/txn_do> method.  L<DBIx::Class> will set it
+to I<1> if you do not do explicitly set it to zero.  This is the default 
+for most DBDs. See L</DBIx::Class and AutoCommit> for details.
 
 =head3 DBIx::Class specific connection attributes
 
@@ -481,7 +482,7 @@ SQL Server you should use C<< quote_char => [qw/[ ]/] >>.
 
 =item name_sep
 
-This only needs to be used in conjunction with L<quote_char>, and is used to 
+This only needs to be used in conjunction with C<quote_char>, and is used to 
 specify the charecter that seperates elements (schemas, tables, columns) from 
 each other. In most cases this is simply a C<.>.
 
@@ -1405,7 +1406,8 @@ sub select_single {
   my $self = shift;
   my ($rv, $sth, @bind) = $self->_select(@_);
   my @row = $sth->fetchrow_array;
-  if(@row && $sth->fetchrow_array) {
+  my @nextrow = $sth->fetchrow_array if @row;
+  if(@row && @nextrow) {
     carp "Query returned more than one row.  SQL that returns multiple rows is DEPRECATED for ->find and ->single";
   }
   # Need to call finish() to work round broken DBDs
@@ -1535,7 +1537,7 @@ sub sqlt_type { shift->dbh->{Driver}->{Name} }
 =head2 bind_attribute_by_data_type
 
 Given a datatype from column info, returns a database specific bind
-attribute for $dbh->bind_param($val,$attribute) or nothing if we will
+attribute for C<< $dbh->bind_param($val,$attribute) >> or nothing if we will
 let the database planner just handle it.
 
 Generally only needed for special case column types, like bytea in postgres.
@@ -1577,7 +1579,10 @@ sub create_ddl_dir {
   }
   $databases ||= ['MySQL', 'SQLite', 'PostgreSQL'];
   $databases = [ $databases ] if(ref($databases) ne 'ARRAY');
-  $version ||= $schema->VERSION || '1.x';
+
+  my $schema_version = $schema->schema_version || '1.x';
+  $version ||= $schema_version;
+
   $sqltargs = {
     add_drop_table => 1, 
     ignore_constraint_names => 1,
@@ -1602,7 +1607,7 @@ sub create_ddl_dir {
 
     my $file;
     my $filename = $schema->ddl_filename($db, $version, $dir);
-    if (-e $filename && (!$version || ($version == $schema->schema_version()))) {
+    if (-e $filename && ($version eq $schema_version )) {
       # if we are dumping the current version, overwrite the DDL
       warn "Overwriting existing DDL file - $filename";
       unlink($filename);
@@ -1719,7 +1724,7 @@ sub deployment_statements {
   # Need to be connected to get the correct sqlt_type
   $self->ensure_connected() unless $type;
   $type ||= $self->sqlt_type;
-  $version ||= $schema->VERSION || '1.x';
+  $version ||= $schema->schema_version || '1.x';
   $dir ||= './';
   my $filename = $schema->ddl_filename($type, $dir, $version);
   if(-f $filename)
@@ -1898,17 +1903,14 @@ The following methods are extended:-
 =item limit_dialect
 
 See L</connect_info> for details.
-For setting, this method is deprecated in favor of L</connect_info>.
 
 =item quote_char
 
 See L</connect_info> for details.
-For setting, this method is deprecated in favor of L</connect_info>.
 
 =item name_sep
 
 See L</connect_info> for details.
-For setting, this method is deprecated in favor of L</connect_info>.
 
 =back