From fd75dffe4e4d9d5ccedc0b18ce2c8561c0491432 Mon Sep 17 00:00:00 2001 From: Thomas Hohn <thomas@hohn.dk> Date: Sat, 25 Feb 2017 15:03:05 +0100 Subject: [PATCH] [BUGFIX] Add support for multi-line INSERT statements in static data Join consecutive lines for INSERT statements in ext_tables_static+adt.sql using a space instead of a linefeed to avoid parser errors. Resolves: #78892 Releases: master Change-Id: Ide550419b7ef41109a660a671b8aba65a33eb6b3 Reviewed-on: https://review.typo3.org/51854 Reviewed-by: Morton Jonuschat <m.jonuschat@mojocode.de> Tested-by: Morton Jonuschat <m.jonuschat@mojocode.de> Tested-by: TYPO3com <no-reply@typo3.com> Reviewed-by: Helmut Hummel <typo3@helhum.io> Tested-by: Helmut Hummel <typo3@helhum.io> --- .../core/Classes/Database/Schema/SqlReader.php | 2 +- .../Unit/Database/Schema/SqlReaderTest.php | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/typo3/sysext/core/Classes/Database/Schema/SqlReader.php b/typo3/sysext/core/Classes/Database/Schema/SqlReader.php index 095b45ca8d48..5df5f8932f5c 100644 --- a/typo3/sysext/core/Classes/Database/Schema/SqlReader.php +++ b/typo3/sysext/core/Classes/Database/Schema/SqlReader.php @@ -102,7 +102,7 @@ class SqlReader } $statementArrayPointer++; } else { - $statementArray[$statementArrayPointer] .= LF; + $statementArray[$statementArrayPointer] .= ' '; } } diff --git a/typo3/sysext/core/Tests/Unit/Database/Schema/SqlReaderTest.php b/typo3/sysext/core/Tests/Unit/Database/Schema/SqlReaderTest.php index daedec83d1fd..1547714d7a8a 100644 --- a/typo3/sysext/core/Tests/Unit/Database/Schema/SqlReaderTest.php +++ b/typo3/sysext/core/Tests/Unit/Database/Schema/SqlReaderTest.php @@ -83,6 +83,23 @@ class SqlReaderTest extends \TYPO3\TestingFramework\Core\Unit\UnitTestCase $this->assertStringStartsWith('INSERT', array_pop($result)); } + /** + * @test + */ + public function getInsertStatementArrayResultWithNewline() + { + $result = $this->subject->getInsertStatementArray( + 'CREATE TABLE aTestTable(' . LF . ' aTestField INT(11)' . LF . ');' . + LF . + 'INSERT INTO aTestTable(`aTestField`) ' . + LF . + 'VALUES(1);' + ); + + $this->assertCount(1, $result); + $this->assertSame('INSERT INTO aTestTable(`aTestField`) VALUES(1);', array_pop($result)); + } + /** * @test */ -- GitLab