sub sql {
my($self, $dbh) = (shift, shift);
- $dbh = DBI->connect( $dbh, @_ ) or die $DBI::errstr
- unless ref($dbh) || ! @_;
- map { $self->table($_)->sql_create_table($dbh); } $self->tables;
+ my $created_dbh = 0;
+ unless ( ref($dbh) || ! @_ ) {
+ $dbh = DBI->connect( $dbh, @_ ) or die $DBI::errstr;
+ $created_dbh = 1;
+ }
+ my @r = map { $self->table($_)->sql_create_table($dbh); } $self->tables;
+ $dbh->disconnect if $created_dbh;
+ @r;
}
=item pretty_print
=cut
sub line {
- my($self,$dbh)=@_;
+ my($self,$dbh) = (shift, shift);
+
+ my $created_dbh = 0;
+ unless ( ref($dbh) || ! @_ ) {
+ $dbh = DBI->connect( $dbh, @_ ) or die $DBI::errstr;
+ my $gratuitous = $DBI::errstr; #surpress superfluous `used only once' error
+ $created_dbh = 1;
+ }
my $driver = DBIx::DBSchema::_load_driver($dbh);
my %typemap;
$null =~ s/^NULL$//;
}
- join(' ',
+ my @r = join(' ',
$self->name,
$type. ( $self->length ? '('.$self->length.')' : '' ),
$null,
: ''
),
);
+ $dbh->disconnect if $created_dbh;
+ @r;
}
sub sql_create_table {
my($self, $dbh) = (shift, shift);
- $dbh = DBI->connect( $dbh, @_ ) or die $DBI::errstr
- unless ref($dbh) || ! @_;
- my $gratuitous = $DBI::errstr; #surpress superfluous `used only once' error
+ my $created_dbh = 0;
+ unless ( ref($dbh) || ! @_ ) {
+ $dbh = DBI->connect( $dbh, @_ ) or die $DBI::errstr;
+ my $gratuitous = $DBI::errstr; #surpress superfluous `used only once' error
+ $created_dbh = 1;
+ }
#false laziness: nicked from DBSchema::_load_driver
my $driver;
if ( ref($dbh) ) {
push @columns, map "INDEX ($_)", $self->index->sql_list;
}
- "CREATE TABLE ". $self->name. " (\n ". join(",\n ", @columns). "\n)\n",
- ( map {
- my($index) = $self->name. "__". $_ . "_index";
- $index =~ s/,\s*/_/g;
- "CREATE UNIQUE INDEX $index ON ". $self->name. " ($_)\n"
- } $self->unique->sql_list ),
- ( map {
- my($index) = $self->name. "__". $_ . "_index";
- $index =~ s/,\s*/_/g;
- "CREATE INDEX $index ON ". $self->name. " ($_)\n"
- } $self->index->sql_list ),
+ my @r =
+ "CREATE TABLE ". $self->name. " (\n ". join(",\n ", @columns). "\n)\n",
+ ( map {
+ my($index) = $self->name. "__". $_ . "_index";
+ $index =~ s/,\s*/_/g;
+ "CREATE UNIQUE INDEX $index ON ". $self->name. " ($_)\n"
+ } $self->unique->sql_list ),
+ ( map {
+ my($index) = $self->name. "__". $_ . "_index";
+ $index =~ s/,\s*/_/g;
+ "CREATE INDEX $index ON ". $self->name. " ($_)\n"
+ } $self->index->sql_list ),
;
-
+ $dbh->disconnect if $created_dbh;
+ @r;
}
#