Value type declarations
Value types appear in graph definitions, session declarations and parser-only casts/type predicates. The parser’s type vocabulary is broader than the executable value representation.
| Family | Grammar examples |
|---|---|
| Boolean | BOOLEAN, BOOL |
| Integers and numerics | INTEGER, BIG INTEGER, INT(64), DECIMAL(8,2), FLOAT(24,2), DOUBLE |
| Characters and bytes | STRING, VARCHAR(64), BYTES(16), VARBINARY(512) |
| Temporal | DATE, TIME, TIMESTAMP, LOCAL TIME, TIME WITH TIME ZONE |
| Lists and arrays | LIST<STRING>, STRING LIST, INTEGER ARRAY[3] |
| Records | RECORD, RECORD {name STRING}, {name STRING} |
| Dynamic unions | INTEGER | STRING, ANY<STRING | INTEGER> |
| Graph values | PATH, ANY NODE, EDGE, GRAPH, BINDING TABLE |
| General property values | PROPERTY VALUE |
Declarations can apply NOT NULL. A union accepts null only when its members permit null; combining exclusively non-null types does not create a nullable union.
SESSION SET VALUE $limit INTEGER NOT NULL = 10;SESSION SET VALUE $names LIST<STRING> = ['Alice', 'Bob'];RETURN $limit AS limit, $names AS names;Query scalars currently normalize integer and approximate numeric values to Int64/Float64 after supported declaration validation. Decimal literals are f64, not an exact decimal implementation. Temporal values, arbitrary unions and structured references do not automatically become executable query scalars because their types parse.
Graph definitions preserve constraints including approximate-numeric scale. Unsupported nesting is rejected before durable publication so a committed definition remains recoverable.