Skip to content

Track missing Cypher features: list parameters, reduce, UNION and functions #20

Closed

Description

@prrao87

Problem

Several commonly used Cypher features are missing, which forces rewrites of standard queries. The documented gaps in docs/cypher.md:

  • List and map parameters: $ids bound to a list raises ValueError: Unsupported parameter type (L86-L89).
  • Parameters in SKIP and LIMIT (L180).
  • UNION and UNION ALL, and CALL subqueries (L182-L185).
  • Functions (L249-L251): reduce; math (abs, round, floor, ceil, sqrt); most string and list functions; the list predicates any, all, none and single; and relationships(p).
  • Named paths other than shortestPath (p = (a)-[*]->(b)).

Evidence

The official LDBC IC14 text uses reduce(), so the benchmark runs a port with pattern comprehensions instead. List parameters are the normal way to pass id sets from an application. #3 covers a related bug in integer list literals.

Suggested fix

Treat this as a tracking issue and split it into one pull request per group, in roughly this order: list and map parameters (bound as Arrow list and struct scalars), parameters in SKIP/LIMIT, reduce and the list predicates (planned like list comprehensions, which already exist), math functions (direct DataFusion equivalents), UNION, then named paths and relationships(p). Follow openCypher's standardisation scope.

Acceptance criteria (per group)

  • Parser, semantic and execution tests, in Rust and Python, including nulls and empty lists.
  • docs/cypher.md moves the feature from the gaps to the supported lists, with an example.
  • For reduce: the LDBC IC14 official text runs unchanged and matches the golden answer.

Activity

  1. prrao87 commented on Oct 27, 2026

    @prrao87
    MemberAuthor

    Every group in this issue is supported on main (#55), and all of them are in docs/cypher.md: list and map parameters, parameters in SKIP/LIMIT, UNION/UNION ALL, read-only CALL { ... } subqueries, reduce, the list predicates all/any/none/single, the math functions abs/round/floor/ceil/sqrt, the string and list functions, named paths, and relationships(p). Separate issues should track any remaining gaps, such as WITH SKIP or procedure CALL ... YIELD.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions