feat(interactive): Support `In` in cypher query
- Dominant language
- C++
- Stars
- 3.6k
- Forks
- 468
- Avg merge
- 29m
- Merged PRs (30d)
- 1
Description
When I try the following query on GIE Compiler, errors occurs.
```cypher
MATCH(p : PERSON)-[:KNOWS]->(friend: PERSON)
WITH collect(friend) AS friends
MATCH (messageAuthor: PERSON)<-[:HASCREATOR]-(:POST)-[:HASTAG]->(tag: TAG)
WHERE messageAuthor IN friends
RETURN messageAuthor.id As authorId;
```
The error is
```
Exception in thread "main" java.lang.IllegalArgumentException: {alias=IN} not found; expected aliases are: [messageAuthor, tag, friends]
at com.alibaba.graphscope.common.ir.tools.GraphBuilder.getAliasField(GraphBuilder.java:595)
at com.alibaba.graphscope.common.ir.tools.GraphBuilder.variable(GraphBuilder.java:448)
at com.alibaba.graphscope.cypher.antlr4.visitor.ExpressionVisitor.visitOC_Variable(ExpressionVisitor.java:254)
at com.alibaba.graphscope.cypher.antlr4.visitor.ExpressionVisitor.visitOC_Variable(ExpressionVisitor.java:58)
at com.alibaba.graphscope.grammar.CypherGSParser$OC_VariableContext.accept(CypherGSParser.java:5747)
at org.antlr.v4.runtime.tree.AbstractParseTreeVisitor.visitChildren(AbstractParseTreeVisitor.java:46)
at com.alibaba.graphscope.grammar.CypherGSBaseVisitor.visitOC_Atom(CypherGSBaseVisitor.java:279)
at com.alibaba.graphscope.cypher.antlr4.visitor.ExpressionVisitor.visitOC_PropertyOrLabelsExpression(ExpressionVisitor.java:225)
at com.alibaba.graphscope.cypher.antlr4.visitor.ExpressionVisitor.visitOC_PropertyOrLabelsExpression(ExpressionVisitor.java:58)
at com.alibaba.graphscope.grammar.CypherGSParser$OC_PropertyOrLabelsExpressionContext.accept(CypherGSParser.java:3232)
at org.antlr.v4.runtime.tree.AbstractParseTreeVisitor.visitChildren(AbstractParseTreeVisitor.java:46)
at com.alibaba.graphscope.grammar.CypherGSBaseVisitor.visitOC_ListOperatorExpression(CypherGSBaseVisitor.java:258)
at com.alibaba.graphscope.cypher.antlr4.visitor.ExpressionVisitor.visitOC_UnaryAddOrSubtractExpression(ExpressionVisitor.java:215)
at com.alibaba.graphscope.cypher.antlr4.visitor.ExpressionVisitor.lambda$visitOC_MultiplyDivideModuloExpression$3(ExpressionVisitor.java:208)
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1655)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578)
at com.alibaba.graphscope.cypher.antlr4.visitor.ExpressionVisitor.visitOC_MultiplyDivideModuloExpression(ExpressionVisitor.java:209)
at com.alibaba.graphscope.cypher.antlr4.visitor.ExpressionVisitor.lambda$visitOC_AddOrSubtractOrBitManipulationExpression$2(ExpressionVisitor.java:193)
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1655)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578)
at com.alibaba.graphscope.cypher.antlr4.visitor.ExpressionVisitor.visitOC_AddOrSubtractOrBitManipulationExpression(ExpressionVisitor.java:194)
at com.alibaba.graphscope.cypher.antlr4.visitor.ExpressionVisitor.visitOC_StringPredicateExpression(ExpressionVisitor.java:132)
at com.alibaba.graphscope.cypher.antlr4.visitor.ExpressionVisitor.visitOC_ComparisonExpression(ExpressionVisitor.java:113)
at com.alibaba.graphscope.cypher.antlr4.visitor.ExpressionVisitor.visitOC_NullPredicateExpression(ExpressionVisitor.java:171)
at com.alibaba.graphscope.cypher.antlr4.visitor.ExpressionVisitor.visitOC_NotExpression(ExpressionVisitor.java:99)
at com.alibaba.graphscope.cypher.antlr4.visitor.ExpressionVisitor.lambda$visitOC_AndExpression$1(ExpressionVisitor.java:92)
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1655)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578)
at com.alibaba.graphscope.cypher.antlr4.visitor.ExpressionVisitor.visitOC_AndExpression(ExpressionVisitor.java:93)
at com.alibaba.graphscope.cypher.antlr4.visitor.ExpressionVisitor.lambda$visitOC_OrExpression$0(ExpressionVisitor.java:80)
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1655)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578)
at com.alibaba.graphscope.cypher.antlr4.visitor.ExpressionVisitor.visitOC_OrExpression(ExpressionVisitor.java:81)
at com.alibaba.graphscope.cypher.antlr4.visitor.ExpressionVisitor.visitOC_OrExpression(ExpressionVisitor.java:58)
at com.alibaba.graphscope.grammar.CypherGSParser$OC_OrExpressionContext.accept(CypherGSParser.java:1970)
at org.antlr.v4.runtime.tree.AbstractParseTreeVisitor.visitChildren(AbstractParseTreeVisitor.java:46)
at com.alibaba.graphscope.grammar.CypherGSBaseVisitor.visitOC_Expression(CypherGSBaseVisitor.java:181)
at com.alibaba.graphscope.cypher.antlr4.visitor.GraphBuilderVisitor.visitOC_Where(GraphBuilderVisitor.java:132)
at com.alibaba.graphscope.cypher.antlr4.visitor.GraphBuilderVisitor.visitOC_Match(GraphBuilderVisitor.java:79)
at com.alibaba.graphscope.cypher.antlr4.visitor.GraphBuilderVisitor.visitOC_Match(GraphBuilderVisitor.java:39)
at com.alibaba.graphscope.grammar.CypherGSParser$OC_MatchContext.accept(CypherGSParser.java:886)
at org.antlr.v4.runtime.tree.AbstractParseTreeVisitor.visitChildren(AbstractParseTreeVisitor.java:46)
at com.alibaba.graphscope.grammar.CypherGSBaseVisitor.visitOC_RegularQuery(CypherGSBaseVisitor.java:76)
at com.alibaba.graphscope.cypher.antlr4.visitor.LogicalPlanVisitor.visitOC_Query(LogicalPlanVisitor.java:64)
at com.alibaba.graphscope.cypher.antlr4.visitor.LogicalPlanVisitor.visitOC_Query(LogicalPlanVisitor.java:45)
at com.alibaba.graphscope.grammar.CypherGSParser$OC_QueryContext.accept(CypherGSParser.java:336)
at org.antlr.v4.runtime.tree.AbstractParseTreeVisitor.visitChildren(AbstractParseTreeVisitor.java:46)
at com.alibaba.graphscope.grammar.CypherGSBaseVisitor.visitOC_Statement(CypherGSBaseVisitor.java:27)
at com.alibaba.graphscope.cypher.antlr4.visitor.LogicalPlanVisitor.visitOC_Cypher(LogicalPlanVisitor.java:56)
at com.alibaba.graphscope.cypher.antlr4.visitor.LogicalPlanVisitor.visitOC_Cypher(LogicalPlanVisitor.java:45)
at com.alibaba.graphscope.grammar.CypherGSParser$OC_CypherContext.accept(CypherGSParser.java:202)
at org.antlr.v4.runtime.tree.AbstractParseTreeVisitor.visit(AbstractParseTreeVisitor.java:18)
at com.alibaba.graphscope.common.ir.tools.GraphPlanner.lambda$main$3(GraphPlanner.java:285)
at com.alibaba.graphscope.common.ir.tools.GraphPlanner$PlannerInstance.planLogical(GraphPlanner.java:125)
at com.alibaba.graphscope.common.ir.tools.GraphPlanner$PlannerInstance.plan(GraphPlanner.java:112)
at com.alibaba.graphscope.common.ir.tools.GraphPlanner.main(GraphPlanner.java:287)
```
Contributor guide
Assessment
This issue has not been assessed yet.