Skip to content

Commit

Permalink
Fix create rel table group parser exception (kuzudb#3549)
Browse files Browse the repository at this point in the history
  • Loading branch information
acquamarin authored May 28, 2024
1 parent b029412 commit 7ef1b4b
Show file tree
Hide file tree
Showing 5 changed files with 27 additions and 16 deletions.
2 changes: 1 addition & 1 deletion scripts/antlr4/Cypher.g4.copy
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,7 @@ kU_CreateRelTable
: CREATE SP REL SP TABLE SP oC_SchemaName SP? '(' SP? kU_RelTableConnection SP? ( ',' SP? kU_PropertyDefinitionsDDL SP? )? ( ',' SP? oC_SymbolicName SP? )? ')' ;

kU_CreateRelTableGroup
: CREATE SP REL SP TABLE SP GROUP SP oC_SchemaName SP? '(' SP? kU_RelTableConnection SP ? (',' SP? kU_RelTableConnection)+ SP? ( ',' SP? kU_PropertyDefinitionsDDL SP? )? ( ',' SP? oC_SymbolicName SP? )? ')' ;
: CREATE SP REL SP TABLE SP GROUP SP oC_SchemaName SP? '(' SP? kU_RelTableConnection ( SP? ',' SP? kU_RelTableConnection )+ SP? ( ',' SP? kU_PropertyDefinitionsDDL SP? )? ( ',' SP? oC_SymbolicName SP? )? ')' ;

GROUP : ( 'G' | 'g' ) ( 'R' | 'r' ) ( 'O' | 'o' ) ( 'U' | 'u' ) ( 'P' | 'p' ) ;

Expand Down
2 changes: 1 addition & 1 deletion src/antlr4/Cypher.g4
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,7 @@ kU_CreateRelTable
: CREATE SP REL SP TABLE SP oC_SchemaName SP? '(' SP? kU_RelTableConnection SP? ( ',' SP? kU_PropertyDefinitionsDDL SP? )? ( ',' SP? oC_SymbolicName SP? )? ')' ;

kU_CreateRelTableGroup
: CREATE SP REL SP TABLE SP GROUP SP oC_SchemaName SP? '(' SP? kU_RelTableConnection SP ? (',' SP? kU_RelTableConnection)+ SP? ( ',' SP? kU_PropertyDefinitionsDDL SP? )? ( ',' SP? oC_SymbolicName SP? )? ')' ;
: CREATE SP REL SP TABLE SP GROUP SP oC_SchemaName SP? '(' SP? kU_RelTableConnection ( SP? ',' SP? kU_RelTableConnection )+ SP? ( ',' SP? kU_PropertyDefinitionsDDL SP? )? ( ',' SP? oC_SymbolicName SP? )? ')' ;

GROUP : ( 'G' | 'g' ) ( 'R' | 'r' ) ( 'O' | 'o' ) ( 'U' | 'u' ) ( 'P' | 'p' ) ;

Expand Down
6 changes: 3 additions & 3 deletions src/include/function/udf_function.h
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ struct UDF {
}
validateType<OPERAND_TYPE>(parameterTypes[0]);
function::scalar_func_exec_t execFunc =
[=](const std::vector<std::shared_ptr<common::ValueVector>>& params,
[udfFunc](const std::vector<std::shared_ptr<common::ValueVector>>& params,
common::ValueVector& result, void* /*dataPtr*/ = nullptr) -> void {
KU_ASSERT(params.size() == 1);
UnaryFunctionExecutor::executeUDF<OPERAND_TYPE, RESULT_TYPE, UnaryUDFExecutor>(
Expand All @@ -143,7 +143,7 @@ struct UDF {
validateType<LEFT_TYPE>(parameterTypes[0]);
validateType<RIGHT_TYPE>(parameterTypes[1]);
function::scalar_func_exec_t execFunc =
[=](const std::vector<std::shared_ptr<common::ValueVector>>& params,
[udfFunc](const std::vector<std::shared_ptr<common::ValueVector>>& params,
common::ValueVector& result, void* /*dataPtr*/ = nullptr) -> void {
KU_ASSERT(params.size() == 2);
BinaryFunctionExecutor::executeUDF<LEFT_TYPE, RIGHT_TYPE, RESULT_TYPE,
Expand Down Expand Up @@ -171,7 +171,7 @@ struct UDF {
validateType<B_TYPE>(parameterTypes[1]);
validateType<C_TYPE>(parameterTypes[2]);
function::scalar_func_exec_t execFunc =
[=](const std::vector<std::shared_ptr<common::ValueVector>>& params,
[udfFunc](const std::vector<std::shared_ptr<common::ValueVector>>& params,
common::ValueVector& result, void* /*dataPtr*/ = nullptr) -> void {
KU_ASSERT(params.size() == 3);
TernaryFunctionExecutor::executeUDF<A_TYPE, B_TYPE, C_TYPE, RESULT_TYPE,
Expand Down
11 changes: 11 additions & 0 deletions test/test_files/issue/issue6.test
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
-DATASET CSV empty

--

-CASE issue3543
-STATEMENT CREATE NODE TABLE V1 (id UUID, PRIMARY KEY (id));
---- ok
-STATEMENT CREATE NODE TABLE V2 (id UUID, PRIMARY KEY (id));
---- ok
-STATEMENT CREATE REL TABLE GROUP has ( FROM V1 TO V1 , FROM V1 TO V2 , FROM V2 TO V2 , ONE_MANY);
---- ok
22 changes: 11 additions & 11 deletions third_party/antlr4_cypher/cypher_parser.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -539,10 +539,10 @@ void cypherParserInitialize() {
0,0,779,780,5,60,0,0,780,781,5,158,0,0,781,782,5,61,0,0,782,783,5,158,
0,0,783,785,3,304,152,0,784,786,5,158,0,0,785,784,1,0,0,0,785,786,1,0,
0,0,786,787,1,0,0,0,787,789,5,2,0,0,788,790,5,158,0,0,789,788,1,0,0,0,
789,790,1,0,0,0,790,791,1,0,0,0,791,793,3,50,25,0,792,794,5,158,0,0,793,
792,1,0,0,0,793,794,1,0,0,0,794,800,1,0,0,0,795,797,5,3,0,0,796,798,5,
789,790,1,0,0,0,790,791,1,0,0,0,791,800,3,50,25,0,792,794,5,158,0,0,793,
792,1,0,0,0,793,794,1,0,0,0,794,795,1,0,0,0,795,797,5,3,0,0,796,798,5,
158,0,0,797,796,1,0,0,0,797,798,1,0,0,0,798,799,1,0,0,0,799,801,3,50,
25,0,800,795,1,0,0,0,801,802,1,0,0,0,802,800,1,0,0,0,802,803,1,0,0,0,
25,0,800,793,1,0,0,0,801,802,1,0,0,0,802,800,1,0,0,0,802,803,1,0,0,0,
803,805,1,0,0,0,804,806,5,158,0,0,805,804,1,0,0,0,805,806,1,0,0,0,806,
815,1,0,0,0,807,809,5,3,0,0,808,810,5,158,0,0,809,808,1,0,0,0,809,810,
1,0,0,0,810,811,1,0,0,0,811,813,3,86,43,0,812,814,5,158,0,0,813,812,1,
Expand Down Expand Up @@ -4016,20 +4016,20 @@ CypherParser::KU_CreateRelTableGroupContext* CypherParser::kU_CreateRelTableGrou
}
setState(791);
kU_RelTableConnection();
setState(793);
_errHandler->sync(this);

_la = _input->LA(1);
if (_la == CypherParser::SP) {
setState(792);
match(CypherParser::SP);
}
setState(800);
_errHandler->sync(this);
alt = 1;
do {
switch (alt) {
case 1: {
setState(793);
_errHandler->sync(this);

_la = _input->LA(1);
if (_la == CypherParser::SP) {
setState(792);
match(CypherParser::SP);
}
setState(795);
match(CypherParser::T__2);
setState(797);
Expand Down

0 comments on commit 7ef1b4b

Please sign in to comment.