Out-of-range literal in CREATE INDEX ... OPTIONS {indexConfig} raises 50N00 and echoes internal AST to the client
Author: hkjiang26Created Sep 11, 2026Updated Sep 11, 2026
Labelsbugteam-cypherGithub Issue
Neo4j Version: neo4j:2026.07.1
Installation Method: Docker
API: Cypher (Bolt / HTTP)
Steps to reproduce
- On a fresh database, run:
CREATE INDEX idx_x IF NOT EXISTS FOR (n:L) ON (n.p) OPTIONS {indexConfig: {`vector.dimensions`: 99999999999999999999}}Or any index-config expression that throws during evaluation, e.g.:
CREATE POINT INDEX idx_y IF NOT EXISTS FOR (n:L) ON (n.p) OPTIONS {indexConfig: {`spatial.cartesian.min`: [99999999999999999999, 0.0]}}
CREATE INDEX idx_z IF NOT EXISTS FOR (n:L) ON (n.p) OPTIONS {indexConfig: {`vector.dimensions`: 1/0}}Expected behavior
The same literal in a normal expression is a clean client error — RETURN 99999999999999999999 → SyntaxError "integer is too large", RETURN 1/0 → ArithmeticError 22012, RETURN 9223372036854775807 + 1 → ArithmeticError 22003. The OPTIONS context should produce the same client-class error (22xxx).
Actual behavior
Neo.DatabaseError.Statement.ExecutionFailed (50N00)
Failed to evaluate expression SignedDecimalIntegerLiteral(99999999999999999999)Source: neo4j/neo4j