Skip to content

Commit 1087d70

Browse files
Richard Snijdersdbu
Richard Snijders
authored andcommitted
Added queries testing nested joins
1 parent 4816315 commit 1087d70

File tree

3 files changed

+48
-0
lines changed

3 files changed

+48
-0
lines changed

tests/Query/QOM/QomTestQueries.php

+17
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,23 @@ public static function getQueries(QueryObjectModelFactoryInterface $factory)
7878
array(),
7979
array());
8080

81+
// SELECT * FROM [nt:folder] AS folder INNER JOIN [nt:file] AS file ON folder.[prop2]=file.[prop1] INNER JOIN [nt:folder] AS folder2 ON file.[prop1]=folder.[prop2]
82+
$queries['6.7.8.EquiJoin.NestedJoin'] =
83+
$factory->createQuery(
84+
$factory->join(
85+
$factory->join(
86+
$factory->selector('folder', 'nt:folder'),
87+
$factory->selector('file', 'nt:file'),
88+
Constants::JCR_JOIN_TYPE_INNER,
89+
$factory->equiJoinCondition('folder', 'prop2', 'file', 'prop1')
90+
),
91+
$factory->selector('folder2', 'nt:folder'),
92+
Constants::JCR_JOIN_TYPE_INNER,
93+
$factory->equiJoinCondition('file', 'prop1', 'folder', 'prop2')),
94+
null,
95+
array(),
96+
array());
97+
8198
/*
8299
* 6.7.9. SameNodeJoinCondition
83100
*/

tests/Query/QOM/Sql2TestQueries.php

+4
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,10 @@ public static function getQueries()
4444
'SELECT * FROM [nt:file] AS file RIGHT OUTER JOIN [nt:folder] AS folder ON file.prop1=folder.prop2',
4545
'SELECT * FROM [nt:file] AS file RIGHT OUTER JOIN [nt:folder] AS folder ON file.[prop1]=folder.[prop2]',
4646
);
47+
$queries['6.7.8.EquiJoin.NestedJoin'] = array(
48+
'SELECT * FROM [nt:folder] AS folder INNER JOIN [nt:file] AS file ON folder.[prop2]=file.[prop1] INNER JOIN [nt:folder] AS folder2 ON file.[prop1]=folder.[prop2]',
49+
'SELECT * FROM [nt:folder] AS folder INNER JOIN [nt:file] AS file ON folder.[prop2]=file.[prop1] INNER JOIN [nt:folder] AS folder2 ON file.[prop1]=folder.[prop2]',
50+
);
4751

4852
/*
4953
* 6.7.9. SameNodeJoinCondition

tests/Query/QuerySql2OperationsTest.php

+27
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,33 @@ public function testQueryJoinWithAlias()
190190
$this->assertEquals(array(999), $vals);
191191
}
192192

193+
public function testQueryJoinNested()
194+
{
195+
/** @var $query QueryInterface */
196+
$query = $this->sharedFixture['qm']->createQuery('
197+
SELECT content.longNumber
198+
FROM [nt:folder] AS folder
199+
INNER JOIN [nt:file] AS file
200+
ON ISDESCENDANTNODE(file, folder)
201+
INNER JOIN [nt:unstructured] AS content
202+
ON ISDESCENDANTNODE(content, file)
203+
WHERE content.longNumber = 999
204+
AND ISDESCENDANTNODE(folder, [/])
205+
',
206+
QueryInterface::JCR_SQL2
207+
);
208+
209+
$this->assertInstanceOf('\PHPCR\Query\QueryInterface', $query);
210+
$result = $query->execute();
211+
$this->assertInstanceOf('\PHPCR\Query\QueryResultInterface', $result);
212+
$vals = array();
213+
214+
foreach ($result->getRows() as $row) {
215+
$vals[] = $row->getValue('content.longNumber');
216+
}
217+
$this->assertEquals(array(999), $vals);
218+
}
219+
193220
public function testQueryLeftJoin()
194221
{
195222
/** @var $query QueryInterface */

0 commit comments

Comments
 (0)