diff --git a/application/Espo/ORM/QueryComposer/BaseQueryComposer.php b/application/Espo/ORM/QueryComposer/BaseQueryComposer.php index cb4929bbe6..901117d318 100644 --- a/application/Espo/ORM/QueryComposer/BaseQueryComposer.php +++ b/application/Espo/ORM/QueryComposer/BaseQueryComposer.php @@ -385,7 +385,7 @@ abstract class BaseQueryComposer implements QueryComposer $valuesQuery = $params['valuesQuery'] ?? null; if ($isBySelect) { - return '('. $this->composeSelecting($valuesQuery) . ')'; + return $this->composeSelecting($valuesQuery); } if ($isMass) { diff --git a/tests/unit/Espo/ORM/MapperTest.php b/tests/unit/Espo/ORM/MapperTest.php index bd98682833..540e40707e 100644 --- a/tests/unit/Espo/ORM/MapperTest.php +++ b/tests/unit/Espo/ORM/MapperTest.php @@ -55,7 +55,7 @@ use PDOStatement; require_once 'tests/unit/testData/DB/Entities.php'; -class DBMapperTest extends \PHPUnit\Framework\TestCase +class MapperTest extends \PHPUnit\Framework\TestCase { protected $db; protected $pdo; @@ -1150,7 +1150,8 @@ class DBMapperTest extends \PHPUnit\Framework\TestCase { $query = "INSERT INTO `post_tag` (`post_id`, `tag_id`) ". - "(SELECT '1' AS `v0`, tag.id AS `id` FROM `tag` WHERE tag.name = 'test' AND tag.deleted = 0) ON DUPLICATE KEY UPDATE `deleted` = 0"; + "SELECT '1' AS `v0`, tag.id AS `id` FROM `tag` WHERE tag.name = 'test' AND tag.deleted = 0 ". + "ON DUPLICATE KEY UPDATE `deleted` = 0"; $return = true; $this->mockQuery($query, $return); diff --git a/tests/unit/Espo/ORM/MysqlQueryComposerTest.php b/tests/unit/Espo/ORM/MysqlQueryComposerTest.php index 8e0ba2c0ce..2e827e68c7 100644 --- a/tests/unit/Espo/ORM/MysqlQueryComposerTest.php +++ b/tests/unit/Espo/ORM/MysqlQueryComposerTest.php @@ -323,6 +323,30 @@ class MysqlQueryComposerTest extends \PHPUnit\Framework\TestCase $this->assertEquals($expectedSql, $sql); } + public function testInsertValuesQuery1() + { + $selectQuery = $this->queryBuilder + ->select() + ->from('Account') + ->select('id') + ->withDeleted() + ->build(); + + $query = $this->queryBuilder + ->insert() + ->into('Account') + ->columns(['id']) + ->valuesQuery($selectQuery) + ->build(); + + $sql = $this->query->compose($query); + + $expectedSql = + "INSERT INTO `account` (`id`) SELECT account.id AS `id` FROM `account`"; + + $this->assertEquals($expectedSql, $sql); + } + public function testInsertUpdate() { $sql = $this->query->compose(Insert::fromRaw([