Skip to content

Commit

Permalink
only commit range literal [*] [*r]
Browse files Browse the repository at this point in the history
  • Loading branch information
AEsir777 committed Sep 12, 2023
1 parent c578381 commit ede0886
Show file tree
Hide file tree
Showing 13 changed files with 1,068 additions and 993 deletions.
4 changes: 4 additions & 0 deletions dataset/tck-likes/copy.cypher
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
COPY A FROM "dataset/tck-likes/vA.csv" (HEADER=true);
COPY B FROM "dataset/tck-likes/vB.csv" (HEADER=true);
COPY C FROM "dataset/tck-likes/vC.csv" (HEADER=true);
COPY D FROM "dataset/tck-likes/vD.csv" (HEADER=true);
5 changes: 5 additions & 0 deletions dataset/tck-likes/schema.cypher
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
CREATE NODE TABLE A(ID SERIAL, name STRING, PRIMARY KEY(ID));
CREATE NODE TABLE B(ID SERIAL, name STRING, PRIMARY KEY(ID));
CREATE NODE TABLE C(ID SERIAL, name STRING, PRIMARY KEY(ID));
CREATE NODE TABLE D(ID SERIAL, name STRING, PRIMARY KEY(ID));
CREATE REL TABLE GROUP LIKES(FROM A TO B, FROM B TO C, FROM C TO D);
2 changes: 2 additions & 0 deletions dataset/tck-likes/vA.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
name
'n0'
3 changes: 3 additions & 0 deletions dataset/tck-likes/vB.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
name
'n00'
'n01'
5 changes: 5 additions & 0 deletions dataset/tck-likes/vC.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
name
'n000'
'n001'
'n010'
'n011'
9 changes: 9 additions & 0 deletions dataset/tck-likes/vD.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
name
'n0000'
'n0001'
'n0010'
'n0011'
'n0100'
'n0101'
'n0110'
'n0111'
2 changes: 1 addition & 1 deletion src/antlr4/Cypher.g4
Original file line number Diff line number Diff line change
Expand Up @@ -400,7 +400,7 @@ oC_NodeLabel
: ':' SP? oC_LabelName ;

oC_RangeLiteral
: '*' SP? ( SHORTEST | ALL SP SHORTEST )? SP? oC_IntegerLiteral SP? '..' SP? oC_IntegerLiteral (SP? '(' SP? oC_Variable SP? ',' SP? '_' SP? '|' SP? oC_Where SP? ')')? ;
: '*' SP? ( SHORTEST | ALL SP SHORTEST )? SP? ((oC_IntegerLiteral SP? '..' SP?)? oC_IntegerLiteral)? (SP? '(' SP? oC_Variable SP? ',' SP? '_' SP? '|' SP? oC_Where SP? ')')? ;

SHORTEST : ( 'S' | 's' ) ( 'H' | 'h' ) ( 'O' | 'o' ) ( 'R' | 'r' ) ( 'T' | 't' ) ( 'E' | 'e' ) ( 'S' | 's' ) ( 'T' | 't' ) ;

Expand Down
13 changes: 11 additions & 2 deletions src/parser/transform/transform_graph_pattern.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -110,8 +110,17 @@ std::unique_ptr<RelPattern> Transformer::transformRelationshipPattern(
relType = QueryRelType::VARIABLE_LENGTH;
}
auto range = relDetail->oC_RangeLiteral();
auto lowerBound = range->oC_IntegerLiteral()[0]->getText();
auto upperBound = range->oC_IntegerLiteral()[1]->getText();
auto lowerBound = std::to_string(1);
auto upperBound = std::to_string(UINT32_MAX);

if (range->oC_IntegerLiteral().size() == 1) {
lowerBound = range->oC_IntegerLiteral()[0]->getText();
lowerBound = range->oC_IntegerLiteral()[0]->getText();
} else if (range->oC_IntegerLiteral().size() == 2) {
lowerBound = range->oC_IntegerLiteral()[0]->getText();
upperBound = range->oC_IntegerLiteral()[1]->getText();
}

