Skip to content

Commit 14e39f2

Browse files
committed
Dump triggers with delimiter (Fixes #76) (Case 114069)
1 parent 8b9feea commit 14e39f2

File tree

2 files changed

+28
-1
lines changed

2 files changed

+28
-1
lines changed

src/Webfactory/Slimdump/Database/Dumper.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,15 +100,19 @@ public function dumpTriggers(Connection $db, $tableName, $level = Table::DEFINER
100100

101101
$this->output->writeln("-- BEGIN TRIGGERS $tableName", OutputInterface::OUTPUT_RAW);
102102

103+
$this->output->writeln("DELIMITER ;;\n");
104+
103105
foreach ($triggers as $row) {
104106
$createTriggerCommand = $db->fetchColumn("SHOW CREATE TRIGGER `{$row['Trigger']}`", [], 2);
105107

106108
if (Table::DEFINER_NO_DEFINER === $level) {
107109
$createTriggerCommand = preg_replace('/DEFINER=`[^`]*`@`[^`]*` /', '', $createTriggerCommand);
108110
}
109111

110-
$this->output->writeln($createTriggerCommand.";\n", OutputInterface::OUTPUT_RAW);
112+
$this->output->writeln($createTriggerCommand.";;\n", OutputInterface::OUTPUT_RAW);
111113
}
114+
115+
$this->output->writeln('DELIMITER ;');
112116
}
113117

114118
public function dumpView(Connection $db, $viewName, $level = Table::DEFINER_NO_DEFINER)

test/Webfactory/Slimdump/Database/DumperTest.php

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,4 +169,27 @@ public function testDumpsTriggerWithoutDefiner()
169169
$output = $this->outputBuffer->fetch();
170170
$this->assertStringContainsString('CREATE TRIGGER trigger1 ...;', $output);
171171
}
172+
173+
public function testDumpsTriggerWithDelimiter()
174+
{
175+
$this->dbMock->expects($this->at(0))
176+
->method('quote')
177+
->with('test')
178+
->willReturn("'test'");
179+
180+
$this->dbMock->expects($this->at(1))
181+
->method('fetchAll')
182+
->with("SHOW TRIGGERS LIKE 'test'")
183+
->willReturn([['Trigger' => 'trigger1']]);
184+
185+
$this->dbMock->expects($this->at(2))
186+
->method('fetchColumn')
187+
->with('SHOW CREATE TRIGGER `trigger1`');
188+
189+
$this->dumper->dumpTriggers($this->dbMock, 'test');
190+
191+
$output = $this->outputBuffer->fetch();
192+
$this->assertStringContainsString('DELIMITER ;;', $output);
193+
$this->assertStringContainsString('DELIMITER ;', $output);
194+
}
172195
}

0 commit comments

Comments
 (0)