Fix Postgres issue "Cardinality violation" when there is multiple "is_milestone_of" links
This commit is contained in:
@@ -50,6 +50,7 @@ Bug fixes:
|
|||||||
* Deleting subtask doesn't update task time tracking
|
* Deleting subtask doesn't update task time tracking
|
||||||
* Fix Mysql error about gitlab_id when creating remote user
|
* Fix Mysql error about gitlab_id when creating remote user
|
||||||
* Fix subtask timer bug (event called recursively)
|
* Fix subtask timer bug (event called recursively)
|
||||||
|
* Fix Postgres issue "Cardinality violation" when there is multiple "is_milestone_of" links
|
||||||
|
|
||||||
Version 1.0.18
|
Version 1.0.18
|
||||||
--------------
|
--------------
|
||||||
|
|||||||
@@ -93,7 +93,7 @@ class TaskFinder extends Base
|
|||||||
'(SELECT count(*) FROM '.Subtask::TABLE.' WHERE '.Subtask::TABLE.'.task_id=tasks.id) AS nb_subtasks',
|
'(SELECT count(*) FROM '.Subtask::TABLE.' WHERE '.Subtask::TABLE.'.task_id=tasks.id) AS nb_subtasks',
|
||||||
'(SELECT count(*) FROM '.Subtask::TABLE.' WHERE '.Subtask::TABLE.'.task_id=tasks.id AND status=2) AS nb_completed_subtasks',
|
'(SELECT count(*) FROM '.Subtask::TABLE.' WHERE '.Subtask::TABLE.'.task_id=tasks.id AND status=2) AS nb_completed_subtasks',
|
||||||
'(SELECT count(*) FROM '.TaskLink::TABLE.' WHERE '.TaskLink::TABLE.'.task_id = tasks.id) AS nb_links',
|
'(SELECT count(*) FROM '.TaskLink::TABLE.' WHERE '.TaskLink::TABLE.'.task_id = tasks.id) AS nb_links',
|
||||||
'(SELECT 1 FROM '.TaskLink::TABLE.' WHERE '.TaskLink::TABLE.'.task_id = tasks.id AND '.TaskLink::TABLE.'.link_id = 9) AS is_milestone',
|
'(SELECT DISTINCT 1 FROM '.TaskLink::TABLE.' WHERE '.TaskLink::TABLE.'.task_id = tasks.id AND '.TaskLink::TABLE.'.link_id = 9) AS is_milestone',
|
||||||
'tasks.id',
|
'tasks.id',
|
||||||
'tasks.reference',
|
'tasks.reference',
|
||||||
'tasks.title',
|
'tasks.title',
|
||||||
|
|||||||
@@ -3,12 +3,33 @@
|
|||||||
require_once __DIR__.'/../Base.php';
|
require_once __DIR__.'/../Base.php';
|
||||||
|
|
||||||
use Model\Link;
|
use Model\Link;
|
||||||
|
use Model\TaskFinder;
|
||||||
use Model\TaskLink;
|
use Model\TaskLink;
|
||||||
use Model\TaskCreation;
|
use Model\TaskCreation;
|
||||||
use Model\Project;
|
use Model\Project;
|
||||||
|
|
||||||
class TaskLinkTest extends Base
|
class TaskLinkTest extends Base
|
||||||
{
|
{
|
||||||
|
// Check postgres issue: "Cardinality violation: 7 ERROR: more than one row returned by a subquery used as an expression"
|
||||||
|
public function testGetTaskWithMultipleMilestoneLink()
|
||||||
|
{
|
||||||
|
$tf = new TaskFinder($this->container);
|
||||||
|
$tl = new TaskLink($this->container);
|
||||||
|
$p = new Project($this->container);
|
||||||
|
$tc = new TaskCreation($this->container);
|
||||||
|
|
||||||
|
$this->assertEquals(1, $p->create(array('name' => 'test')));
|
||||||
|
$this->assertEquals(1, $tc->create(array('project_id' => 1, 'title' => 'A')));
|
||||||
|
$this->assertEquals(2, $tc->create(array('project_id' => 1, 'title' => 'B')));
|
||||||
|
$this->assertEquals(3, $tc->create(array('project_id' => 1, 'title' => 'C')));
|
||||||
|
|
||||||
|
$this->assertNotFalse($tl->create(1, 2, 9));
|
||||||
|
$this->assertNotFalse($tl->create(1, 3, 9));
|
||||||
|
|
||||||
|
$task = $tf->getExtendedQuery()->findOne();
|
||||||
|
$this->assertNotEmpty($task);
|
||||||
|
}
|
||||||
|
|
||||||
public function testCreateTaskLinkWithNoOpposite()
|
public function testCreateTaskLinkWithNoOpposite()
|
||||||
{
|
{
|
||||||
$tl = new TaskLink($this->container);
|
$tl = new TaskLink($this->container);
|
||||||
|
|||||||
Reference in New Issue
Block a user