-
Notifications
You must be signed in to change notification settings - Fork 86
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
7b572bf
commit f58e56e
Showing
7 changed files
with
535 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,123 @@ | ||
-GROUP TCKWith1 | ||
-DATASET CSV tck | ||
|
||
-- | ||
|
||
# Forwarding a node variable 1 | ||
-CASE Scenario1 | ||
-SKIP | ||
-STATEMENT CREATE NODE TABLE A(ID SERIAL, PRIMARY KEY(ID)); | ||
---- ok | ||
-STATEMENT CREATE NODE TABLE B(ID SERIAL, PRIMARY KEY(ID)); | ||
---- ok | ||
-STATEMENT CREATE REL TABLE REL(FROM A TO B); | ||
---- ok | ||
-STATEMENT CREATE (:A)-[:REL]->(:B); | ||
---- ok | ||
-STATEMENT MATCH (a:A) | ||
WITH a | ||
MATCH (a)-->(b) | ||
RETURN *; | ||
---- 1 | ||
{_ID: 0:0, _LABEL: A, ID: 0}|{_ID: 1:0, _LABEL: B, ID: 0} | ||
|
||
# Forwarding a node variable 2 | ||
-CASE Scenario2 | ||
-SKIP | ||
-STATEMENT CREATE NODE TABLE A(ID SERIAL, PRIMARY KEY(ID)); | ||
---- ok | ||
-STATEMENT CREATE NODE TABLE B(ID SERIAL, PRIMARY KEY(ID)); | ||
---- ok | ||
-STATEMENT CREATE REL TABLE REL(FROM A TO B); | ||
---- ok | ||
-STATEMENT CREATE NODE TABLE X(ID SERIAL, PRIMARY KEY(ID)); | ||
---- ok | ||
-STATEMENT CREATE (:A)-[:REL]->(:B); | ||
---- ok | ||
-STATEMENT CREATE (:X); | ||
---- ok | ||
-STATEMENT MATCH (a:A) | ||
WITH a | ||
MATCH (x:X), (a)-->(b) | ||
RETURN *; | ||
---- 1 | ||
{_ID: 0:0, _LABEL: A, ID: 0}|{_ID: 3:0, _LABEL: X, ID: 0}|{_ID: 1:0, _LABEL: B, ID: 0} | ||
|
||
# Forwarding a relationship variable | ||
-CASE Scenario3 | ||
-SKIP | ||
-STATEMENT CREATE NODE TABLE A(ID SERIAL, PRIMARY KEY(ID)); | ||
---- ok | ||
-STATEMENT CREATE NODE TABLE X(ID SERIAL, PRIMARY KEY(ID)); | ||
---- ok | ||
-STATEMENT CREATE REL TABLE T1(FROM A TO X); | ||
---- ok | ||
-STATEMENT CREATE REL TABLE T2(FROM A TO X); | ||
---- ok | ||
-STATEMENT CREATE REL TABLE T3(FROM A TO A); | ||
---- ok | ||
-STATEMENT CREATE (:A)-[:T1]->(:X), | ||
(:A)-[:T2]->(:X), | ||
(:A)-[:T3]->(:A); | ||
---- ok | ||
-STATEMENT MATCH ()-[r1]->(:X) | ||
WITH r1 AS r2 | ||
MATCH ()-[r2]->() | ||
RETURN r2 AS rel; | ||
---- 2 | ||
... | ||
... | ||
|
||
# Forwarding a path variable | ||
-CASE Scenario4 | ||
-SKIP | ||
-STATEMENT CREATE NODE TABLE A(ID SERIAL, PRIMARY KEY(ID)); | ||
---- ok | ||
-STATEMENT CREATE (:A); | ||
---- ok | ||
-STATEMENT MATCH p = (a) | ||
WITH p | ||
RETURN p; | ||
---- 1 | ||
... | ||
|
||
# Forwarding null | ||
-CASE Scenario5 | ||
-STATEMENT CREATE NODE TABLE Start(ID SERIAL, PRIMARY KEY(ID)); | ||
---- ok | ||
-STATEMENT CREATE REL TABLE T(FROM Start TO Start); | ||
---- ok | ||
-STATEMENT OPTIONAL MATCH (a:Start) | ||
WITH a | ||
MATCH (a)-->(b) | ||
RETURN *; | ||
---- 0 | ||
|
||
# Forwarding a node variable possibly null | ||
-CASE Scenario6 | ||
-SKIP | ||
-STATEMENT CREATE NODE TABLE Single(ID SERIAL, PRIMARY KEY(ID)); | ||
---- ok | ||
-STATEMENT CREATE NODE TABLE A(ID SERIAL, num INT64, PRIMARY KEY(ID)); | ||
---- ok | ||
-STATEMENT CREATE NODE TABLE B(ID SERIAL, num INT64, PRIMARY KEY(ID)); | ||
---- ok | ||
-STATEMENT CREATE NODE TABLE C(ID SERIAL, PRIMARY KEY(ID)); | ||
---- ok | ||
-STATEMENT CREATE REL TABLE GROUP REL(FROM Single TO A, FROM Single TO B, FROM A TO C); | ||
---- ok | ||
-STATEMENT CREATE REL TABLE LOOP(FROM B TO B); | ||
---- ok | ||
-STATEMENT CREATE (s:Single), (a:A {num: 42}), | ||
(b:B {num: 46}), (c:C) | ||
CREATE (s)-[:REL_Single_A]->(a), | ||
(s)-[:REL_Single_B]->(b), | ||
(a)-[:REL_A_C]->(c), | ||
(b)-[:LOOP]->(b); | ||
---- ok | ||
-STATEMENT OPTIONAL MATCH (a:A) | ||
WITH a AS a | ||
MATCH (b:B) | ||
RETURN a, b; | ||
---- 1 | ||
{_ID: 1:0, _LABEL: A, ID: 0, num: 42}|{_ID: 2:0, _LABEL: B, ID: 0, num: 46} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
-GROUP TCKWith2 | ||
-DATASET CSV tck | ||
|
||
-- | ||
|
||
# Forwarding a property to express a join | ||
-CASE Scenario1 | ||
-SKIP | ||
-STATEMENT CREATE NODE TABLE End(ID SERIAL, num INT64, id INT64, PRIMARY KEY(ID)); | ||
---- ok | ||
-STATEMENT CREATE NODE TABLE Begin(ID SERIAL, num INT64, PRIMARY KEY(ID)); | ||
---- ok | ||
-STATEMENT CREATE (a:End {num: 42, id: 0}), | ||
(:End {num: 3}), | ||
(:Begin {num: a.id}); | ||
---- ok | ||
-STATEMENT MATCH (a:Begin) | ||
WITH a.num AS property | ||
MATCH (b) | ||
WHERE b.id = property | ||
RETURN b; | ||
---- 1 | ||
{_ID: 0:0, _LABEL: End, ID: 0, num: 42, id: 0} | ||
|
||
# Forwarding a node variable 2 | ||
-CASE Scenario2 | ||
-STATEMENT WITH {name: {name2: 'baz'}} AS nestedMap | ||
RETURN nestedMap.name.name2; | ||
---- 1 | ||
baz |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
-GROUP TCKWith3 | ||
-DATASET CSV tck | ||
|
||
-- | ||
|
||
# Forwarding multiple node and relationship variables | ||
-CASE Scenario1 | ||
-SKIP | ||
-STATEMENT CREATE NODE TABLE A(ID SERIAL, PRIMARY KEY(ID)); | ||
---- ok | ||
-STATEMENT CREATE NODE TABLE X(ID SERIAL, PRIMARY KEY(ID)); | ||
---- ok | ||
-STATEMENT CREATE REL TABLE T1(FROM A TO X, id INT64); | ||
---- ok | ||
-STATEMENT CREATE REL TABLE GROUP T2(FROM A TO X, FROM A TO A, id INT64); | ||
---- ok | ||
-STATEMENT CREATE (:A)-[:T1 {id: 0}]->(:X), | ||
(:A)-[:T2_A_X {id: 1}]->(:X), | ||
(:A)-[:T2_A_A {id: 2}]->(:A); | ||
---- ok | ||
-STATEMENT MATCH (a)-[r]->(b:X) | ||
WITH a, r, b | ||
MATCH (a)-[r]->(b) | ||
RETURN r AS rel | ||
ORDER BY rel.id; | ||
-CHECK_ORDER | ||
---- 2 | ||
... | ||
... |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,115 @@ | ||
-GROUP TCKWith4 | ||
-DATASET CSV tck | ||
|
||
-- | ||
|
||
# Aliasing relationship variable | ||
-CASE Scenario1 | ||
-SKIP | ||
-STATEMENT CREATE NODE TABLE A(ID SERIAL, PRIMARY KEY(ID)); | ||
---- ok | ||
-STATEMENT CREATE REL TABLE T1(FROM A TO A); | ||
---- ok | ||
-STATEMENT CREATE REL TABLE T2(FROM A TO A); | ||
---- ok | ||
-STATEMENT CREATE (:A)-[:T1]->(:A), | ||
(:A)-[:T2]->(:A); | ||
---- ok | ||
-STATEMENT MATCH ()-[r1]->() | ||
WITH r1 AS r2 | ||
RETURN r2 AS rel; | ||
---- 2 | ||
(0:0)-{_LABEL: T1, _ID: 1:0}->(0:1) | ||
(0:2)-{_LABEL: T2, _ID: 2:0}->(0:3) | ||
|
||
# Aliasing expression to new variable name | ||
-CASE Scenario2 | ||
-STATEMENT CREATE NODE TABLE Beginn(ID SERIAL, num INT64, PRIMARY KEY(ID)); | ||
---- ok | ||
-STATEMENT CREATE NODE TABLE Endd(ID SERIAL, num INT64, PRIMARY KEY(ID)); | ||
---- ok | ||
-STATEMENT CREATE (:Beginn {num: 42}), | ||
(:Endd {num: 42}), | ||
(:Endd {num: 3}); | ||
---- ok | ||
-STATEMENT MATCH (a:Beginn) | ||
WITH a.num AS property | ||
MATCH (b:Endd) | ||
WHERE property = b.num | ||
RETURN b; | ||
---- 1 | ||
{_ID: 1:0, _LABEL: Endd, ID: 0, num: 42} | ||
|
||
# Aliasing expression to existing variable name | ||
-CASE Scenario3 | ||
-STATEMENT CREATE NODE TABLE A(ID SERIAL, num INT64, name STRING, PRIMARY KEY(ID)); | ||
---- ok | ||
-STATEMENT CREATE (:A {num: 1, name: 'King Kong'}), | ||
(:A {num: 2, name: 'Ann Darrow'}); | ||
---- ok | ||
-STATEMENT MATCH (n) | ||
WITH n.name AS n | ||
RETURN n; | ||
---- 2 | ||
Ann Darrow | ||
King Kong | ||
|
||
# Fail when forwarding multiple aliases with the same name | ||
-CASE Scenario4 | ||
-STATEMENT CREATE NODE TABLE A(ID SERIAL, PRIMARY KEY(ID)); | ||
---- ok | ||
-STATEMENT WITH 1 AS a, 2 AS a | ||
RETURN a; | ||
---- error | ||
Binder exception: Multiple result column with the same name a are not supported. | ||
|
||
# Fail when not aliasing expressions in WITH | ||
-CASE Scenario5 | ||
-STATEMENT CREATE NODE TABLE A(ID SERIAL, PRIMARY KEY(ID)); | ||
---- ok | ||
-STATEMENT MATCH (a) | ||
WITH a, count(*) | ||
RETURN a; | ||
---- error | ||
Binder exception: Expression in WITH must be aliased (use AS). | ||
|
||
# Reusing variable names in WITH | ||
-CASE Scenario6 | ||
-SKIP | ||
-STATEMENT CREATE NODE TABLE Person(ID SERIAL, PRIMARY KEY(ID)); | ||
---- ok | ||
-STATEMENT CREATE NODE TABLE Message(id INT64, PRIMARY KEY(id)); | ||
---- ok | ||
-STATEMENT CREATE REL TABLE LIKE(FROM Person TO Message, creationDate INT64); | ||
---- ok | ||
-STATEMENT CREATE REL TABLE POSTED_BY(FROM Message TO Person); | ||
---- ok | ||
-STATEMENT CREATE (a:Person), (b:Person), (m:Message {id: 10}) | ||
CREATE (a)-[:LIKE {creationDate: 20160614}]->(m)-[:POSTED_BY]->(b); | ||
---- ok | ||
-STATEMENT MATCH (person:Person)<--(message)<-[like]-(:Person) | ||
WITH like.creationDate AS likeTime, person AS person | ||
ORDER BY likeTime, message.id | ||
WITH head(collect({likeTime: likeTime})) AS latestLike, person AS person | ||
WITH latestLike.likeTime AS likeTime | ||
ORDER BY likeTime | ||
RETURN likeTime; | ||
-CHECK_ORDER | ||
---- 1 | ||
20160614 | ||
|
||
# Multiple aliasing and backreferencing | ||
-CASE Scenario7 | ||
-STATEMENT CREATE NODE TABLE A(id INT64, PRIMARY KEY(id)); | ||
---- ok | ||
-STATEMENT CREATE (m:A {id: 0}) | ||
WITH {first: m.id} AS m | ||
WITH {second: m.first} AS m | ||
RETURN m.second; | ||
---- 1 | ||
0 | ||
# Test side effects | ||
-STATEMENT MATCH (n) | ||
RETURN n; | ||
---- 1 | ||
{_ID: 0:0, _LABEL: A, id: 0} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
-GROUP TCKWith5 | ||
-DATASET CSV tck | ||
|
||
-- | ||
|
||
# DISTINCT on an expression | ||
-CASE Scenario1 | ||
-STATEMENT CREATE NODE TABLE A(ID SERIAL, name STRING, PRIMARY KEY(ID)); | ||
---- ok | ||
-STATEMENT CREATE (:A {name: 'A'}), | ||
(:A {name: 'A'}), | ||
(:A {name: 'B'}); | ||
---- ok | ||
-STATEMENT MATCH (a) | ||
WITH DISTINCT a.name AS name | ||
RETURN name; | ||
---- 2 | ||
A | ||
B | ||
|
||
# Handling DISTINCT with lists in maps | ||
-CASE Scenario2 | ||
-SKIP | ||
-STATEMENT CREATE NODE TABLE A(ID SERIAL, list STRING[], PRIMARY KEY(ID)); | ||
---- ok | ||
-STATEMENT CREATE (:A {list: ['A', 'B']}), | ||
(:A {list: ['A', 'B']}); | ||
---- ok | ||
-STATEMENT MATCH (n) | ||
WITH DISTINCT {name: n.list} AS map | ||
RETURN count(*); | ||
---- 1 | ||
1 |
Oops, something went wrong.