Skip to content

Commit 5fd5f0f

Browse files
author
Dylan Storey
committed
Release 0.1.0 - Exit beta, add relationship type OR syntax
Features: - Add [:TYPE1|:TYPE2] relationship type OR syntax in MATCH patterns - Add FOREACH support for expressions like range(), not just list literals - Add list indexing [1,2,3][0] and negative indexing [1,2,3][-1] Fixes: - Fix sqlite3_close() returning error 5 due to unfinalized statements - Fix stale SKIPPED test markers for features that now work (type(), length(), MIN/MAX, self-refs, diamond patterns, path variables) Version changes: - Rust: 0.1.0-beta.5 → 0.1.0 - Python: 0.1.0b5 → 0.1.0 - Python classifier: Alpha → Beta Tests: - Add 10 new functional test files (21-30) - Enable previously skipped tests that now pass - All functional tests passing
1 parent c1286a9 commit 5fd5f0f

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+2998
-679
lines changed

.metis/backlog/bugs/GQLITE-T-0072.md renamed to .metis/archived/backlog/bugs/GQLITE-T-0072.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ created_at: 2025-12-27T20:34:10.266740+00:00
77
updated_at: 2025-12-27T21:15:10.590269+00:00
88
parent:
99
blocked_by: []
10-
archived: false
10+
archived: true
1111

1212
tags:
1313
- "#task"
@@ -80,6 +80,8 @@ sqlite3_bind_text(stmt, 2, label, -1, SQLITE_STATIC); // Safe
8080
8181
## Acceptance Criteria
8282
83+
## Acceptance Criteria
84+
8385
## Acceptance Criteria **[REQUIRED]**
8486
8587
- [ ] {Specific, testable requirement 1}

.metis/backlog/bugs/GQLITE-T-0073.md renamed to .metis/archived/backlog/bugs/GQLITE-T-0073.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ created_at: 2025-12-27T20:34:10.449800+00:00
77
updated_at: 2025-12-27T21:15:10.779855+00:00
88
parent:
99
blocked_by: []
10-
archived: false
10+
archived: true
1111

1212
tags:
1313
- "#task"
@@ -74,6 +74,8 @@ The `base_size` calculation doesn't account for deeply nested values, escaped qu
7474
7575
## Acceptance Criteria
7676
77+
## Acceptance Criteria
78+
7779
## Acceptance Criteria **[REQUIRED]**
7880
7981
- [ ] {Specific, testable requirement 1}

.metis/backlog/bugs/GQLITE-T-0075.md renamed to .metis/archived/backlog/bugs/GQLITE-T-0075.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ created_at: 2025-12-27T20:34:10.868281+00:00
77
updated_at: 2025-12-27T21:15:11.202019+00:00
88
parent:
99
blocked_by: []
10-
archived: false
10+
archived: true
1111

1212
tags:
1313
- "#task"
@@ -70,6 +70,8 @@ The sql_builder.c already has `sql_builder_escape_string()` for escaping single
7070

7171
## Acceptance Criteria
7272

73+
## Acceptance Criteria
74+
7375
## Acceptance Criteria **[REQUIRED]**
7476

7577
- [ ] {Specific, testable requirement 1}

.metis/backlog/tech-debt/GQLITE-T-0074.md renamed to .metis/archived/backlog/tech-debt/GQLITE-T-0074.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ created_at: 2025-12-27T20:34:10.653686+00:00
77
updated_at: 2025-12-27T21:15:10.988247+00:00
88
parent:
99
blocked_by: []
10-
archived: false
10+
archived: true
1111

1212
tags:
1313
- "#task"
@@ -84,6 +84,8 @@ Address incomplete memory management TODOs in agtype.c to prevent memory leaks a
8484

8585
## Acceptance Criteria
8686

87+
## Acceptance Criteria
88+
8789
## Acceptance Criteria **[REQUIRED]**
8890

8991
- [ ] {Specific, testable requirement 1}

.metis/backlog/tech-debt/GQLITE-T-0076.md renamed to .metis/archived/backlog/tech-debt/GQLITE-T-0076.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ created_at: 2025-12-27T20:34:11.093926+00:00
77
updated_at: 2025-12-27T21:15:11.434176+00:00
88
parent:
99
blocked_by: []
10-
archived: false
10+
archived: true
1111

1212
tags:
1313
- "#task"
@@ -90,6 +90,8 @@ strcat(json, "]");
9090
9191
## Acceptance Criteria
9292
93+
## Acceptance Criteria
94+
9395
## Acceptance Criteria **[REQUIRED]**
9496
9597
- [ ] {Specific, testable requirement 1}

bindings/python/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ authors = [
1414
]
1515
keywords = ["sqlite", "graph", "cypher", "database"]
1616
classifiers = [
17-
"Development Status :: 3 - Alpha",
17+
"Development Status :: 4 - Beta",
1818
"Intended Audience :: Developers",
1919
"License :: OSI Approved :: MIT License",
2020
"Programming Language :: Python :: 3",

bindings/python/src/graphqlite/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
from .utils import escape_string, sanitize_rel_type, CYPHER_RESERVED
88
from ._platform import get_loadable_path
99

10-
__version__ = "0.1.0b5"
10+
__version__ = "0.1.0"
1111
__all__ = [
1212
"Connection", "connect", "wrap", "load", "loadable_path",
1313
"Graph", "graph", "escape_string", "sanitize_rel_type", "CYPHER_RESERVED"

bindings/rust/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "graphqlite"
3-
version = "0.1.0-beta.5"
3+
version = "0.1.0"
44
edition = "2021"
55
description = "SQLite extension for graph queries using Cypher"
66
license = "MIT"

docs/src/explanation/architecture.md

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ The `cypher()` SQL function receives the query:
5959

6060
```c
6161
// In extension.c
62-
static void cypher_func(sqlite3_context *context, int argc, sqlite3_value **argv) {
62+
static void graphqlite_cypher_func(sqlite3_context *context, int argc, sqlite3_value **argv) {
6363
const char *query = (const char *)sqlite3_value_text(argv[0]);
6464
// ...
6565
}
@@ -70,8 +70,8 @@ static void cypher_func(sqlite3_context *context, int argc, sqlite3_value **argv
7070
The query is tokenized and parsed:
7171
7272
```c
73-
cypher_parser_context *ctx = cypher_parser_create(query);
74-
ast_node *ast = cypher_parse(ctx);
73+
cypher_parse_result *parse_result = parse_cypher_query_ext(query);
74+
ast_node *ast = parse_result->root;
7575
```
7676

7777
### 3. Pattern Dispatch
@@ -149,7 +149,8 @@ int sqlite3_graphqlite_init(
149149
) {
150150
SQLITE_EXTENSION_INIT2(pApi);
151151
create_graph_schema(db);
152-
sqlite3_create_function(db, "cypher", -1, SQLITE_UTF8, db, cypher_func, 0, 0);
152+
sqlite3_create_function(db, "cypher", -1, SQLITE_UTF8, 0,
153+
graphqlite_cypher_func, 0, 0);
153154
return SQLITE_OK;
154155
}
155156
```

0 commit comments

Comments
 (0)