--- /home/y/lib/perl5/site_perl/5.8/DBIx/Class/Schema/Versioned.pm	2008-04-16 15:23:16.000000000 -0700
+++ Versioned.pm.orig	2008-04-14 17:33:08.567966000 -0700
@@ -67,36 +67,32 @@
   return $self;
 }
 
-sub get_previous_version { 
+sub _on_connect
+{
     my ($self) = @_;
-
     my $vschema = DBIx::Class::Version->connect(@{$self->storage->connect_info()});
     my $vtable = $vschema->resultset('Table');
+    my $pversion;
 
     if(!$self->_source_exists($vtable))
     {
-        return 0;
+#        $vschema->storage->debug(1);
+        $vschema->storage->ensure_connected();
+        $vschema->deploy();
+        $pversion = 0;
+    }
+    else
+    {
+        my $psearch = $vtable->search(undef, 
+                                      { select => [
+                                                   { 'max' => 'Installed' },
+                                                   ],
+                                            as => ['maxinstall'],
+                                        })->first;
+        $pversion = $vtable->search({ Installed => $psearch->get_column('maxinstall'),
+                                  })->first;
+        $pversion = $pversion->Version if($pversion);
     }
-
-    my $psearch = $vtable->search(undef, 
-                                  { select => [
-                                               { 'max' => 'Installed' },
-                                               ],
-                                        as => ['maxinstall'],
-                                    })->first;
-    my $pversion = $vtable->search({ Installed => $psearch->get_column('maxinstall'),
-                                   })->first;
-    $pversion = $pversion->Version if($pversion);
-
-    return $pversion;
-}
-
-sub _on_connect
-{
-    my ($self) = @_;
-
-    my $pversion = $self->get_previous_version();
-
 #    warn("Previous version: $pversion\n");
     if($pversion eq $self->schema_version)
     {
@@ -108,9 +104,48 @@
 
     if(!$pversion)
     {
-        warn "No previous version found, please call deploy to install this version.\n";
+        $vtable->create({ Version => $self->schema_version,
+                          Installed => strftime("%Y-%m-%d %H:%M:%S", gmtime())
+                          });
+        ## If we let the user do this, where does the Version table get updated?
+        warn "No previous version found, calling deploy to install this version.\n";
+        $self->deploy();
+        return 1;
+    }
+
+    my $file = $self->ddl_filename(
+                                   $self->storage->sqlt_type,
+                                   $self->upgrade_directory,
+                                   $self->schema_version
+                                   );
+    if(!$file)
+    {
+        # No upgrade path between these two versions
+        return 1;
     }
 
+     $file = $self->ddl_filename(
+                                 $self->storage->sqlt_type,
+                                 $self->upgrade_directory,
+                                 $self->schema_version,
+                                 $pversion,
+                                 );
+#    $file =~ s/@{[ $self->schema_version ]}/"${pversion}-" . $self->schema_version/e;
+    if(!-f $file)
+    {
+        warn "Upgrade not possible, no upgrade file found ($file)\n";
+        return;
+    }
+
+    my $fh;
+    open $fh, "<$file" or warn("Can't open upgrade file, $file ($!)");
+    my @data = split(/;\n/, join('', <$fh>));
+    close($fh);
+    @data = grep { $_ && $_ !~ /^-- / } @data;
+    @data = grep { $_ !~ /^(BEGIN TRANACTION|COMMIT)/m } @data;
+
+    $self->_filedata(\@data);
+
     ## Don't do this yet, do only on command?
     ## If we do this later, where does the Version table get updated??
     warn "Versions out of sync. This is " . $self->schema_version . 
@@ -118,20 +153,6 @@
 #    $self->upgrade($pversion, $self->schema_version);
 }
 
-sub deploy {
-    my ($self) = @_;
-
-    my $vschema = DBIx::Class::Version->connect(@{$self->storage->connect_info()});
-    my $vtable = $vschema->resultset('Table');
-    $vtable->create({ Version => $self->schema_version,
-                      Installed => strftime("%Y-%m-%d %H:%M:%S", gmtime())
-                      });
-    $vschema->storage->ensure_connected();
-
-    $self->SUPER::deploy();
-    return 1;
-}
-
 sub _source_exists
 {
     my ($self, $rs) = @_;
@@ -151,33 +172,6 @@
     $self->storage->backup($self->backup_directory());
 }
 
-sub get_upgrade_sql {
-    my ($self) = @_;
-
-    my $pversion = $self->get_previous_version();
-    my $file = $self->ddl_filename(
-                                 $self->storage->sqlt_type,
-                                 $self->upgrade_directory,
-                                 $self->schema_version,
-                                 $pversion,
-                                 );
-#    $file =~ s/@{[ $self->schema_version ]}/"${pversion}-" . $self->schema_version/e;
-    if(!-f $file)
-    {
-        warn "Upgrade not possible, no upgrade file found ($file)\n";
-        return;
-    }
-
-    my $fh;
-    open $fh, "<$file" or warn("Can't open upgrade file, $file ($!)");
-    my @data = split(/;\n/, join('', <$fh>));
-    close($fh);
-    @data = grep { $_ && $_ !~ /^-- / } @data;
-    @data = grep { $_ !~ /^(BEGIN TRANSACTION|COMMIT)/m } @data;
-
-    return \@data;
-}
-
 sub upgrade
 {
     my ($self) = @_;
@@ -205,11 +199,6 @@
 {
     my ($self, $stm) = @_;
 #    print "Reg: $stm\n";
-
-    if ( !$self->_filedata() ) { 
-        $self->_filedata( $self->get_upgrade_sql() );
-    }
-    
     my @statements = grep { $_ =~ $stm } @{$self->_filedata};
 #    print "Statements: ", join("\n", @statements), "\n";
     $self->_filedata([ grep { $_ !~ /$stm/i } @{$self->_filedata} ]);
