[BUGFIX] Line breaks in string in compile* methods of the SqlParser 48/32648/3
authorStefano Kowalke <blueduck@gmx.net>
Tue, 4 Feb 2014 09:30:46 +0000 (10:30 +0100)
committerMarkus Klein <klein.t3@reelworx.at>
Mon, 8 Sep 2014 16:46:01 +0000 (18:46 +0200)
There are lines-breaks inside the string which produces
'SELECT * \n\t\t\t\tFROM table_name\n\t\t\t\tWHERE'
queries while compile the sql query back from the array.

This breaks the test for EXT:dbal because debugAndCompare()
function will die.

Releases: 6.3, 6.2
Resolves: #55648
Change-Id: Iab6ad451d30bb94494ebbd3cb3b69e661ee55c00
Reviewed-on: http://review.typo3.org/32648
Reviewed-by: Xavier Perseguers <xavier@typo3.org>
Tested-by: Xavier Perseguers <xavier@typo3.org>
Reviewed-by: Markus Klein <klein.t3@reelworx.at>
Tested-by: Markus Klein <klein.t3@reelworx.at>
typo3/sysext/core/Classes/Database/SqlParser.php
typo3/sysext/dbal/Tests/Unit/Database/SqlParserTest.php

index ee3b6bc..1c9d192 100644 (file)
@@ -1517,13 +1517,13 @@ class SqlParser {
                $orderBy = $this->compileFieldList($components['ORDERBY']);
                $limit = $components['LIMIT'];
                // Make query:
                $orderBy = $this->compileFieldList($components['ORDERBY']);
                $limit = $components['LIMIT'];
                // Make query:
-               $query = 'SELECT ' . ($components['STRAIGHT_JOIN'] ?: '') . '
-                               ' . $this->compileFieldList($components['SELECT']) . '
-                               FROM ' . $this->compileFromTables($components['FROM']) . (strlen($where) ? '
-                               WHERE ' . $where : '') . (strlen($groupBy) ? '
-                               GROUP BY ' . $groupBy : '') . (strlen($orderBy) ? '
-                               ORDER BY ' . $orderBy : '') . (strlen($limit) ? '
-                               LIMIT ' . $limit : '');
+               $query = 'SELECT ' . ($components['STRAIGHT_JOIN'] ?: '') . ' ' .
+                               $this->compileFieldList($components['SELECT']) .
+                               ' FROM ' . $this->compileFromTables($components['FROM']) . (strlen($where) ?
+                               ' WHERE ' . $where : '') . (strlen($groupBy) ?
+                               ' GROUP BY ' . $groupBy : '') . (strlen($orderBy) ?
+                               ' ORDER BY ' . $orderBy : '') . (strlen($limit) ?
+                               LIMIT ' . $limit : '');
                return $query;
        }
 
                return $query;
        }
 
@@ -1543,11 +1543,9 @@ class SqlParser {
                        $fields[] = $fN . '=' . $fV[1] . $this->compileAddslashes($fV[0]) . $fV[1];
                }
                // Make query:
                        $fields[] = $fN . '=' . $fV[1] . $this->compileAddslashes($fV[0]) . $fV[1];
                }
                // Make query:
-               $query = 'UPDATE ' . $components['TABLE'] . ' SET
-                               ' . implode(',
-                               ', $fields) . '
-                               ' . (strlen($where) ? '
-                               WHERE ' . $where : '');
+               $query = 'UPDATE ' . $components['TABLE'] . ' SET ' . implode(',', $fields) .
+                       (strlen($where) ? ' WHERE ' . $where : '');
+
                return $query;
        }
 
                return $query;
        }
 
@@ -1572,20 +1570,15 @@ class SqlParser {
                        foreach ($valuesComponent as $fV) {
                                $fields[] = $fV[1] . $this->compileAddslashes($fV[0]) . $fV[1];
                        }
                        foreach ($valuesComponent as $fV) {
                                $fields[] = $fV[1] . $this->compileAddslashes($fV[0]) . $fV[1];
                        }
-                       $values[] = '(' . implode(',
-                               ', $fields) . ')';
+                       $values[] = '(' . implode(',', $fields) . ')';
                }
                // Make query:
                $query = 'INSERT INTO ' . $components['TABLE'];
                if (count($tableFields)) {
                }
                // Make query:
                $query = 'INSERT INTO ' . $components['TABLE'];
                if (count($tableFields)) {
-                       $query .= '
-                               (' . implode(',
-                               ', $tableFields) . ')';
+                       $query .= ' (' . implode(',', $tableFields) . ')';
                }
                }
-               $query .= '
-                       VALUES
-                       ' . implode(',
-                       ', $values);
+               $query .= ' VALUES ' . implode(',', $values);
+
                return $query;
        }
 
                return $query;
        }
 
@@ -1600,8 +1593,8 @@ class SqlParser {
                // Where clause:
                $where = $this->compileWhereClause($components['WHERE']);
                // Make query:
                // Where clause:
                $where = $this->compileWhereClause($components['WHERE']);
                // Make query:
-               $query = 'DELETE FROM ' . $components['TABLE'] . (strlen($where) ? '
-                               WHERE ' . $where : '');
+               $query = 'DELETE FROM ' . $components['TABLE'] . (strlen($where) ? ' WHERE ' . $where : '');
+
                return $query;
        }
 
                return $query;
        }
 
@@ -1630,10 +1623,10 @@ class SqlParser {
                        }
                }
                // Make query:
                        }
                }
                // Make query:
