From bddc889f97045047fb41d4e5aca0b696e97e0947 Mon Sep 17 00:00:00 2001 From: Daniel Nichter Date: Tue, 25 Jun 2013 16:15:50 -0700 Subject: [PATCH] Add failing test and samples for deep recursion. --- t/lib/SchemaIterator.t | 18 +++++- t/lib/samples/100-dbs-drop.sql | 100 +++++++++++++++++++++++++++++++ t/lib/samples/100-dbs.sql | 105 +++++++++++++++++++++++++++++++++ 3 files changed, 221 insertions(+), 2 deletions(-) create mode 100644 t/lib/samples/100-dbs-drop.sql create mode 100644 t/lib/samples/100-dbs.sql diff --git a/t/lib/SchemaIterator.t b/t/lib/SchemaIterator.t index b58cb0a5..8544fc1f 100644 --- a/t/lib/SchemaIterator.t +++ b/t/lib/SchemaIterator.t @@ -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; diff --git a/t/lib/samples/100-dbs-drop.sql b/t/lib/samples/100-dbs-drop.sql new file mode 100644 index 00000000..df3caca2 --- /dev/null +++ b/t/lib/samples/100-dbs-drop.sql @@ -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; diff --git a/t/lib/samples/100-dbs.sql b/t/lib/samples/100-dbs.sql new file mode 100644 index 00000000..602e7c63 --- /dev/null +++ b/t/lib/samples/100-dbs.sql @@ -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;