auto recursiveRelName = std::string();
std::unique_ptr<ParsedExpression> whereExpression = nullptr;
if (range->oC_Where()) {
Expand Down
8 changes: 3 additions & 5 deletions test/test_files/tck/match/match3.test
Original file line number Diff line number Diff line change
Expand Up @@ -304,13 +304,11 @@ a
---- ok
-STATEMENT CREATE NODE TABLE C(ID SERIAL,PRIMARY KEY(ID));
---- ok
-STATEMENT CREATE REL TABLE T1(FROM A TO B);
---- ok
-STATEMENT CREATE REL TABLE T2(FROM A TO C);
-STATEMENT CREATE REL TABLE GROUP T(FROM A TO B, FROM A TO C);
---- ok
-STATEMENT CREATE (a:A), (b:B), (c:C)
CREATE (a)-[:T1]->(b),
(a)-[:T2]->(c);
CREATE (a)-[:T]->(b),
(a)-[:T]->(c);
---- ok
-STATEMENT MATCH (a)-->(b)
MATCH (c)-->(d)
Expand Down
78 changes: 40 additions & 38 deletions test/test_files/tck/match/match4.test
Original file line number Diff line number Diff line change
Expand Up @@ -66,20 +66,20 @@
-STATEMENT CREATE REL TABLE T(FROM A TO A);
---- ok
# indexing on varlist causes segmentaion fault
#-STATEMENT CREATE (a {var: 'start'}), (b {var: 'end'})
# WITH *
# UNWIND ['0', '1', '2'] AS i
# CREATE (n {var: i})
# WITH a, b, collect(n) AS nodeList
# UNWIND [0, 1] AS i
# WITH nodeList[i] AS n1, nodeList[i+1] AS n2
# CREATE (n1)-[:T]->(n2);
#---- ok
#-STATEMENT WITH collect(n) AS nodeList
# UNWIND [0, 1] AS i
# WITH nodeList[i] AS n1, nodeList[i+1] AS n2
# CREATE (n1)-[:T]->(n2);
#---- ok
-STATEMENT CREATE (a {var: 'start'}), (b {var: 'end'})
WITH *
UNWIND ['0', '1', '2'] AS i
CREATE (n {var: i})
WITH a, b, collect(n) AS nodeList
UNWIND [0, 1] AS i
WITH nodeList[i] AS n1, nodeList[i+1] AS n2
CREATE (n1)-[:T]->(n2);
---- ok
-STATEMENT WITH collect(n) AS nodeList
UNWIND [0, 1] AS i
WITH nodeList[i] AS n1, nodeList[i+1] AS n2
CREATE (n1)-[:T]->(n2);
---- ok
-STATEMENT CREATE (a {var: 'start'}), (b {var: 'end'})
WITH *
UNWIND range(1, 20) AS i
Expand All @@ -96,7 +96,6 @@

# Matching variable length pattern with property predicate
-CASE Scenario5
-SKIP
-STATEMENT CREATE NODE TABLE Artist(ID SERIAL, PRIMARY KEY(ID));
---- ok
-STATEMENT CREATE REL TABLE WORKED_WITH(FROM Artist TO Artist, year INT64);
Expand All @@ -116,7 +115,6 @@

# Matching variable length patterns from a bound node
-CASE Scenario6
-SKIP
-STATEMENT CREATE NODE TABLE A(ID SERIAL, PRIMARY KEY(ID));
---- ok
-STATEMENT CREATE REL TABLE X(FROM A To A);
Expand Down Expand Up @@ -163,13 +161,11 @@
---- ok
-STATEMENT CREATE NODE TABLE C(ID SERIAL, PRIMARY KEY(ID));
---- ok
-STATEMENT CREATE NODE TABLE A(ID SERIAL, PRIMARY KEY(ID));
---- ok
-STATEMENT CREATE REL TABLE Y2(FROM B TO C);
-STATEMENT CREATE REL TABLE GROUP Y(FROM A TO B, FROM B TO C);
---- ok
-STATEMENT CREATE (a:A), (b:B), (c:C)
CREATE (a)-[:Y1]->(b),
(b)-[:Y2]->(c)
CREATE (a)-[:Y]->(b),
(b)-[:Y]->(c)
---- ok
-STATEMENT MATCH ()-[r1]->()-[r2]->()
WITH [r1, r2] AS rs
Expand All @@ -184,23 +180,29 @@
-CASE Scenario9&10
-STATEMENT CREATE NODE TABLE A(ID SERIAL, name STRING, PRIMARY KEY(ID));
---- ok
-STATEMENT CREATE REL TABLE LIKES(FROM A TO A);
---- ok
-STATEMENT CREATE (n0 {name: 'n0'}),
(n00 {name: 'n00'}),
(n01 {name: 'n01'}),
(n000 {name: 'n000'}),
(n001 {name: 'n001'}),
(n010 {name: 'n010'}),
(n011 {name: 'n011'}),
(n0000 {name: 'n0000'}),
(n0001 {name: 'n0001'}),
(n0010 {name: 'n0010'}),
(n0011 {name: 'n0011'}),
(n0100 {name: 'n0100'}),
(n0101 {name: 'n0101'}),
(n0110 {name: 'n0110'}),
(n0111 {name: 'n0111'})
-STATEMENT CREATE NODE TABLE B(ID SERIAL, name STRING, PRIMARY KEY(ID));
---- ok
-STATEMENT CREATE NODE TABLE C(ID SERIAL, name STRING, PRIMARY KEY(ID));
---- ok
-STATEMENT CREATE NODE TABLE D(ID SERIAL, name STRING, PRIMARY KEY(ID));
---- ok
-STATEMENT CREATE REL TABLE GROUP LIKES(FROM A TO B, FROM B TO C, FROM C TO D);
---- ok
-STATEMENT CREATE (n0:A {name: 'n0'}),
(n00:B {name: 'n00'}),
(n01:B {name: 'n01'}),
(n000:C {name: 'n000'}),
(n001:C {name: 'n001'}),
(n010:C {name: 'n010'}),
(n011:C {name: 'n011'}),
(n0000:D {name: 'n0000'}),
(n0001:D {name: 'n0001'}),
(n0010:D {name: 'n0010'}),
(n0011:D {name: 'n0011'}),
(n0100:D {name: 'n0100'}),
(n0101:D {name: 'n0101'}),
(n0110:D {name: 'n0110'}),
(n0111:D {name: 'n0111'})
CREATE (n0)-[:LIKES]->(n00),
(n0)-[:LIKES]->(n01),
(n00)-[:LIKES]->(n000),
Expand Down
9 changes: 9 additions & 0 deletions test/test_files/tck/match/match5.test
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
-GROUP TCK
-DATASET CSV tck-likes

--

# Get neighbours
-CASE Scenario1
-STATEMENT CREATE (b:A);
---- ok
Loading

0 comments on commit ede0886

Please sign in to comment.