Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

OpenCypher regression test #1663

Open
8 of 34 tasks
andyfengHKU opened this issue Jun 12, 2023 · 4 comments
Open
8 of 34 tasks

OpenCypher regression test #1663

andyfengHKU opened this issue Jun 12, 2023 · 4 comments
Assignees

Comments

@andyfengHKU
Copy link
Contributor

andyfengHKU commented Jun 12, 2023

We should complete openCypher regression test (aka, Technology Compatibility Kit (TCK)) in order to quantify how close we are in terms of feature complete towards open cypher.

Clauses

  • call
  • create
  • delete
  • match where
  • match
  • merge
  • remove
  • return order by
  • return skip limit
  • return
  • set
  • union
  • with order by
  • with skip limit
  • with where
  • with

Expressions

  • aggregation
  • boolean
  • comparison
  • conditional
  • existentialSubquery
  • graph
  • list
  • literals
  • map
  • mathematical
  • null
  • path
  • pattern
  • precedence
  • quantifier
  • string
  • temporal
  • typeConversion
@andyfengHKU andyfengHKU self-assigned this Jun 12, 2023
@andyfengHKU andyfengHKU mentioned this issue Jun 12, 2023
12 tasks
@acquamarin acquamarin mentioned this issue Jul 10, 2023
8 tasks
@andyfengHKU andyfengHKU changed the title OpenCypher TCK OpenCypher regression test Aug 14, 2023
@andyfengHKU
Copy link
Contributor Author

andyfengHKU commented Sep 4, 2023

Below is a roadmap to start working on openCypher regression test.

Goal

The goal of regression test is to keep track of features that are part of openCypher standard but currently missing in Kùzu. It also provides a way to quantify our openCypher compatibility level.

Background

Process

  1. Pick a regress test suite for a clause under here. We should finish match, where, return, with as the first batch.
  2. Keep track of statements that are not supported in Kùzu in this issue. The following differences are allowed
    • Defining DDL.
    • Creating primary index column as a mandatory requirement.
    • Not allowing node record in multiple node tables.

@AEsir777
Copy link
Contributor

AEsir777 commented Sep 5, 2023

*Affected scenarios (test cases) refer to those where we must adjust the Cypher query due to absent features, but these features don't impact the specific aspect we're testing