-               $query = 'CREATE TABLE ' . $components['TABLE'] . ' (
-                       ' . implode(',
-                       ', $fieldsKeys) . '
-                       )' . ($components['engine'] ? ' ENGINE=' . $components['engine'] : '');
+               $query = 'CREATE TABLE ' . $components['TABLE'] . ' (' .
+                       implode(',', $fieldsKeys) . ')' .
+                       ($components['engine'] ? ' ENGINE=' . $components['engine'] : '');
+
                return $query;
        }
 
                return $query;
        }
 
index 51db3d7..05b15da 100644 (file)
@@ -166,7 +166,7 @@ class SqlParserTest extends AbstractTestCase {
                $this->assertInternalType('array', $components);
 
                $result = $this->subject->_callRef('compileINSERT', $components);
                $this->assertInternalType('array', $components);
 
                $result = $this->subject->_callRef('compileINSERT', $components);
-               $expected = 'INSERT INTO static_country_zones VALUES (\'483\', \'0\', \'NL\', \'NLD\', \'528\', \'DR\', \'Drenthe\', \'\')';
+               $expected = 'INSERT INTO static_country_zones VALUES (\'483\',\'0\',\'NL\',\'NLD\',\'528\',\'DR\',\'Drenthe\',\'\')';
                $this->assertEquals($expected, $this->cleanSql($result));
        }
 
                $this->assertEquals($expected, $this->cleanSql($result));
        }
 
@@ -179,7 +179,7 @@ class SqlParserTest extends AbstractTestCase {
                $this->assertInternalType('array', $components);
 
                $result = $this->subject->_callRef('compileINSERT', $components);
                $this->assertInternalType('array', $components);
 
                $result = $this->subject->_callRef('compileINSERT', $components);
-               $expected = 'INSERT INTO static_country_zones VALUES (\'483\', \'0\', \'NL\', \'NLD\', \'528\', \'DR\', \'Drenthe\', \'\')';
+               $expected = 'INSERT INTO static_country_zones VALUES (\'483\',\'0\',\'NL\',\'NLD\',\'528\',\'DR\',\'Drenthe\',\'\')';
                $this->assertEquals($expected, $this->cleanSql($result));
        }
 
                $this->assertEquals($expected, $this->cleanSql($result));
        }
 
@@ -193,8 +193,8 @@ class SqlParserTest extends AbstractTestCase {
                $this->assertInternalType('array', $components);
 
                $result = $this->subject->_callRef('compileINSERT', $components);
                $this->assertInternalType('array', $components);
 
                $result = $this->subject->_callRef('compileINSERT', $components);
-               $expected = 'INSERT INTO static_territories (uid, pid, tr_iso_nr, tr_parent_iso_nr, tr_name_en) ';
-               $expected .= 'VALUES (\'1\', \'0\', \'2\', \'0\', \'Africa\')';
+               $expected = 'INSERT INTO static_territories (uid,pid,tr_iso_nr,tr_parent_iso_nr,tr_name_en) ';
+               $expected .= 'VALUES (\'1\',\'0\',\'2\',\'0\',\'Africa\')';
                $this->assertEquals($expected, $this->cleanSql($result));
        }
 
                $this->assertEquals($expected, $this->cleanSql($result));
        }
 
@@ -207,7 +207,7 @@ class SqlParserTest extends AbstractTestCase {
                $this->assertInternalType('array', $components);
 
                $result = $this->subject->_callRef('compileINSERT', $components);
                $this->assertInternalType('array', $components);
 
                $result = $this->subject->_callRef('compileINSERT', $components);
-               $expected = 'INSERT INTO static_territories VALUES (\'1\', \'0\', \'2\', \'0\', \'Africa\'), (\'2\', \'0\', \'9\', \'0\', \'Oceania\'), ' . '(\'3\', \'0\', \'19\', \'0\', \'Americas\'), (\'4\', \'0\', \'142\', \'0\', \'Asia\')';
+               $expected = 'INSERT INTO static_territories VALUES (\'1\',\'0\',\'2\',\'0\',\'Africa\'),(\'2\',\'0\',\'9\',\'0\',\'Oceania\'),(\'3\',\'0\',\'19\',\'0\',\'Americas\'),(\'4\',\'0\',\'142\',\'0\',\'Asia\')';
                $this->assertEquals($expected, $this->cleanSql($result));
        }
 
                $this->assertEquals($expected, $this->cleanSql($result));
        }
 
@@ -221,8 +221,8 @@ class SqlParserTest extends AbstractTestCase {
                $this->assertInternalType('array', $components);
 
                $result = $this->subject->_callRef('compileINSERT', $components);
                $this->assertInternalType('array', $components);
 
                $result = $this->subject->_callRef('compileINSERT', $components);
-               $expected = 'INSERT INTO static_territories (uid, pid, tr_iso_nr, tr_parent_iso_nr, tr_name_en) ';
-               $expected .= 'VALUES (\'1\', \'0\', \'2\', \'0\', \'Africa\'), (\'2\', \'0\', \'9\', \'0\', \'Oceania\')';
+               $expected = 'INSERT INTO static_territories (uid,pid,tr_iso_nr,tr_parent_iso_nr,tr_name_en) ';
+               $expected .= 'VALUES (\'1\',\'0\',\'2\',\'0\',\'Africa\'),(\'2\',\'0\',\'9\',\'0\',\'Oceania\')';
                $this->assertEquals($expected, $this->cleanSql($result));
        }
 
                $this->assertEquals($expected, $this->cleanSql($result));
        }