-
Notifications
You must be signed in to change notification settings - Fork 15
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Extract jacodb-storage module #271
Merged
Merged
Conversation
This file contains 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
[jacodb-storage] Extract jacodb-api-storage module The jacodb-api-storage module depends on jacodb-api-common. The jacodb-api-jvm module depends on jacodb-api-common & jacodb-api-storage. [jacodb-storage] Fix review points: remove EntityRelationshipStorage.asReadWrite [jacodb-storage] Fix review points: setImmutable() waits for background jobs [jacodb-storage] Minor: remove some comments [jacodb-storage] Minor: rename [jacodb-api, jacodb-core] Add ability to set persistence and database to immutable state Got rid of the JcDatabase.classpathOf() method. [jacodb-storage] Add navigation over AttributesImmutable In implementation of AttributesImmutable, AttributesCursor added for navigation in attribute values. It is used in PropertiesImmutable for searching by property value and for searching in a range of values. AttributesCursorEntityIterable added as a lazy implementation of EntityIterable atop of AttributesCursor. More test cases added. [jacodb-storage] Generate and add SparseBitSetTest [jacodb-core] Extract ERS API implementations to module jacodb-storage All EntityRelationshipStorage implementations, except SqlEntityRelationshipStorageSPI, moved to the jacodb-storage module. Extra minor refactoring are done in order to de-couple dependencies. [jacodb-core] Get rid of unnecessary extra check if instanceIds are sorted [jacodb-core] Add first version of RAMDataContainerImmutable RAMDataContainerImmutable is intended as a data container for RAMEntityRelationshipStorage saving data in a compact format with high data locality using large arrays. Auxiliary refactorings: - EntityIdSet is obsolete; - EntityIdCollectionEntityIterable is obsolete, as it is replaced with InstanceIdCollectionEntityIterable everywhere; - SparseBitSet added for compact bitsets; - ByteArray.asComparable() added; - ERS API: Transaction.getEntityUnsafe(id) added. TODO: provide PropertiesImmutable with property value indices and use then in find*() methods. Currently, find*() methods use brute force search. [build] Add facilities to deal with read-only state of storages For EntityRelationshipStorage, added ability to get read-only & read/write snapshots of the storage. By default, they do nothing. In PluggableKeyValueStorage, added property allowing to switch to read-only mode and back to read/write mode. It has non-trivial implementation only in XodusKeyValueStorage. [build] For tests, set JVM target to that the build is being run under This change allows to run tests against examples compiled for different JVM targets whereas main artifacts are still being compiled for Java 1.8. Both Java and Kotlin configured. We have to compile test fixtures for 1.8 as well since Gradle considers them as dependencies of main artifacts. [jacodb-core] Update Kotlin to version 2.0.20 As of this commit, Kotlin metadata version is equal to Kotlin version. Refactored Kotlin metadata classes' usages as they live in the new package. Fixed nullability issues with Kotlin class types appeared due to lack of corresponding JB annotations since Kotlin 2.0.0. Extension functions declared in the Nullables.kt moved from the jacodb-api-jvm module to the jacodb-core one. [jacodb-core] Fix running benchmarks with ERS persistence using pluggable K/V storages [jacodb-core] Process Class-Path attribute of jar manifest As of this commit, classpath is not only set of jar files and build directories, but also a set of references to jar files calculated using "Class-Path" attribute in manifest of any jar file.
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.
[jacodb-storage] Extract jacodb-api-storage module
The jacodb-api-storage module depends on jacodb-api-common. The jacodb-api-jvm module depends on jacodb-api-common & jacodb-api-storage.
[jacodb-storage] Fix review points: remove EntityRelationshipStorage.asReadWrite
[jacodb-storage] Fix review points: setImmutable() waits for background jobs
[jacodb-storage] Minor: remove some comments
[jacodb-storage] Minor: rename
[jacodb-api, jacodb-core] Add ability to set persistence and database to immutable state
Got rid of the JcDatabase.classpathOf() method.
[jacodb-storage] Add navigation over AttributesImmutable
In implementation of AttributesImmutable, AttributesCursor added for navigation in attribute values. It is used in PropertiesImmutable for searching by property value and for searching in a range of values. AttributesCursorEntityIterable added as a lazy implementation of EntityIterable atop of AttributesCursor.
More test cases added.
[jacodb-storage] Generate and add SparseBitSetTest
[jacodb-core] Extract ERS API implementations to module jacodb-storage
All EntityRelationshipStorage implementations, except SqlEntityRelationshipStorageSPI, moved to the jacodb-storage module. Extra minor refactoring are done in order to de-couple dependencies.
[jacodb-core] Get rid of unnecessary extra check if instanceIds are sorted
[jacodb-core] Add first version of RAMDataContainerImmutable
RAMDataContainerImmutable is intended as a data container for RAMEntityRelationshipStorage saving data in a compact format with high data locality using large arrays.
Auxiliary refactorings:
TODO: provide PropertiesImmutable with property value indices and use then in find*() methods. Currently, find*() methods use brute force search.
[build] Add facilities to deal with read-only state of storages
For EntityRelationshipStorage, added ability to get read-only & read/write snapshots of the storage. By default, they do nothing.
In PluggableKeyValueStorage, added property allowing to switch to read-only mode and back to read/write mode. It has non-trivial implementation only in XodusKeyValueStorage.
[build] For tests, set JVM target to that the build is being run under
This change allows to run tests against examples compiled for different JVM targets whereas main artifacts are still being compiled for Java 1.8. Both Java and Kotlin configured. We have to compile test fixtures for 1.8 as well since Gradle considers them as dependencies of main artifacts.
[jacodb-core] Update Kotlin to version 2.0.20
As of this commit, Kotlin metadata version is equal to Kotlin version. Refactored Kotlin metadata classes' usages as they live in the new package.
Fixed nullability issues with Kotlin class types appeared due to lack of corresponding JB annotations since Kotlin 2.0.0. Extension functions declared in the Nullables.kt moved from the jacodb-api-jvm module to the jacodb-core one.
[jacodb-core] Fix running benchmarks with ERS persistence using pluggable K/V storages
[jacodb-core] Process Class-Path attribute of jar manifest
As of this commit, classpath is not only set of jar files and build directories, but also a set of references to jar files calculated using "Class-Path" attribute in manifest of any jar file.