Issues

  • General: different formats for returned values
    neo4j returns multiple relationship pattern as a nodeList contains two nodes that are incident to the edge. e.g. [[n1], [n2]] while kuzu returns it as {n1-edge->n2}
  • [Matching 3 scenario 4] (https://github.com/opencypher/openCypher/blob/master/tck/features/clauses/match/Match3.feature): one relationship pattern r is not supported for multiple kinds of node table, e.g it can only support one kind (:A)-[:r]->(:A) and cannot support (:A)-[:r]->(:B).
    Affected Scenarios: 7, 23, 4.8, 4.9. 4.10
  • [Matching 3 scenario 6] (https://github.com/opencypher/openCypher/blob/master/tck/features/clauses/match/Match3.feature): lable predicate MATCH (a)-->(b:Foo) is not implemented. (changed to -[]->)
    • Affected scenarios: 9, 10, 19, 20, 21, 22, 23, 27, 30
      Follow up issue:
    • CREATE (a) -- (b); creates {_ID: 0:0, _LABEL: A, ID: 0} regardless of relationship table exists or not.
    • CREATE (a) - - (b); causes segmentaion fault
    • CREATE (a) -[]- (b); creates two nodes (as desired but different from neo4j)
  • Matching 3 scenario 7: multiple label (a:A:B) is not implemented.
  • Matching 3 scenario 11/12: undirectd match in self-relationship should only return one tuple, however two same tuples are returned.
    {_ID: 0:0, _LABEL: A, ID: 0}|(0:0)-{_LABEL: LOOP, _ID: 1:0}->(0:0)|{_ID: 0:0, _LABEL: A, ID: 0} {_ID: 0:0, _LABEL: A, ID: 0}|(0:0)-{_LABEL: LOOP, _ID: 1:0}->(0:0)|{_ID: 0:0, _LABEL: A, ID: 0}
  • Matching 3 scenario 15/16: same relationshion/node is returned twice for chaining undirected relationshion.
    i.e. for match query (x:A)-[r1]->(y)-[r2]-(z). i.e. r2, r1 and x, z, should not be the same simultaneously.
  • [Matching 3 scenario 19] (https://github.com/opencypher/openCypher/blob/master/tck/features/clauses/match/Match3.feature): Two bound relationship <-[:r]-> is not supported.
  • Matching 3 scenario 24: Duplicated relation pattern is not allowed MATCH (a1)-[r:T]->() WITH r, a1 MATCH (a1)-[r:T]->(b2). So all occurences are changed to [r] and [].
    Affected scenarios: 24 25 26 4.7
  • Matching 3 scenario 25/26/28: In neo4j, () only creates null nodes.
    In Kuzu, there are 3 cases.
    No node table exists: error
    1 node table: after CREATE ()-[:T]->(), a node of such type will be created if the primary key is serial.
    More than 1 node tables: there will be error for multiple lables for ().
  • Matching 4 scenario 2: Simple variable length pattern [*] is not supported.
    Failed related scenario: 5 8
  • Matching 4 scenario 2: Neo4j allows key word named tables like CONTAINS.
  • Matching 4 scenario 3: 0 is not allowed for relationship pattern bound node [:KNOWS*0..1].
    Failed related scenario: 7
  • Matching 4 scenario 4: range(1, 20) function is not implemented.
  • Matching 4 scenario 4: No implicit conversion from INT64 to STRING.
  • Matching 4 scenario 4: nodeList + nodeList is not supported.
  • Matching 4 scenario 4: size function is not implemented.
  • Matching 4 scenario 4: Indexing varlist and using it in create relationship causes segmentation fault. WITH collect(n)[1] AS n1 CREATE (n1)-[:T]->(n1)
    Thread 1 "e2e_test" received signal SIGSEGV, Segmentation fault.
    There is also another error Binder exception: Read after update is not supported. Try query with multiple statements, but it is not shown.
    0x0000555555e35a70 in std::_Hashtable<unsigned long, unsigned long, std::allocator<unsigned long>, std::__detail::_Identity, std::equal_to<unsigned long>, std::hash<unsigned long>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, true, true> >::_Hashtable<__gnu_cxx::__normal_iterator<unsigned long const*, std::vector<unsigned long, std::allocator<unsigned long> > > >(__gnu_cxx::__normal_iterator<unsigned long const*, std::vector<unsigned long, std::allocator<unsigned long> > >, __gnu_cxx::__normal_iterator<unsigned long const*, std::vector<unsigned long, std::allocator<unsigned long> > >, unsigned long, std::hash<unsigned long> const&, std::equal_to<unsigned long> const&, std::allocator<unsigned long> const&, std::integral_constant<bool, true>) ()
  • Matching 4 scenario 6: bounde node for variable length relation pattern like [r*2] is not supported.
  • Matching 4 scenario 6: For relationship (a)-[:X]->(b), (b)-[:Y]-(a), the pattern [r*2..2] returns the middle node b along with the two relationships while neo4j only returns the relationships (not able to resuse? for next match clause).
  • Matching 4 scenario 8: WITH [r1, r2] AS rs is a varlist and is not supported as a relationship pattern [rs*].
    Binder exception: rs has data type VAR_LIST. (RECURSIVE_REL) was expected.
  • add feature for [*r..2], [*r2..]

@russell-liu
Copy link
Contributor

russell-liu commented Oct 30, 2023

Issues, continued

Incorrect scenarios

Match

  • Match 5 Scenario 27: First query possibly untranslatable? Would need CREATE (insert) rel table group LIKES.
  • Match 6 Scenario 8-14: Incorrect output due to violation of relationship uniqueness (see https://neo4j.com/docs/cypher-manual/current/patterns/reference/#graph-patterns-rules-relationship-uniqueness).
  • Match 6 Scenario 14: Parser exception because End is a reserved word.
  • Match 6 Scenario 15: Incorrect output -- duplicated node in path.
  • Match 6 Scenario 17: Incorrect output.
  • Match 6 Scenario 18: Incorrect output -- wrong direction for undirected named path.
  • Match 6 Scenario 21-25: Does not fail.
  • Match 7 Scenario 3: Parser exception because REL is a reserved word.
  • Match 7 Scenario 4-5: Binder exception: Bind relationship r to relationship with same name is not supported.
  • Match 7 Scenario 8: Blocked by Match 7 Scenario 3.
  • Match 7 Scenario 9: Blocked by Match 7 Scenario 3.
  • Match 7 Scenario 11:
    • Blocked by Match 7 Scenario 3.
    • Binder exception: Cannot match a built-in function for given function NOT_EQUALS(REL,REL).
  • Match 7 Scenario 12: Incorrect output due to self loop in graph.
  • Match 7 Scenario 13: Blocked by Match 7 Scenario 3.
  • Match 7 Scenario 14:
    • Blocked by Match 7 Scenario 3.
    • C++ exception with description "Buffer manager exception: Failed to claim a frame." thrown in the test body.
  • Match 7 Scenario 16:
    • Blocked by Match 7 Scenario 3.
    • Possible mistake by OpenCypher.
  • Match 7 Scenario 18:
    • Blocked by Match 7 Scenario 3.
    • Possible mistake by OpenCypher.
  • Match 7 Scenario 20-28: Blocked by Match 7 Scenario 3.
  • Match 7 Scenario 22: Catalog exception: COALESCE function does not exist.
  • Match 7 Scenario 23: Blocked by Match 3 Scenario 7.
  • Match 7 Scenario 24: Blocked by Match 6 Scenario 8.
  • Match 7 Scenario 30-31: Incorrect output.
  • Match 8 Scenario 2: When doing MERGE (b): Binder exception: Create node b with multiple node labels is not supported.
  • Match 8 Scenario 3: Incorrect output.
  • Match 9 Scenario 1: Catalog exception: LAST function does not exist.
  • Match 9 Scenario 2-3: Blocked by Match 6 Scenario 14.
  • Match 9 Scenario 2-4: Blocked by Match 7 Scenario 3.
  • Match 9 Scenario 2-4: Incorrect output.
  • Match 9 Scenario 5: Binder exception: Cannot match a built-in function for given function COUNT(RECURSIVE_REL).
  • Match 9 Scenario 6-7: Binder exception: rs has data type VAR_LIST but (RECURSIVE_REL) was expected.
  • Match 9 Scenario 8: Binder exception: Cannot match a built-in function for given function NOT_EQUALS(NODE,NODE).
  • Match 9 Scenario 9: Incorrect output.

MatchWhere

  • MatchWhere 1 Scenario 5: Blocked by Match 7 Scenario 3.
  • MatchWhere 1 Scenario 6: Parameters in queries not supported.
  • MatchWhere 1 Scenario 8: Parser exception because node is a reserved word.
  • MatchWhere 1 Scenario 9: Blocked by MatchWhere 1 Scenario 6.
  • MatchWhere 1 Scenario 10: Disjunctive property predicate is not working.
  • MatchWhere 1 Scenario 13: Result is returned even when WHERE clause is False.
  • MatchWhere 2 Scenario 2: Blocked by MatchWhere 1 Scenario 6.
  • MatchWhere 3 Scenario 1: Blocked by Match 9 Scenario 8.
  • MatchWhere 3 Scenario 3: Blocked by Match 7 Scenario 3.
  • MatchWhere 4 Scenario 1: Blocked by Match 9 Scenario 8.
  • MatchWhere 4 Scenario 2: Parser exception due to pattern predicates.
  • MatchWhere 5 Scenario 4:
    • Blocked by MatchWhere 1 Scenario 10.
    • Binder exception: Expected the same data type for property var but found INT64 and STRING.
  • MatchWhere 6 Scenario 2-3: Blocked by Match 7 Scenario 3.
  • MatchWhere 6 Scenario 5: Blocked by Match 7 Scenario 4.

Return

  • Return 2 Scenario 3: Missing node property throws exception.
  • Return 2 Scenario 5: Missing rel property throws exception.
  • Return 2 Scenario 12: List must have items of same type.
  • Return 2 Scenario 13: Blocked by Match 7 Scenario 3.
  • Return 2 Scenario 15: Returning property of deleted node does not fail.
  • Return 2 Scenario 16: Returning label of deleted node does not fail.
  • Return 2 Scenario 17: Returning property of deleted rel does not fail.
  • Return 3 Scenario 1: Blocked by Return 2 Scenario 3.
  • Return 4: Skipped due to Testing framework currently does not support asserting RETURN result column names #2308.
  • Return 5 Scenario 1: SEGFAULT.
  • Return 5 Scenario 3: SEGFAULT.
  • Return 5 Scenario 4:
    • Blocked by Return 2 Scenario 12.
    • SEGFAULT.
  • Return 5 Scenario 5: C++ exception with description "Runtime exception: Cannot compare data type VAR_LIST" thrown in the test body.
  • Return 6 Scenario 3: Possible mistake by OpenCypher.
  • Return 6 Scenario 4-5: UNWIND range(...) AS i CREATE () does not work as expected.
  • Return 6 Scenario 11: Blocked by Return 6 Scenario 4.
  • Return 6 Scenario 12: Blocked by Match 7 Scenario 3.
  • Return 6 Scenario 13: Blocked by Match 9 Scenario 8.
  • Return 6 Scenario 15: Catalog exception: RAND function does not exist.
  • Return 6 Scenario 16: Binder exception: DISTINCT is not supported for NODE or REL type.
  • Return 6 Scenario 17: Blocked by MatchWhere 1 Scenario 6.
  • Return 6 Scenario 17-21: Blocked by Return 2 Scenario 3.
  • Return 6 Scenario 21: Does not fail.

With

  • With 1 Scenario 1: Blocked by Match 7 Scenario 3.
  • With 1 Scenario 2: Blocked by Match 7 Scenario 3.
  • With 1 Scenario 3:
    • Blocked by Match 7 Scenario 3.
    • Binder exception: Bind relationship r2 to relationship with same name is not supported.
  • With 1 Scenario 4: Binder exception: Expression in WITH must be aliased (use AS).
  • With 1 Scenario 6: Blocked by Match 7 Scenario 3.
  • With 2 Scenario 1:
    • Parser exception because Begin is a reserved word.
    • Blocked by Match 6 Scenario 14.
    • C++ exception with description "Cannot evaluate expression with type PROPERTY." thrown in the test body.
  • With 3 Scenario 1:
    • Blocked by Match 7 Scenario 3.
    • Binder exception: Bind relationship r to relationship with same name is not supported.
  • With 4 Scenario 1: Blocked by Match 7 Scenario 3.
  • With 4 Scenario 6: Binder exception: In WITH clause, ORDER BY must be followed by SKIP or LIMIT.
  • With 5 Scenario 2: C++ exception with description "Runtime exception: Cannot compare data type STRUCT" thrown in the test body.
  • With 6 Scenario 2:
    • Blocked by Match 7 Scenario 3.
    • Binder exception: Bind relationship r2 to relationship with same name is not supported.
  • With 6 Scenario 3:
    • Blocked by Match 7 Scenario 3.
    • Binder exception: Bind relationship r2 to relationship with same name is not supported.
  • With 6 Scenario 4: C++ exception with description "Runtime exception: Cannot compare data type STRUCT" thrown in the test body.
  • With 6 Scenario 5: Blocked by MatchWhere 1 Scenario 6.
  • With 6 Scenario 5-9: Blocked by Return 2 Scenario 3.
  • With 6 Scenario 9: Does not fail.
  • With 7 Scenario 1:
    • Blocked by Match 7 Scenario 3.
    • Binder exception: Bind relationship r to relationship with same name is not supported.
  • With 7 Scenario 2: Blocked by Match 7 Scenario 3.

WithWhere

  • WithWhere 1 Scenario 2: Binder exception: Variable a is not in scope.
  • WithWhere 1 Scenario 3: Binder exception: Variable r is not in scope.
  • WithWhere 1 Scenario 4: Binder exception: Variable a is not in scope.
  • WithWhere 2 Scenario 1: Incorrect output.
  • WithWhere 2 Scenario 2: Blocked by MatchWhere 1 Scenario 6.
  • WithWhere 3 Scenario 1: Blocked by Match 9 Scenario 8.
  • WithWhere 3 Scenario 3: Blocked by Match 7 Scenario 3.
  • WithWhere 4 Scenario 1: Blocked by Match 9 Scenario 8.
  • WithWhere 4 Scenario 2: Blocked by MatchWhere 4 Scenario 2.
  • WithWhere 5 Scenario 4:
    • Blocked by MatchWhere 1 Scenario 10.
    • Blocked by MatchWhere 5 Scenario 4.
  • WithWhere 6 Scenario 1: Blocked by Match 7 Scenario 3.
  • WithWhere 7 Scenario 1: Binder exception: Variable a is not in scope.
  • WithWhere 7 Scenario 3: Binder exception: Variable a is not in scope.

ReturnOrderBy

  • ReturnOrderBy 1 Scenario 9-12: Blocked by Return 2 Scenario 12.
  • ReturnOrderBy 1 Scenario 11-12: Blocked by Match 7 Scenario 3.
  • ReturnOrderBy 2 Scenario 5: Blocked by Return 2 Scenario 3.
  • ReturnOrderBy 2 Scenario 6: Binder exception: Order by expression COUNT_STAR() is not in RETURN or WITH clause.
  • ReturnOrderBy 2 Scenario 12: Testing framework does not allow ignoring element order for lists -- different orders may occur on different platforms.
  • ReturnOrderBy 2 Scenario 13: Does not fail.
  • ReturnOrderBy 3 Scenario 1: Binder exception: Order by expression COUNT_STAR() is not in RETURN or WITH clause.
  • ReturnOrderBy 5 Scenario 1: ... RETURN n.num AS n ORDER BY n + 2 causes error.
  • ReturnOrderBy 6 Scenario 1: Blocked by MatchWhere 1 Scenario 6.
  • ReturnOrderBy 6 Scenario 1-5:
    • Blocked by Return 2 Scenario 3.
    • Binder exception: Order by expression ... is not in RETURN or WITH clause.
  • ReturnOrderBy 6 Scenario 5: Does not fail.

ReturnSkipLimit

  • ReturnSkipLimit 1 Scenario 2: Blocked by MatchWhere 1 Scenario 6.
  • ReturnSkipLimit 1 Scenario 3: Blocked by Return 6 Scenario 15.
  • ReturnSkipLimit 1 Scenario 6: Blocked by MatchWhere 1 Scenario 6.
  • ReturnSkipLimit 1 Scenario 8: Blocked by MatchWhere 1 Scenario 6.
  • ReturnSkipLimit 2 Scenario 10-11: Blocked by MatchWhere 1 Scenario 6.
  • ReturnSkipLimit 2 Scenario 14-15: Blocked by MatchWhere 1 Scenario 6.
  • ReturnSkipLimit 3 Scenario 2: Blocked by MatchWhere 1 Scenario 6.

WithSkipLimit

  • WithSkipLimit 1 Scenario 1: Blocked by With 2 Scenario 1.
  • WithSkipLimit 2 Scenario 2: Blocked by With 2 Scenario 1.
  • WithSkipLimit 3 Scenario 2: Blocked by MatchWhere 1 Scenario 6.

Adapted scenarios

Match

  • Match 5 Scenario 27:
    • Label predicate expression (a:A) changed to LABEL function and string comparison (LABEL(a) = 'A').
    • Bidirectional relationship <--> changed to undirected relationship --.
  • Match 6 Scenario 12-13: Bidirectional relationship <--> changed to undirected relationship --.
  • Match 7: Kùzu's OPTIONAL MATCH returns a path whose RELS is an empty list in cases where the path itself should be NULL. I have allowed this.
  • Match 7 Scenario 17: x.name IN ['B', 'C'] changed to list_contains(['B', 'C'], x.name).
  • Match 7 Scenario 25: Label predicate expression ((a:B)) changed to LABEL function and string comparison (LABEL(a) = 'B').
  • Match 9 Scenario 9: x.name IN ['B', 'C'] changed to list_contains(['B', 'C'], x.name).

MatchWhere

  • MatchWhere 1 Scenario 1: Label predicate expression (a:A) changed to LABEL function and string comparison (LABEL(a) = 'A').
  • MatchWhere 1 Scenario 2: Label predicate expression (a:A) changed to LABEL function and string comparison (LABEL(a) = 'A').
  • MatchWhere 1 Scenario 7: type function changed to LABEL function.
  • MatchWhere 1 Scenario 11: type function changed to LABEL function.
  • MatchWhere 2 Scenario 1: Reordered DDL to circumvent Node is created with SERIAL property missing under certain circumstances #2402.
  • MatchWhere 5 Scenario 2: Label predicate expression (i:TextNode) changed to LABEL function and string comparison (LABEL(i) = 'TextNode').
  • MatchWhere 6 Scenario 1: Label predicate expression (b:B) changed to LABEL function and string comparison (LABEL(b) = 'B'); Label predicate expression (c:C) changed to LABEL function and string comparison (LABEL(c) = 'C').
  • MatchWhere 6 Scenario 2: Label predicate expression (m:NonExistent) changed to LABEL function and string comparison (LABEL(m) = 'NonExistent').

Return

  • Return 2 Scenario 7: + operator changed to list_concat function.
  • Return 2 Scenario 8: Label predicate expression ((n:Foo)) changed to LABEL function and string comparison (LABEL(n) = 'Foo').
  • Return 2 Scenario 14: type function changed to LABEL function.
  • Return 2 Scenario 16: labels function changed to LABEL function.

With

  • With 4 Scenario 7: Added node label (:A) in CREATE query that is being tested.

WithWhere

ReturnOrderBy

  • ReturnOrderBy 4 Scenario 1: Changed 0-based list indexing to 1-based.

ReturnSkipLimit

  • ReturnSkipLimit 1 Scenario 3: Changed toInteger to to_int64.
  • ReturnSkipLimit 2 Scenario 6: Changed toInteger to to_int64.

@Ashleyhx
Copy link
Contributor

Ashleyhx commented Dec 15, 2023

Issues for Expressions

Aggregation

Aggregation2 Scenario5, 6, 11,12: 'min, max' not workings with mixed numeric values.
Aggregation2 Scenario9, 10: min, max not working with list values
Aggregation5: NOT_EXISTS returns error instead of NULL as OpenCypher
Aggregation4, 7: Empty
Aggregation8 Scenario1: DISTINCT is not supported for NODE or REL type.

Boolean

Boolean1 Scenario5, 7: return less rows than expected, for rows start with null
Boolean1 Scenario8: invalid input <RETURN {}>
Boolean2 Scenario5, 7: return less rows than expected, for rows start with null
Boolean3 Scenario5, 7: return less rows than expected, for rows start with null
Boolean4 Scenario2: Invalid input <RETURN NOT NOT>
Boolean5 Scenario2,4, 6: return less rows than expected, for rows start with null
Boolean5 Scenario7: CI and local give different result
Boolean5 Scenario8: De Morgan's law on non-null: expected result contains False|True|True whereas ours has False|True|False

Comparison

Comparison1 Scenario1-3: Cannot bind LIST_CREATION with different types
Comparison1 Scenario4, 5: Cannot match a built-in function for given function EQUALS(NODE,NODE)
Comparison1 Scenario7: invalid input {} whereas OpenCyhper mark this as valid.
Comparison1 Scenario8, 9: EQUALS(DOUBLE,STRING) cannot compare string and numerical values
Comparison1 Scenario14: EQUALS(RECURSIVE_REL,RECURSIVE_REL) is not supported.
Comparison2 Scenario2: MATCH (:Root)-->(i:Child) not working
Comparison2 Scenario8: 0.0/0.0 <= 1 return True, whereas OpenCyhper return True for this case.
Comparison2 Scenario9: compare between string and number not supported
Comparison3: Non-binary comparison (e.g. a=b=c) is not supported so add AND

Conditional

Conditional1: coalesce invalid
Conditional2: condition is not supported when implicit cast not supported, such as numerical conditions but with bool as input.

Graph

Graph 1,2 empty
Graph4: type() function does not exists, which seems to be similar to label(), so changed to label
Graph4 Scenario5: list cannot contain REL and INT64
Graph5 Scenario1,3,4: multiple node labels is not support
Graph5 Scenario 5: will return error instead of null if table not exists.
Graph7: keys() function does not exists.
Graph9: properties() function only support (VAR_LIST,STRING) -> ANY

List

List1 Scenario4, 5, 7, 9: Invalid statement: parameters are
List2 Scenario2: RETURN list[2:] only returns the second element
List2 Scenario6, 8: RETURN list[-3:-1] and [-5:5] cause finished with exit code 139 (interrupted by signal 11:SIGSEGV)
List2 Scenario7: RETURN list[3:1] cause infinity loop
List3 Scenario1: [1, 2] = 'foo' gives error Cannot match a built-in function for given function EQUALS(VAR_LIST,STRING)
LIst3 Scenario5,6,7: Gives error Cannot bind LIST_CREATION with parameter type INT64[] and STRING[] when executing [[1]] = [[1], [null]], [1, 2], [1, 3]] = [[1, 2], [null, 'foo']]
List5: Invalid input < IN>
List11 Scenario3: RETURN ALL(ok cause Invalid input < ALL>:

Literal

literal does not exists

Map

Map1: none existing fields will return error instead of null.
Map1 Scenario4: statically is not case-sensitive.
Map1 Scenario5: delimited identifier not working
Map2 Scenario3,4,5: LIST_EXTRACT(STRUCT,STRING) not supported
Map3 Scenario1: map does not work if its fields are of different types.
Map3: change keys() to map_keys(), null in map seems to be map([],[]); change from {k: 1, l: null} to `map(['k', 'l'], [1, null]) to fit kuzu's map structure.

Mathematical

Mathematical1,4,5,6,7,9,10,12,14,15,16,17 :empty

Precedence

Precedence1 Scenario 11- : invalid IN
Precedence3: Cannot bind LIST_CREATION with parameter type INT64 and INT64[].
Precedence4: statement like -STATEMENT RETURN null IS NOT NULL = null IS NULL AS a; cause assertion failed KU_UNREACHABLE`

Quantifier

All not support due to the usage of IN.

String

String4: split function does not exist

Temporal

format such as {date: duration({years: 12, months: 5, days: 14, hours: 16, minutes: 12, seconds: 70, nanoseconds: 1} is not supported, we only support make_date(year, month, day) but not hours, minutes etc.

TypeConversion

TypeConversion1 Scenario1: UNWIND [true, false] AS b , RETURN to_bool(b) AS b; not support
TypeConversion1 Scenario5 : invalid 'IN'

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants