Skip to content

Commit 0885301

Browse files
committed
Add more complex create view statements
Signed-off-by: William Desportes <[email protected]>
1 parent d1917d2 commit 0885301

4 files changed

Lines changed: 163 additions & 0 deletions

File tree

tests/Builder/CreateStatementTest.php

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -328,6 +328,70 @@ public function testBuilderView()
328328
);
329329
}
330330

331+
public function testBuilderViewComplex()
332+
{
333+
$parser = new Parser(
334+
'CREATE VIEW withclause AS' . "\n"
335+
. "\n"
336+
. 'WITH cte AS (' . "\n"
337+
. 'SELECT p.name, p.shape' . "\n"
338+
. 'FROM gis_all as p' . "\n"
339+
. ')' . "\n"
340+
. "\n"
341+
. 'SELECT cte.*' . "\n"
342+
. 'FROM cte' . "\n"
343+
. 'CROSS JOIN gis_all;'
344+
);
345+
$stmt = $parser->statements[0];
346+
347+
$this->assertEquals(
348+
'CREATE VIEW withclause AS ' . "\n"
349+
. "\n"
350+
. 'WITH cte AS (' . "\n"
351+
. 'SELECT p.name, p.shape' . "\n"
352+
. 'FROM gis_all as p' . "\n"
353+
. ')' . "\n"
354+
. "\n"
355+
. 'SELECT cte.*' . "\n"
356+
. 'FROM cte' . "\n"
357+
. 'CROSS JOIN gis_all ',
358+
$stmt->build()
359+
);
360+
$parser = new Parser(
361+
'CREATE VIEW withclause2 AS' . "\n"
362+
. "\n"
363+
. 'WITH cte AS (' . "\n"
364+
. "\t" . 'SELECT p.name, p.shape' . "\n"
365+
. "\t" . 'FROM gis_all as p' . "\n"
366+
. '), cte2 AS (' . "\n"
367+
. "\t" . 'SELECT p.name as n2, p.shape as sh2' . "\n"
368+
. "\t" . 'FROM gis_all as p' . "\n"
369+
. ')' . "\n"
370+
. "\n"
371+
. 'SELECT cte.*,cte2.*' . "\n"
372+
. 'FROM cte,cte2' . "\n"
373+
. 'CROSS JOIN gis_all;'
374+
);
375+
$stmt = $parser->statements[0];
376+
377+
$this->assertEquals(
378+
'CREATE VIEW withclause2 AS ' . "\n"
379+
. "\n"
380+
. 'WITH cte AS (' . "\n"
381+
. "\t" . 'SELECT p.name, p.shape' . "\n"
382+
. "\t" . 'FROM gis_all as p' . "\n"
383+
. '), cte2 AS (' . "\n"
384+
. "\t" . 'SELECT p.name as n2, p.shape as sh2' . "\n"
385+
. "\t" . 'FROM gis_all as p' . "\n"
386+
. ')' . "\n"
387+
. "\n"
388+
. 'SELECT cte.*,cte2.*' . "\n"
389+
. 'FROM cte,cte2' . "\n"
390+
. 'CROSS JOIN gis_all ',
391+
$stmt->build()
392+
);
393+
}
394+
331395
public function testBuilderTrigger()
332396
{
333397
$stmt = new CreateStatement();

tests/Parser/CreateStatementTest.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ public function createProvider()
5757
array('parser/parseCreateViewWithQuotes'),
5858
array('parser/parseCreateViewWithWrongSyntax'),
5959
array('parser/parseCreateViewWithUnion'),
60+
array('parser/parseCreateViewAsWithAs'),
6061
);
6162
}
6263
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
-- create first view
2+
CREATE VIEW withclause AS
3+
4+
WITH cte AS (
5+
SELECT p.name, p.shape
6+
FROM gis_all as p
7+
)
8+
9+
SELECT cte.*
10+
FROM cte
11+
CROSS JOIN gis_all;
12+
-- create second view
13+
CREATE VIEW withclause2 AS
14+
15+
WITH cte AS (
16+
SELECT p.name, p.shape
17+
FROM gis_all as p
18+
), cte2 AS (
19+
SELECT p.name as n2, p.shape as sh2
20+
FROM gis_all as p
21+
)
22+
23+
SELECT cte.*,cte2.*
24+
FROM cte,cte2
25+
CROSS JOIN gis_all;

0 commit comments

Comments
 (0)