v0.5.0 Release
🎉 Introducing DefraDB v0.5: Open Source Release 🎉
We are excited to announce the release of DefraDB v0.5, a major pre-production milestone for our user-centric database that prioritizes data ownership, personal privacy, and information security. This release marks the first open-source release for DefraDB and includes significant quality of life improvements, bug fixes, and overall cleanliness of the repo, making it ready for public testing and use.
Key Features:
- First iteration of our schema update system, enabling developers to add new fields to schemas using our JSON Patch based DDL
- New DAG based delete system that persists "soft-delete" ops into the CRDT Merkle DAG
- Early prototype for collection-level peer-to-peer synchronization
Important Notice:
This release includes a Breaking Change for existing v0.4.x databases. If you need assistance migrating an existing deployment, please contact us at [email protected] or join our Discord at https://discord.source.network/.
Explore the Release:
For a complete outline of the changes and updates, check out the official changelog above. We encourage you to try DefraDB v0.5 and provide feedback as we continue to develop this innovative solution for decentralized data and access-control management, user-centric apps, data trustworthiness, and more. Your input is invaluable in helping us shape the future of DefraDB and the Source technologies!
Get started with DefraDB v0.5 now!
You can find the full changelog below:
Features
- Add document delete mechanics (#1263)
- Ability to explain an executed request (#1188)
- Add SchemaPatch CLI command (#1250)
- Add support for one-one mutation from sec. side (#1247)
- Store only key in DAG instead of dockey path (#1245)
- Add collectionId field to commit field (#1235)
- Add field kind substitution for PatchSchema (#1223)
- Add dockey field for commit field (#1216)
- Allow new fields to be added locally to schema (#1139)
- Add
like
sub-string filter (#1091) - Add ability for P2P to wait for pushlog by peer (#1098)
- Add P2P collection topic subscription (#1086)
- Add support for schema version id in queries (#1067)
- Add schema version id to commit queries (#1061)
- Persist schema version at time of commit (#1055)
- Add ability to input simple explain type arg (#1039)
Fixes
- API address parameter validation (#1311)
- Improve error message for NonNull GQL types (#1333)
- Handle panics in the rpc server (#1330)
- Handle returned error in select.go (#1329)
- Resolve handful of CLI issues (#1318)
- Only check for events queue on subscription request (#1326)
- Remove client Create/UpdateCollection (#1309)
- CLI to display specific command usage help (#1314)
- Fix P2P collection CLI commands (#1295)
- Dont double up badger file path (#1299)
- Update immutable package (#1290)
- Fix panic on success of Add/RemoveP2PCollections (#1297)
- Fix deadlock on memory-datastore Close (#1273)
- Determine if query is introspection query (#1255)
- Allow newly added fields to sync via p2p (#1226)
- Expose
ExplainEnum
in the GQL schema (#1204) - Resolve aggregates' mapping with deep nested subtypes (#1175)
- Make sort stable and handle nil comparison (#1094)
- Change successful schema add status to 200 (#1106)
- Add delay in P2P test util execution (#1093)
- Ensure errors test don't hard expect folder name (#1072)
- Remove potential P2P deadlock (#1056)
- Rework the P2P integration tests (#989)
- Improve DAG sync with highly concurrent updates (#1031)
Documentation
- Update docs for the v0.5 release (#1320)
- Document client interfaces in client/db.go (#1305)
- Document client Description types (#1307)
- Improve security policy (#1240)
- Add security disclosure policy (#1194)
- Correct commits query example in readme (#1172)
Refactoring
- Improve p2p collection operations on peer (#1286)
- Migrate gql introspection tests to new framework (#1211)
- Reorganise client transaction related interfaces (#1180)
- Config-local viper, rootdir, and logger parsing (#1132)
- Migrate mutation-relation tests to new framework (#1109)
- Rework integration test framework (#1089)
- Generate gql types using col. desc (#1080)
- Extract config errors to dedicated file (#1107)
- Change terminology from query to request (#1054)
- Allow db keys to handle multiple schema versions (#1026)
- Extract query schema errors to dedicated file (#1037)
- Extract planner errors to dedicated file (#1034)
- Extract query parser errors to dedicated file (#1035)
Testing
- Remove test reference to DEFRA_ROOTDIR env var (#1328)
- Expand tests for Peer subscribe actions (#1287)
- Fix flaky TestCloseThroughContext test (#1265)
- Add gql introspection tests for patch schema (#1219)
- Explicitly state change detector split for test (#1228)
- Add test for successful one-one create mutation (#1215)
- Ensure that all databases are always closed on exit (#1187)
- Add P2P tests for Schema Update adding field (#1182)
- Migrate P2P/state tests to new framework (#1160)
- Remove sleep from subscription tests (#1156)
- Fetch documents on test execution start (#1163)
- Introduce basic testing for the
version
module (#1111) - Boost test coverage for collection_update (#1050)
- Wait between P2P update retry attempts (#1052)
- Exclude auto-generated protobuf files from codecov (#1048)
- Add P2P tests for relational docs (#1042)
Continuous integration
- Add workflow that builds DefraDB AMI upon tag push (#1304)
- Allow PR title to end with a capital letter (#1291)
- Changes for
dependabot
to be well-behaved (#1165) - Skip benchmarks for dependabot (#1144)
- Add workflow to ensure deps build properly (#1078)
- Runner and Builder Containerfiles (#951)
- Fix go-header linter rule to be any year (#1021)
Chore
- Add Islam as contributor (#1302)
- Update go-libp2p to 0.26.4 (#1257)
- Improve the test coverage of datastore (#1203)
- Add issue and discussion templates (#1193)
- Bump libp2p/go-libp2p-kad-dht from 0.21.0 to 0.21.1 (#1146)
- Enable dependabot (#1120)
- Update
opentelemetry
dependencies (#1114) - Update dependencies including go-ipfs (#1112)
- Bump to GoLang v1.19 (#818)
- Remove versionedScan node (#1049)