feat: JSON/JSONB validation, multi-column indexes, CTE execution, wire protocol column types

- Add fkJson to wire protocol with serialization/deserialization
- Validate JSON/JSONB on INSERT/UPDATE via std/json
- Send real column type metadata in wire protocol responses
- Update all 4 clients (Nim, Python, JS, Rust) for JSON and columnTypes
- Implement multi-column index parser (CREATE INDEX idx ON t(a, b))
- Add ciColumns to AST nkCreateIndex
- Build composite index keys as table.col1.col2 with val1|val2
- Support multi-column exact match in SELECT for AND chains
- Implement non-recursive CTE execution via ctx.cteTables materialization
- Add tkRecursive token and parse WITH RECURSIVE
- Fix test isolation: use temp dirs for JOIN, migration, and RLS tests
- All tests passing (0 failures)
This commit is contained in:
2026-05-07 10:27:40 +03:00
parent ca345eb256
commit eaa5760fd4
14 changed files with 300 additions and 46 deletions
+3 -2
View File
@@ -149,7 +149,7 @@ type
case kind*: NodeKind
of nkSelect:
selDistinct*: bool
selWith*: seq[(string, Node)]
selWith*: seq[(string, Node, bool)]
selResult*: seq[Node]
selFrom*: Node
selJoins*: seq[Node]
@@ -286,6 +286,7 @@ type
of nkCreateIndex:
ciTarget*: string
ciName*: string
ciColumns*: seq[string]
ciExpr*: Node
ciKind*: IndexKind
of nkDropIndex:
@@ -309,7 +310,7 @@ type
of nkReturning:
retExprs*: seq[Node]
of nkWith:
withBindings*: seq[(string, Node)]
withBindings*: seq[(string, Node, bool)]
of nkBinOp:
binOp*: BinOpKind
binLeft*: Node