v0.2.0: query ergonomics, mutation wrappers, performance improvements, and real-world example#9
Conversation
improvements
- add object-based where({ ... }) with strict TypeScript typing
- add updateMany() and deleteMany() as table-level mutation wrappers
- add filter(fn) as full-scan escape hatch (no index usage)
- add optional onQuery hook for lightweight query instrumentation
- preserve existing tuple where() and mutation APIs (no breaking
changes)
- enforce strict operator typing per column type (numeric, boolean,
dictionary)
- add COLQL_INVALID_PREDICATE error for invalid object predicates
- stabilize insertMany() behavior and reduce unnecessary overhead
- optimize query execution hot paths (remove regression, improve scan
performance)
- update documentation for new APIs and behaviors
- ensure full test coverage for new features and type inference
no breaking changes
tests - add Fastify example demonstrating ColQL v0.2.0 in a real backend - seed up to 1M in-memory rows for realistic usage scenarios - add cold start + mutation validation: - updateMany / deleteMany / insertMany after large seed - verify query correctness and index rebuild behavior - add latency validation scripts: - structured queries (indexed) - range queries - broad scan queries - filter(fn) full-scan scenarios - add filter(fn) worst-case test on large dataset - add basic concurrent stress test (50 parallel requests) - validate consistency and error-free responses - add memory usage checks using process.memoryUsage() - add example-specific scripts: - test:large - stress - memory:example - update example README with usage and validation instructions no changes to core ColQL behavior
- document indexes as derived performance structures - clarify planner choices affect performance only, not results - document dirty index rebuild-before-use guarantee - clarify rowIndex/row positions are not stable external IDs - align equality, sorted index, serialization, memory, and mutation docs - clarify filter(fn) ordering and index behavior
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
🚀 v0.2.0 Release
This release focuses on developer experience, usability, and real-world validation without changing the core architecture.
ColQL is now validated with a real backend setup and large dataset scenarios.
✨ Highlights
🔍 Query Ergonomics
table.where({ age: { gt: 25 }, country: "TR" })🔁 Mutations
updateMany(predicate, partial)deleteMany(predicate)🧠 Query Execution
filter(fn)as a full-scan escape hatch:📊 Observability
onQueryhook for lightweight query instrumentation⚡ Performance
1M rows (Fastify example)
🧪 Real-World Validation
Added a Fastify backend example with:
📚 Documentation
🔒 Guarantees
rowIndexis not a stable identifier📦 Notes
filter(fn)is intentionally full-scan and should be used selectivelyFeedback is very welcome 🙌