Skip to content

Commit c3e070c

Browse files
committed
Refactor Regression Tests for CASE statement (apache#1268)
Added some new cases to CASE statement regression tests to capture cases that were not tested for before. Refactored existing test cases to improve readability
1 parent 80e96bc commit c3e070c

2 files changed

Lines changed: 94 additions & 21 deletions

File tree

regress/expected/expr.out

Lines changed: 57 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -6236,32 +6236,22 @@ NOTICE: graph "case_statement" has been created
62366236

62376237
(1 row)
62386238

6239-
SELECT * FROM cypher('case_statement', $$CREATE ({i: 1, j: null})$$) AS (result agtype);
6239+
SELECT * FROM cypher('case_statement', $$CREATE ({id: 1, i: 1, j: null})-[:connected_to {id: 1, k:0}]->({id: 2, i: 'a', j: 'b'})$$) AS (result agtype);
62406240
result
62416241
--------
62426242
(0 rows)
62436243

6244-
SELECT * FROM cypher('case_statement', $$CREATE ({i: 'a', j: 'b'})$$) AS (result agtype);
6244+
SELECT * FROM cypher('case_statement', $$CREATE ({id: 3, i: 0, j: 1})-[:connected_to {id: 2, k:1}]->({id: 4, i: true, j: false})$$) AS (result agtype);
62456245
result
62466246
--------
62476247
(0 rows)
62486248

6249-
SELECT * FROM cypher('case_statement', $$CREATE ({i: 0, j: 1})$$) AS (result agtype);
6249+
SELECT * FROM cypher('case_statement', $$CREATE ({id: 5, i: [], j: [0,1,2]})$$) AS (result agtype);
62506250
result
62516251
--------
62526252
(0 rows)
62536253

6254-
SELECT * FROM cypher('case_statement', $$CREATE ({i: true, j: false})$$) AS (result agtype);
6255-
result
6256-
--------
6257-
(0 rows)
6258-
6259-
SELECT * FROM cypher('case_statement', $$CREATE ({i: [], j: [0,1,2]})$$) AS (result agtype);
6260-
result
6261-
--------
6262-
(0 rows)
6263-
6264-
SELECT * FROM cypher('case_statement', $$CREATE ({i: {}, j: {i:1}})$$) AS (result agtype);
6254+
SELECT * FROM cypher('case_statement', $$CREATE ({id: 6, i: {}, j: {i:1}})$$) AS (result agtype);
62656255
result
62666256
--------
62676257
(0 rows)
@@ -6346,6 +6336,57 @@ $$ ) AS (j agtype, case_statement agtype);
63466336
{"i": 1} | {"i": 1}
63476337
(6 rows)
63486338

6339+
--CASE agtype_vertex WHEN value THEN result END
6340+
SELECT * FROM cypher('case_statement', $$
6341+
MATCH (n)
6342+
RETURN CASE n
6343+
WHEN null THEN 'should not return me'
6344+
WHEN 'agtype_string' THEN 'wrong'
6345+
WHEN n THEN n
6346+
ELSE 'no n'
6347+
END
6348+
$$ ) AS (case_statement agtype);
6349+
case_statement
6350+
------------------------------------------------------------------------------------------------
6351+
{"id": 281474976710657, "label": "", "properties": {"i": 1, "id": 1}}::vertex
6352+
{"id": 281474976710658, "label": "", "properties": {"i": "a", "j": "b", "id": 2}}::vertex
6353+
{"id": 281474976710659, "label": "", "properties": {"i": 0, "j": 1, "id": 3}}::vertex
6354+
{"id": 281474976710660, "label": "", "properties": {"i": true, "j": false, "id": 4}}::vertex
6355+
{"id": 281474976710661, "label": "", "properties": {"i": [], "j": [0, 1, 2], "id": 5}}::vertex
6356+
{"id": 281474976710662, "label": "", "properties": {"i": {}, "j": {"i": 1}, "id": 6}}::vertex
6357+
(6 rows)
6358+
6359+
--CASE with match and edges
6360+
SELECT * FROM cypher('case_statement', $$
6361+
MATCH (n)-[e]->(m)
6362+
RETURN CASE
6363+
WHEN null THEN 'should not return me'
6364+
WHEN n.i = 1 THEN n
6365+
WHEN n.i = 0 THEN m
6366+
ELSE 'none'
6367+
END
6368+
$$ ) AS (case_statement agtype);
6369+
case_statement
6370+
----------------------------------------------------------------------------------------------
6371+
{"id": 281474976710657, "label": "", "properties": {"i": 1, "id": 1}}::vertex
6372+
{"id": 281474976710660, "label": "", "properties": {"i": true, "j": false, "id": 4}}::vertex
6373+
(2 rows)
6374+
6375+
SELECT * FROM cypher('case_statement', $$
6376+
MATCH (n)-[e]->(m)
6377+
RETURN CASE
6378+
WHEN null THEN 'should not return me'
6379+
WHEN e.k = 1 THEN e
6380+
WHEN e.k = 0 THEN e
6381+
ELSE 'none'
6382+
END
6383+
$$ ) AS (case_statement agtype);
6384+
case_statement
6385+
-------------------------------------------------------------------------------------------------------------------------------------------------
6386+
{"id": 844424930131969, "label": "connected_to", "end_id": 281474976710658, "start_id": 281474976710657, "properties": {"k": 0, "id": 1}}::edge
6387+
{"id": 844424930131970, "label": "connected_to", "end_id": 281474976710660, "start_id": 281474976710659, "properties": {"k": 1, "id": 2}}::edge
6388+
(2 rows)
6389+
63496390
-- RETURN * and (u)--(v) optional forms
63506391
SELECT create_graph('opt_forms');
63516392
NOTICE: graph "opt_forms" has been created
@@ -7204,9 +7245,10 @@ NOTICE: graph "VLE" has been dropped
72047245
(1 row)
72057246

