} else {
push(@sqlf, $self->_make_as($to));
}
- push(@sqlf, ' ON ', $self->_join_condition($on));
+ push(@sqlf, ' ON (', $self->_join_condition($on), ')');
}
return join('', @sqlf);
}
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
}
$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,
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);
# 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)
sub deploy {
my ($self, $schema, $type, $sqltargs, $dir) = @_;
- my @statements = $self->deployment_statements($schema, $type, undef, $dir, { no_comments => 1, %{ $sqltargs || {} } } );
- foreach my $statement ( @statements ) {
- my $deploy = sub {
- my $line = shift;
+ foreach my $statement ( $self->deployment_statements($schema, $type, undef, $dir, { no_comments => 1, %{ $sqltargs || {} } } ) ) {
+ foreach my $line ( split(";\n", $statement)) {
next if($line =~ /^--/);
next if(!$line);
# next if($line =~ /^DROP/m);
warn qq{$@ (running "${line}")};
}
$self->_query_end($line);
- };
- if (@statements > 1) {
- $deploy->( $statement );
- }
- else {
- foreach my $line ( split(";\n", $statement)) {
- $deploy->( $line );
- }
}
}
}