Merge fix-deep-recursion-bug-1136559.

This commit is contained in:
Daniel Nichter
2013-06-25 16:36:36 -07:00
8 changed files with 470 additions and 228 deletions

View File

@@ -3297,58 +3297,63 @@ sub _iterate_dbh {
$self->{dbs} = \@dbs;
}
if ( !$self->{db} ) {
$self->{db} = shift @{$self->{dbs}};
PTDEBUG && _d('Next database:', $self->{db});
return unless $self->{db};
}
if ( !defined $self->{tbls} ) {
my $sql = 'SHOW /*!50002 FULL*/ TABLES FROM ' . $q->quote($self->{db});
PTDEBUG && _d($sql);
my @tbls = map {
$_->[0]; # (tbl, type)
DATABASE:
while ( $self->{db} || defined(my $db = shift @{$self->{dbs}}) ) {
if ( !$self->{db} ) {
PTDEBUG && _d('Next database:', $db);
$self->{db} = $db;
}
grep {
my ($tbl, $type) = @$_;
(!$type || ($type ne 'VIEW'))
&& $self->_resume_from_table($tbl)
&& $self->table_is_allowed($self->{db}, $tbl);
}
@{$dbh->selectall_arrayref($sql)};
PTDEBUG && _d('Found', scalar @tbls, 'tables in database', $self->{db});
$self->{tbls} = \@tbls;
}
while ( my $tbl = shift @{$self->{tbls}} ) {
my $ddl = eval { $tp->get_create_table($dbh, $self->{db}, $tbl) };
if ( my $e = $EVAL_ERROR ) {
my $table_name = "$self->{db}.$tbl";
if ( $e =~ /\QTable '$table_name' doesn't exist/ ) {
PTDEBUG && _d("Skipping $table_name because it no longer exists");
if ( !$self->{tbls} ) {
my $sql = 'SHOW /*!50002 FULL*/ TABLES FROM ' . $q->quote($self->{db});
PTDEBUG && _d($sql);
my @tbls = map {
$_->[0]; # (tbl, type)
}
else {
warn "Skipping $table_name because SHOW CREATE TABLE failed: $e";
grep {
my ($tbl, $type) = @$_;
(!$type || ($type ne 'VIEW'))
&& $self->_resume_from_table($tbl)
&& $self->table_is_allowed($self->{db}, $tbl);
}
next;
@{$dbh->selectall_arrayref($sql)};
PTDEBUG && _d('Found', scalar @tbls, 'tables in database',$self->{db});
$self->{tbls} = \@tbls;
}
my $tbl_struct = $tp->parse($ddl);
if ( $self->engine_is_allowed($tbl_struct->{engine}) ) {
return {
db => $self->{db},
tbl => $tbl,
name => $q->quote($self->{db}, $tbl),
ddl => $ddl,
tbl_struct => $tbl_struct,
};
TABLE:
while ( my $tbl = shift @{$self->{tbls}} ) {
my $ddl = eval { $tp->get_create_table($dbh, $self->{db}, $tbl) };
if ( my $e = $EVAL_ERROR ) {
my $table_name = "$self->{db}.$tbl";
if ( $e =~ /\QTable '$table_name' doesn't exist/ ) {
PTDEBUG && _d("$table_name no longer exists");
}
else {
warn "Skipping $table_name because SHOW CREATE TABLE failed: $e";
}
next TABLE;
}
my $tbl_struct = $tp->parse($ddl);
if ( $self->engine_is_allowed($tbl_struct->{engine}) ) {
return {
db => $self->{db},
tbl => $tbl,
name => $q->quote($self->{db}, $tbl),
ddl => $ddl,
tbl_struct => $tbl_struct,
};
}
}
}
PTDEBUG && _d('No more tables in database', $self->{db});
$self->{db} = undef;
$self->{tbls} = undef;
PTDEBUG && _d('No more tables in database', $self->{db});
$self->{db} = undef;
$self->{tbls} = undef;
} # DATABASE
return $self->_iterate_dbh();
PTDEBUG && _d('No more databases');
return;
}
sub database_is_allowed {

View File

@@ -4131,58 +4131,63 @@ sub _iterate_dbh {
$self->{dbs} = \@dbs;
}
if ( !$self->{db} ) {
$self->{db} = shift @{$self->{dbs}};
PTDEBUG && _d('Next database:', $self->{db});
return unless $self->{db};
}
if ( !defined $self->{tbls} ) {
my $sql = 'SHOW /*!50002 FULL*/ TABLES FROM ' . $q->quote($self->{db});
PTDEBUG && _d($sql);
my @tbls = map {
$_->[0]; # (tbl, type)
DATABASE:
while ( $self->{db} || defined(my $db = shift @{$self->{dbs}}) ) {
if ( !$self->{db} ) {
PTDEBUG && _d('Next database:', $db);
$self->{db} = $db;
}
grep {
my ($tbl, $type) = @$_;
(!$type || ($type ne 'VIEW'))
&& $self->_resume_from_table($tbl)
&& $self->table_is_allowed($self->{db}, $tbl);
}
@{$dbh->selectall_arrayref($sql)};
PTDEBUG && _d('Found', scalar @tbls, 'tables in database', $self->{db});
$self->{tbls} = \@tbls;
}
while ( my $tbl = shift @{$self->{tbls}} ) {
my $ddl = eval { $tp->get_create_table($dbh, $self->{db}, $tbl) };
if ( my $e = $EVAL_ERROR ) {
my $table_name = "$self->{db}.$tbl";
if ( $e =~ /\QTable '$table_name' doesn't exist/ ) {
PTDEBUG && _d("Skipping $table_name because it no longer exists");
if ( !$self->{tbls} ) {
my $sql = 'SHOW /*!50002 FULL*/ TABLES FROM ' . $q->quote($self->{db});
PTDEBUG && _d($sql);
my @tbls = map {
$_->[0]; # (tbl, type)
}
else {
warn "Skipping $table_name because SHOW CREATE TABLE failed: $e";
grep {
my ($tbl, $type) = @$_;
(!$type || ($type ne 'VIEW'))
&& $self->_resume_from_table($tbl)
&& $self->table_is_allowed($self->{db}, $tbl);
}
next;
@{$dbh->selectall_arrayref($sql)};
PTDEBUG && _d('Found', scalar @tbls, 'tables in database',$self->{db});
$self->{tbls} = \@tbls;
}
my $tbl_struct = $tp->parse($ddl);
if ( $self->engine_is_allowed($tbl_struct->{engine}) ) {
return {
db => $self->{db},
tbl => $tbl,
name => $q->quote($self->{db}, $tbl),
ddl => $ddl,
tbl_struct => $tbl_struct,
};
TABLE:
while ( my $tbl = shift @{$self->{tbls}} ) {
my $ddl = eval { $tp->get_create_table($dbh, $self->{db}, $tbl) };
if ( my $e = $EVAL_ERROR ) {
my $table_name = "$self->{db}.$tbl";
if ( $e =~ /\QTable '$table_name' doesn't exist/ ) {
PTDEBUG && _d("$table_name no longer exists");
}
else {
warn "Skipping $table_name because SHOW CREATE TABLE failed: $e";
}
next TABLE;
}
my $tbl_struct = $tp->parse($ddl);
if ( $self->engine_is_allowed($tbl_struct->{engine}) ) {
return {
db => $self->{db},
tbl => $tbl,
name => $q->quote($self->{db}, $tbl),
ddl => $ddl,
tbl_struct => $tbl_struct,
};
}
}
}
PTDEBUG && _d('No more tables in database', $self->{db});
$self->{db} = undef;
$self->{tbls} = undef;
PTDEBUG && _d('No more tables in database', $self->{db});
$self->{db} = undef;
$self->{tbls} = undef;
} # DATABASE
return $self->_iterate_dbh();
PTDEBUG && _d('No more databases');
return;
}
sub database_is_allowed {

View File

@@ -7344,58 +7344,63 @@ sub _iterate_dbh {
$self->{dbs} = \@dbs;
}
if ( !$self->{db} ) {
$self->{db} = shift @{$self->{dbs}};
PTDEBUG && _d('Next database:', $self->{db});
return unless $self->{db};
}
if ( !defined $self->{tbls} ) {
my $sql = 'SHOW /*!50002 FULL*/ TABLES FROM ' . $q->quote($self->{db});
PTDEBUG && _d($sql);
my @tbls = map {
$_->[0]; # (tbl, type)
DATABASE:
while ( $self->{db} || defined(my $db = shift @{$self->{dbs}}) ) {
if ( !$self->{db} ) {
PTDEBUG && _d('Next database:', $db);
$self->{db} = $db;
}
grep {
my ($tbl, $type) = @$_;
(!$type || ($type ne 'VIEW'))
&& $self->_resume_from_table($tbl)
&& $self->table_is_allowed($self->{db}, $tbl);
}
@{$dbh->selectall_arrayref($sql)};
PTDEBUG && _d('Found', scalar @tbls, 'tables in database', $self->{db});
$self->{tbls} = \@tbls;
}
while ( my $tbl = shift @{$self->{tbls}} ) {
my $ddl = eval { $tp->get_create_table($dbh, $self->{db}, $tbl) };
if ( my $e = $EVAL_ERROR ) {
my $table_name = "$self->{db}.$tbl";
if ( $e =~ /\QTable '$table_name' doesn't exist/ ) {
PTDEBUG && _d("Skipping $table_name because it no longer exists");
if ( !$self->{tbls} ) {
my $sql = 'SHOW /*!50002 FULL*/ TABLES FROM ' . $q->quote($self->{db});
PTDEBUG && _d($sql);
my @tbls = map {
$_->[0]; # (tbl, type)
}
else {
warn "Skipping $table_name because SHOW CREATE TABLE failed: $e";
grep {
my ($tbl, $type) = @$_;
(!$type || ($type ne 'VIEW'))
&& $self->_resume_from_table($tbl)
&& $self->table_is_allowed($self->{db}, $tbl);
}
next;
@{$dbh->selectall_arrayref($sql)};
PTDEBUG && _d('Found', scalar @tbls, 'tables in database',$self->{db});
$self->{tbls} = \@tbls;
}
my $tbl_struct = $tp->parse($ddl);
if ( $self->engine_is_allowed($tbl_struct->{engine}) ) {
return {
db => $self->{db},
tbl => $tbl,
name => $q->quote($self->{db}, $tbl),
ddl => $ddl,
tbl_struct => $tbl_struct,
};
TABLE:
while ( my $tbl = shift @{$self->{tbls}} ) {
my $ddl = eval { $tp->get_create_table($dbh, $self->{db}, $tbl) };
if ( my $e = $EVAL_ERROR ) {
my $table_name = "$self->{db}.$tbl";
if ( $e =~ /\QTable '$table_name' doesn't exist/ ) {
PTDEBUG && _d("$table_name no longer exists");
}
else {
warn "Skipping $table_name because SHOW CREATE TABLE failed: $e";
}
next TABLE;
}
my $tbl_struct = $tp->parse($ddl);
if ( $self->engine_is_allowed($tbl_struct->{engine}) ) {
return {
db => $self->{db},
tbl => $tbl,
name => $q->quote($self->{db}, $tbl),
ddl => $ddl,
tbl_struct => $tbl_struct,
};
}
}
}
PTDEBUG && _d('No more tables in database', $self->{db});
$self->{db} = undef;
$self->{tbls} = undef;
PTDEBUG && _d('No more tables in database', $self->{db});
$self->{db} = undef;
$self->{tbls} = undef;
} # DATABASE
return $self->_iterate_dbh();
PTDEBUG && _d('No more databases');
return;
}
sub database_is_allowed {

View File

@@ -7690,58 +7690,63 @@ sub _iterate_dbh {
$self->{dbs} = \@dbs;
}
if ( !$self->{db} ) {
$self->{db} = shift @{$self->{dbs}};
PTDEBUG && _d('Next database:', $self->{db});
return unless $self->{db};
}
if ( !defined $self->{tbls} ) {
my $sql = 'SHOW /*!50002 FULL*/ TABLES FROM ' . $q->quote($self->{db});
PTDEBUG && _d($sql);
my @tbls = map {
$_->[0]; # (tbl, type)
DATABASE:
while ( $self->{db} || defined(my $db = shift @{$self->{dbs}}) ) {
if ( !$self->{db} ) {
PTDEBUG && _d('Next database:', $db);
$self->{db} = $db;
}
grep {
my ($tbl, $type) = @$_;
(!$type || ($type ne 'VIEW'))
&& $self->_resume_from_table($tbl)
&& $self->table_is_allowed($self->{db}, $tbl);
}
@{$dbh->selectall_arrayref($sql)};
PTDEBUG && _d('Found', scalar @tbls, 'tables in database', $self->{db});
$self->{tbls} = \@tbls;
}
while ( my $tbl = shift @{$self->{tbls}} ) {
my $ddl = eval { $tp->get_create_table($dbh, $self->{db}, $tbl) };
if ( my $e = $EVAL_ERROR ) {
my $table_name = "$self->{db}.$tbl";
if ( $e =~ /\QTable '$table_name' doesn't exist/ ) {
PTDEBUG && _d("Skipping $table_name because it no longer exists");
if ( !$self->{tbls} ) {
my $sql = 'SHOW /*!50002 FULL*/ TABLES FROM ' . $q->quote($self->{db});
PTDEBUG && _d($sql);
my @tbls = map {
$_->[0]; # (tbl, type)
}
else {
warn "Skipping $table_name because SHOW CREATE TABLE failed: $e";
grep {
my ($tbl, $type) = @$_;
(!$type || ($type ne 'VIEW'))
&& $self->_resume_from_table($tbl)
&& $self->table_is_allowed($self->{db}, $tbl);
}
next;
@{$dbh->selectall_arrayref($sql)};
PTDEBUG && _d('Found', scalar @tbls, 'tables in database',$self->{db});
$self->{tbls} = \@tbls;
}
my $tbl_struct = $tp->parse($ddl);
if ( $self->engine_is_allowed($tbl_struct->{engine}) ) {
return {
db => $self->{db},
tbl => $tbl,
name => $q->quote($self->{db}, $tbl),
ddl => $ddl,
tbl_struct => $tbl_struct,
};
TABLE:
while ( my $tbl = shift @{$self->{tbls}} ) {
my $ddl = eval { $tp->get_create_table($dbh, $self->{db}, $tbl) };
if ( my $e = $EVAL_ERROR ) {
my $table_name = "$self->{db}.$tbl";
if ( $e =~ /\QTable '$table_name' doesn't exist/ ) {
PTDEBUG && _d("$table_name no longer exists");
}
else {
warn "Skipping $table_name because SHOW CREATE TABLE failed: $e";
}
next TABLE;
}
my $tbl_struct = $tp->parse($ddl);
if ( $self->engine_is_allowed($tbl_struct->{engine}) ) {
return {
db => $self->{db},
tbl => $tbl,
name => $q->quote($self->{db}, $tbl),
ddl => $ddl,
tbl_struct => $tbl_struct,
};
}
}
}
PTDEBUG && _d('No more tables in database', $self->{db});
$self->{db} = undef;
$self->{tbls} = undef;
PTDEBUG && _d('No more tables in database', $self->{db});
$self->{db} = undef;
$self->{tbls} = undef;
} # DATABASE
return $self->_iterate_dbh();
PTDEBUG && _d('No more databases');
return;
}
sub database_is_allowed {

View File

@@ -334,64 +334,67 @@ sub _iterate_dbh {
$self->{dbs} = \@dbs;
}
if ( !$self->{db} ) {
$self->{db} = shift @{$self->{dbs}};
PTDEBUG && _d('Next database:', $self->{db});
return unless $self->{db};
}
if ( !defined $self->{tbls} ) {
my $sql = 'SHOW /*!50002 FULL*/ TABLES FROM ' . $q->quote($self->{db});
PTDEBUG && _d($sql);
my @tbls = map {
$_->[0]; # (tbl, type)
DATABASE:
while ( $self->{db} || defined(my $db = shift @{$self->{dbs}}) ) {
if ( !$self->{db} ) {
PTDEBUG && _d('Next database:', $db);
$self->{db} = $db;
}
grep {
my ($tbl, $type) = @$_;
(!$type || ($type ne 'VIEW'))
&& $self->_resume_from_table($tbl)
&& $self->table_is_allowed($self->{db}, $tbl);
}
@{$dbh->selectall_arrayref($sql)};
PTDEBUG && _d('Found', scalar @tbls, 'tables in database', $self->{db});
$self->{tbls} = \@tbls;
}
while ( my $tbl = shift @{$self->{tbls}} ) {
my $ddl = eval { $tp->get_create_table($dbh, $self->{db}, $tbl) };
if ( my $e = $EVAL_ERROR ) {
my $table_name = "$self->{db}.$tbl";
# SHOW CREATE TABLE failed. This is a bit puzzling;
# maybe the table got dropped, or crashed. Not much we can
# do about it; If the table is missing, just PTDEBUG it, but
# otherwise, warn with the error.
if ( $e =~ /\QTable '$table_name' doesn't exist/ ) {
PTDEBUG && _d("Skipping $table_name because it no longer exists");
if ( !$self->{tbls} ) {
my $sql = 'SHOW /*!50002 FULL*/ TABLES FROM ' . $q->quote($self->{db});
PTDEBUG && _d($sql);
my @tbls = map {
$_->[0]; # (tbl, type)
}
else {
warn "Skipping $table_name because SHOW CREATE TABLE failed: $e";
grep {
my ($tbl, $type) = @$_;
(!$type || ($type ne 'VIEW'))
&& $self->_resume_from_table($tbl)
&& $self->table_is_allowed($self->{db}, $tbl);
}
next;
@{$dbh->selectall_arrayref($sql)};
PTDEBUG && _d('Found', scalar @tbls, 'tables in database',$self->{db});
$self->{tbls} = \@tbls;
}
my $tbl_struct = $tp->parse($ddl);
if ( $self->engine_is_allowed($tbl_struct->{engine}) ) {
return {
db => $self->{db},
tbl => $tbl,
name => $q->quote($self->{db}, $tbl),
ddl => $ddl,
tbl_struct => $tbl_struct,
};
TABLE:
while ( my $tbl = shift @{$self->{tbls}} ) {
my $ddl = eval { $tp->get_create_table($dbh, $self->{db}, $tbl) };
if ( my $e = $EVAL_ERROR ) {
my $table_name = "$self->{db}.$tbl";
# SHOW CREATE TABLE failed. This is a bit puzzling;
# maybe the table got dropped, or crashed. Not much we can
# do about it; If the table is missing, just PTDEBUG it, but
# otherwise, warn with the error.
if ( $e =~ /\QTable '$table_name' doesn't exist/ ) {
PTDEBUG && _d("$table_name no longer exists");
}
else {
warn "Skipping $table_name because SHOW CREATE TABLE failed: $e";
}
next TABLE;
}
my $tbl_struct = $tp->parse($ddl);
if ( $self->engine_is_allowed($tbl_struct->{engine}) ) {
return {
db => $self->{db},
tbl => $tbl,
name => $q->quote($self->{db}, $tbl),
ddl => $ddl,
tbl_struct => $tbl_struct,
};
}
}
}
PTDEBUG && _d('No more tables in database', $self->{db});
$self->{db} = undef;
$self->{tbls} = undef;
PTDEBUG && _d('No more tables in database', $self->{db});
$self->{db} = undef;
$self->{tbls} = undef;
} # DATABASE
# Recurse to get the next database. If there's no next db, then the
# call will return undef and we'll return undef, too.
return $self->_iterate_dbh();
PTDEBUG && _d('No more databases');
return;
}
sub database_is_allowed {

View File

@@ -547,10 +547,24 @@ eval {
diag(`$trunk/sandbox/stop-sandbox $master3_port >/dev/null`);
# #############################################################################
# Bug 1136559: Deep recursion on subroutine "SchemaIterator::_iterate_dbh"
# #############################################################################
$sb->wipe_clean($dbh);
diag(`/tmp/12345/use < $trunk/t/lib/samples/100-dbs.sql`);
test_so(
filters => [],
result => "foo001.bar001 ",
lives_ok => 1,
test_name => "Bug 1136559: Deep recursion on subroutine SchemaIterator::_iterate_dbh",
);
diag(`/tmp/12345/use < $trunk/t/lib/samples/100-dbs-drop.sql`);
# #############################################################################
# Done.
# #############################################################################
ok($sb->ok(), "Sandbox servers") or BAIL_OUT(__FILE__ . " broke the sandbox");
done_testing;
exit;

View File

@@ -0,0 +1,100 @@
DROP DATABASE IF EXISTS foo001;
DROP DATABASE IF EXISTS foo002;
DROP DATABASE IF EXISTS foo003;
DROP DATABASE IF EXISTS foo004;
DROP DATABASE IF EXISTS foo005;
DROP DATABASE IF EXISTS foo006;
DROP DATABASE IF EXISTS foo007;
DROP DATABASE IF EXISTS foo008;
DROP DATABASE IF EXISTS foo009;
DROP DATABASE IF EXISTS foo010;
DROP DATABASE IF EXISTS foo011;
DROP DATABASE IF EXISTS foo012;
DROP DATABASE IF EXISTS foo013;
DROP DATABASE IF EXISTS foo014;
DROP DATABASE IF EXISTS foo015;
DROP DATABASE IF EXISTS foo016;
DROP DATABASE IF EXISTS foo017;
DROP DATABASE IF EXISTS foo018;
DROP DATABASE IF EXISTS foo019;
DROP DATABASE IF EXISTS foo020;
DROP DATABASE IF EXISTS foo021;
DROP DATABASE IF EXISTS foo022;
DROP DATABASE IF EXISTS foo023;
DROP DATABASE IF EXISTS foo024;
DROP DATABASE IF EXISTS foo025;
DROP DATABASE IF EXISTS foo026;
DROP DATABASE IF EXISTS foo027;
DROP DATABASE IF EXISTS foo028;
DROP DATABASE IF EXISTS foo029;
DROP DATABASE IF EXISTS foo030;
DROP DATABASE IF EXISTS foo031;
DROP DATABASE IF EXISTS foo032;
DROP DATABASE IF EXISTS foo033;
DROP DATABASE IF EXISTS foo034;
DROP DATABASE IF EXISTS foo035;
DROP DATABASE IF EXISTS foo036;
DROP DATABASE IF EXISTS foo037;
DROP DATABASE IF EXISTS foo038;
DROP DATABASE IF EXISTS foo039;
DROP DATABASE IF EXISTS foo040;
DROP DATABASE IF EXISTS foo041;
DROP DATABASE IF EXISTS foo042;
DROP DATABASE IF EXISTS foo043;
DROP DATABASE IF EXISTS foo044;
DROP DATABASE IF EXISTS foo045;
DROP DATABASE IF EXISTS foo046;
DROP DATABASE IF EXISTS foo047;
DROP DATABASE IF EXISTS foo048;
DROP DATABASE IF EXISTS foo049;
DROP DATABASE IF EXISTS foo050;
DROP DATABASE IF EXISTS foo051;
DROP DATABASE IF EXISTS foo052;
DROP DATABASE IF EXISTS foo053;
DROP DATABASE IF EXISTS foo054;
DROP DATABASE IF EXISTS foo055;
DROP DATABASE IF EXISTS foo056;
DROP DATABASE IF EXISTS foo057;
DROP DATABASE IF EXISTS foo058;
DROP DATABASE IF EXISTS foo059;
DROP DATABASE IF EXISTS foo060;
DROP DATABASE IF EXISTS foo061;
DROP DATABASE IF EXISTS foo062;
DROP DATABASE IF EXISTS foo063;
DROP DATABASE IF EXISTS foo064;
DROP DATABASE IF EXISTS foo065;
DROP DATABASE IF EXISTS foo066;
DROP DATABASE IF EXISTS foo067;
DROP DATABASE IF EXISTS foo068;
DROP DATABASE IF EXISTS foo069;
DROP DATABASE IF EXISTS foo070;
DROP DATABASE IF EXISTS foo071;
DROP DATABASE IF EXISTS foo072;
DROP DATABASE IF EXISTS foo073;
DROP DATABASE IF EXISTS foo074;
DROP DATABASE IF EXISTS foo075;
DROP DATABASE IF EXISTS foo076;
DROP DATABASE IF EXISTS foo077;
DROP DATABASE IF EXISTS foo078;
DROP DATABASE IF EXISTS foo079;
DROP DATABASE IF EXISTS foo080;
DROP DATABASE IF EXISTS foo081;
DROP DATABASE IF EXISTS foo082;
DROP DATABASE IF EXISTS foo083;
DROP DATABASE IF EXISTS foo084;
DROP DATABASE IF EXISTS foo085;
DROP DATABASE IF EXISTS foo086;
DROP DATABASE IF EXISTS foo087;
DROP DATABASE IF EXISTS foo088;
DROP DATABASE IF EXISTS foo089;
DROP DATABASE IF EXISTS foo090;
DROP DATABASE IF EXISTS foo091;
DROP DATABASE IF EXISTS foo092;
DROP DATABASE IF EXISTS foo093;
DROP DATABASE IF EXISTS foo094;
DROP DATABASE IF EXISTS foo095;
DROP DATABASE IF EXISTS foo096;
DROP DATABASE IF EXISTS foo097;
DROP DATABASE IF EXISTS foo098;
DROP DATABASE IF EXISTS foo099;
DROP DATABASE IF EXISTS foo100;

105
t/lib/samples/100-dbs.sql Normal file
View File

@@ -0,0 +1,105 @@
CREATE DATABASE IF NOT EXISTS foo001;
CREATE DATABASE IF NOT EXISTS foo002;
CREATE DATABASE IF NOT EXISTS foo003;
CREATE DATABASE IF NOT EXISTS foo004;
CREATE DATABASE IF NOT EXISTS foo005;
CREATE DATABASE IF NOT EXISTS foo006;
CREATE DATABASE IF NOT EXISTS foo007;
CREATE DATABASE IF NOT EXISTS foo008;
CREATE DATABASE IF NOT EXISTS foo009;
CREATE DATABASE IF NOT EXISTS foo010;
CREATE DATABASE IF NOT EXISTS foo011;
CREATE DATABASE IF NOT EXISTS foo012;
CREATE DATABASE IF NOT EXISTS foo013;
CREATE DATABASE IF NOT EXISTS foo014;
CREATE DATABASE IF NOT EXISTS foo015;
CREATE DATABASE IF NOT EXISTS foo016;
CREATE DATABASE IF NOT EXISTS foo017;
CREATE DATABASE IF NOT EXISTS foo018;
CREATE DATABASE IF NOT EXISTS foo019;
CREATE DATABASE IF NOT EXISTS foo020;
CREATE DATABASE IF NOT EXISTS foo021;
CREATE DATABASE IF NOT EXISTS foo022;
CREATE DATABASE IF NOT EXISTS foo023;
CREATE DATABASE IF NOT EXISTS foo024;
CREATE DATABASE IF NOT EXISTS foo025;
CREATE DATABASE IF NOT EXISTS foo026;
CREATE DATABASE IF NOT EXISTS foo027;
CREATE DATABASE IF NOT EXISTS foo028;
CREATE DATABASE IF NOT EXISTS foo029;
CREATE DATABASE IF NOT EXISTS foo030;
CREATE DATABASE IF NOT EXISTS foo031;
CREATE DATABASE IF NOT EXISTS foo032;
CREATE DATABASE IF NOT EXISTS foo033;
CREATE DATABASE IF NOT EXISTS foo034;
CREATE DATABASE IF NOT EXISTS foo035;
CREATE DATABASE IF NOT EXISTS foo036;
CREATE DATABASE IF NOT EXISTS foo037;
CREATE DATABASE IF NOT EXISTS foo038;
CREATE DATABASE IF NOT EXISTS foo039;
CREATE DATABASE IF NOT EXISTS foo040;
CREATE DATABASE IF NOT EXISTS foo041;
CREATE DATABASE IF NOT EXISTS foo042;
CREATE DATABASE IF NOT EXISTS foo043;
CREATE DATABASE IF NOT EXISTS foo044;
CREATE DATABASE IF NOT EXISTS foo045;
CREATE DATABASE IF NOT EXISTS foo046;
CREATE DATABASE IF NOT EXISTS foo047;
CREATE DATABASE IF NOT EXISTS foo048;
CREATE DATABASE IF NOT EXISTS foo049;
CREATE DATABASE IF NOT EXISTS foo050;
CREATE DATABASE IF NOT EXISTS foo051;
CREATE DATABASE IF NOT EXISTS foo052;
CREATE DATABASE IF NOT EXISTS foo053;
CREATE DATABASE IF NOT EXISTS foo054;
CREATE DATABASE IF NOT EXISTS foo055;
CREATE DATABASE IF NOT EXISTS foo056;
CREATE DATABASE IF NOT EXISTS foo057;
CREATE DATABASE IF NOT EXISTS foo058;
CREATE DATABASE IF NOT EXISTS foo059;
CREATE DATABASE IF NOT EXISTS foo060;
CREATE DATABASE IF NOT EXISTS foo061;
CREATE DATABASE IF NOT EXISTS foo062;
CREATE DATABASE IF NOT EXISTS foo063;
CREATE DATABASE IF NOT EXISTS foo064;
CREATE DATABASE IF NOT EXISTS foo065;
CREATE DATABASE IF NOT EXISTS foo066;
CREATE DATABASE IF NOT EXISTS foo067;
CREATE DATABASE IF NOT EXISTS foo068;
CREATE DATABASE IF NOT EXISTS foo069;
CREATE DATABASE IF NOT EXISTS foo070;
CREATE DATABASE IF NOT EXISTS foo071;
CREATE DATABASE IF NOT EXISTS foo072;
CREATE DATABASE IF NOT EXISTS foo073;
CREATE DATABASE IF NOT EXISTS foo074;
CREATE DATABASE IF NOT EXISTS foo075;
CREATE DATABASE IF NOT EXISTS foo076;
CREATE DATABASE IF NOT EXISTS foo077;
CREATE DATABASE IF NOT EXISTS foo078;
CREATE DATABASE IF NOT EXISTS foo079;
CREATE DATABASE IF NOT EXISTS foo080;
CREATE DATABASE IF NOT EXISTS foo081;
CREATE DATABASE IF NOT EXISTS foo082;
CREATE DATABASE IF NOT EXISTS foo083;
CREATE DATABASE IF NOT EXISTS foo084;
CREATE DATABASE IF NOT EXISTS foo085;
CREATE DATABASE IF NOT EXISTS foo086;
CREATE DATABASE IF NOT EXISTS foo087;
CREATE DATABASE IF NOT EXISTS foo088;
CREATE DATABASE IF NOT EXISTS foo089;
CREATE DATABASE IF NOT EXISTS foo090;
CREATE DATABASE IF NOT EXISTS foo091;
CREATE DATABASE IF NOT EXISTS foo092;
CREATE DATABASE IF NOT EXISTS foo093;
CREATE DATABASE IF NOT EXISTS foo094;
CREATE DATABASE IF NOT EXISTS foo095;
CREATE DATABASE IF NOT EXISTS foo096;
CREATE DATABASE IF NOT EXISTS foo097;
CREATE DATABASE IF NOT EXISTS foo098;
CREATE DATABASE IF NOT EXISTS foo099;
CREATE DATABASE IF NOT EXISTS foo100;
CREATE TABLE IF NOT EXISTS foo001.bar001 (
`id` int unsigned NOT NULL AUTO_INCREMENT,
`value` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;