72067247
SELECT * FROM drop_graph('case_statement', true);
7207-
NOTICE: drop cascades to 2 other objects
7248+
NOTICE: drop cascades to 3 other objects
72087249
DETAIL: drop cascades to table case_statement._ag_label_vertex
72097250
drop cascades to table case_statement._ag_label_edge
7251+
drop cascades to table case_statement.connected_to
72107252
NOTICE: graph "case_statement" has been dropped
72117253
drop_graph
72127254
------------

regress/sql/expr.sql

Lines changed: 37 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2593,12 +2593,10 @@ $$) AS (i agtype);
25932593

25942594
--CASE
25952595
SELECT create_graph('case_statement');
2596-
SELECT * FROM cypher('case_statement', $$CREATE ({i: 1, j: null})$$) AS (result agtype);
2597-
SELECT * FROM cypher('case_statement', $$CREATE ({i: 'a', j: 'b'})$$) AS (result agtype);
2598-
SELECT * FROM cypher('case_statement', $$CREATE ({i: 0, j: 1})$$) AS (result agtype);
2599-
SELECT * FROM cypher('case_statement', $$CREATE ({i: true, j: false})$$) AS (result agtype);
2600-
SELECT * FROM cypher('case_statement', $$CREATE ({i: [], j: [0,1,2]})$$) AS (result agtype);
2601-
SELECT * FROM cypher('case_statement', $$CREATE ({i: {}, j: {i:1}})$$) AS (result agtype);
2596+
SELECT * FROM cypher('case_statement', $$CREATE ({id: 1, i: 1, j: null})-[:connected_to {id: 1, k:0}]->({id: 2, i: 'a', j: 'b'})$$) AS (result agtype);
2597+
SELECT * FROM cypher('case_statement', $$CREATE ({id: 3, i: 0, j: 1})-[:connected_to {id: 2, k:1}]->({id: 4, i: true, j: false})$$) AS (result agtype);
2598+
SELECT * FROM cypher('case_statement', $$CREATE ({id: 5, i: [], j: [0,1,2]})$$) AS (result agtype);
2599+
SELECT * FROM cypher('case_statement', $$CREATE ({id: 6, i: {}, j: {i:1}})$$) AS (result agtype);
26022600

26032601
--standalone case & edge cases
26042602
--base case
@@ -2644,6 +2642,39 @@ SELECT * FROM cypher('case_statement', $$
26442642
END
26452643
$$ ) AS (j agtype, case_statement agtype);
26462644

2645+
--CASE agtype_vertex WHEN value THEN result END
2646+
SELECT * FROM cypher('case_statement', $$
2647+
MATCH (n)
2648+
RETURN CASE n
2649+
WHEN null THEN 'should not return me'
2650+
WHEN 'agtype_string' THEN 'wrong'
2651+
WHEN n THEN n
2652+
ELSE 'no n'
2653+
END
2654+
$$ ) AS (case_statement agtype);
2655+
2656+
--CASE with match and edges
2657+
SELECT * FROM cypher('case_statement', $$
2658+
MATCH (n)-[e]->(m)
2659+
RETURN CASE
2660+
WHEN null THEN 'should not return me'
2661+
WHEN n.i = 1 THEN n
2662+
WHEN n.i = 0 THEN m
2663+
ELSE 'none'
2664+
END
2665+
$$ ) AS (case_statement agtype);
2666+
2667+
SELECT * FROM cypher('case_statement', $$
2668+
MATCH (n)-[e]->(m)
2669+
RETURN CASE
2670+
WHEN null THEN 'should not return me'
2671+
WHEN e.k = 1 THEN e
2672+
WHEN e.k = 0 THEN e
2673+
ELSE 'none'
2674+
END
2675+
$$ ) AS (case_statement agtype);
2676+
2677+
26472678
-- RETURN * and (u)--(v) optional forms
26482679
SELECT create_graph('opt_forms');
26492680
SELECT * FROM cypher('opt_forms', $$CREATE ({i:1})-[:KNOWS]->({i:2})<-[:KNOWS]-({i:3})$$)AS (result agtype);

0 commit comments

Comments
 (0)