-
Notifications
You must be signed in to change notification settings - Fork 6
Schema split #401
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
base: develop
Are you sure you want to change the base?
Schema split #401
Conversation
|
Finally it's seems ready to me. Off course there is still TODOs, but tests could be run on this branch and bugs found by initial testing would be fixed. |
Make class identity protected. Reload remote class after modification. Fix typo in acquiring write lock.
| LazySchemaClass cls = classesRefs.get(normalizeClassName(iClassName)); | ||
| if (cls != null) { | ||
| return cls; | ||
| if (cls.isLoaded()) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This could be simplified to if (!cls.isLoaded()){load()}; return cls.getDelegate();
...main/java/com/jetbrains/youtrack/db/internal/client/remote/metadata/schema/SchemaRemote.java
Outdated
Show resolved
Hide resolved
| } | ||
| entity.field("properties", props, PropertyType.EMBEDDEDSET); | ||
| public EntityImpl toStream(DatabaseSessionInternal db) { | ||
| acquireSchemaWriteLock(db); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think we can lower this to readlock like in the schema. We are not updating the class here, just writing it to the db.
core/src/main/java/com/jetbrains/youtrack/db/internal/core/metadata/schema/SchemaShared.java
Outdated
Show resolved
Hide resolved
| } | ||
| } | ||
|
|
||
| public Collection<SchemaClass> getClasses(DatabaseSessionInternal database) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I should've renamed this one back to getClasses. This was pushed by accident.
| } else if (projValue instanceof Iterable) { | ||
| //noinspection unchecked | ||
| return ExecutionStream.iterator(((Iterable<Object>) projValue).iterator()); | ||
| } else if (projValue instanceof Map) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This should be redone, but it's weird we don't have map support on the output.
|
|
||
| private String queryShortName() { | ||
| String selectShortNameSQL = | ||
| "select shortName from ( select expand(classes) from metadata:schema )" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@andrii0lomakin this one brakes backward compatibility for schema query.
It used to be expand(classes), but now it's expand(classesRefs.values()) which returns not classes, but their ids.
Do we need to restore this functionality by extending our sql engine to handle this case separately or we can deprecate access to metadata:schema.classes?
I can't decide it myself yet, since it's a pretty much an arhitectural decision.
.../java/com/jetbrains/youtrack/db/internal/core/metadata/schema/SchemaSharedClassReadTest.java
Outdated
Show resolved
Hide resolved
| database | ||
| .command( | ||
| new SQLSynchQuery<EntityImpl>("select expand(classes) from metadata:schema")) | ||
| new SQLSynchQuery<EntityImpl>("select expand(classesRefs) from metadata:schema")) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@andrii0lomakin Same question here, should we fix by tweaking sql engine or is it fine to break backward compatibility?
Add toString for lazy class. Store parent and subclasses as sets, not lists. Init base classes eagerly. Move inheritance management on class level, not on schema level.
Ignore test dependent on metadata push. Move class loading to one level of inheritance higher, it seemed to me to be the same in all subclasses. Unload remote class when it's dirty.
…ty linked classes. Invalidate all classes when remote schema metadata needs reload.
# Conflicts: # client/src/main/java/com/jetbrains/youtrack/db/internal/client/remote/message/BeginTransaction38Request.java # client/src/main/java/com/jetbrains/youtrack/db/internal/client/remote/message/CommandResponse.java # client/src/main/java/com/jetbrains/youtrack/db/internal/client/remote/message/Commit38Request.java # client/src/main/java/com/jetbrains/youtrack/db/internal/client/remote/message/FetchTransaction38Response.java # client/src/main/java/com/jetbrains/youtrack/db/internal/client/remote/metadata/schema/SchemaClassRemote.java # client/src/main/java/com/jetbrains/youtrack/db/internal/client/remote/metadata/schema/SchemaPropertyRemote.java # client/src/main/java/com/jetbrains/youtrack/db/internal/client/remote/metadata/schema/SchemaRemote.java # core/src/main/java/com/jetbrains/youtrack/db/api/record/Edge.java # core/src/main/java/com/jetbrains/youtrack/db/api/schema/Schema.java # core/src/main/java/com/jetbrains/youtrack/db/api/schema/SchemaClass.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/command/traverse/TraverseRecordProcess.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/db/DatabaseSessionAbstract.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/db/DatabaseSessionEmbedded.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/db/EntityFieldWalker.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/db/record/ClassTrigger.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/db/tool/DatabaseCompare.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/db/tool/DatabaseExport.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/db/tool/DatabaseImport.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/db/tool/GraphRepair.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/hook/DocumentHookAbstract.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/index/IndexDefinitionFactory.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/index/IndexInternal.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/index/IndexManagerShared.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/iterator/RecordIteratorClass.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/metadata/function/FunctionLibraryImpl.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/metadata/schema/ImmutableSchema.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/metadata/schema/ImmutableSchemaProperty.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/metadata/schema/SchemaClassEmbedded.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/metadata/schema/SchemaClassImpl.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/metadata/schema/SchemaEmbedded.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/metadata/schema/SchemaImmutableClass.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/metadata/schema/SchemaPropertyEmbedded.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/metadata/schema/SchemaPropertyImpl.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/metadata/schema/SchemaProxy.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/metadata/schema/SchemaShared.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/metadata/security/SecurityEngine.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/metadata/security/SecurityShared.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/record/RecordAbstract.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/record/impl/EdgeDelegate.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/record/impl/EdgeEntityImpl.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/record/impl/EdgeIterator.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/record/impl/EntityImpl.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/record/impl/VertexEntityImpl.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/record/impl/VertexInternal.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/serialization/serializer/record/binary/DocumentSerializerDelta.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/serialization/serializer/record/binary/EntitySerializer.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/serialization/serializer/record/binary/HelperClasses.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/serialization/serializer/record/binary/RecordSerializerBinaryV0.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/serialization/serializer/record/binary/RecordSerializerBinaryV1.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/serialization/serializer/record/binary/RecordSerializerNetworkV0.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/serialization/serializer/record/binary/RecordSerializerNetworkV37.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/serialization/serializer/record/string/RecordSerializerCSVAbstract.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/serialization/serializer/record/string/RecordSerializerJSON.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/serialization/serializer/record/string/RecordSerializerSchemaAware2CSV.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/sql/ChainedIndexProxy.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/sql/CommandExecutorSQLAlterClass.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/sql/CommandExecutorSQLAlterProperty.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/sql/CommandExecutorSQLCreateClass.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/sql/CommandExecutorSQLCreateEdge.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/sql/CommandExecutorSQLCreateIndex.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/sql/CommandExecutorSQLCreateLink.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/sql/CommandExecutorSQLCreateProperty.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/sql/CommandExecutorSQLCreateVertex.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/sql/CommandExecutorSQLDelete.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/sql/CommandExecutorSQLDropClass.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/sql/CommandExecutorSQLDropProperty.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/sql/CommandExecutorSQLInsert.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/sql/CommandExecutorSQLLiveSelect.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/sql/CommandExecutorSQLMoveVertex.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/sql/CommandExecutorSQLResultsetAbstract.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/sql/CommandExecutorSQLSelect.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/sql/CommandExecutorSQLSetAware.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/sql/CommandExecutorSQLTruncateClass.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/sql/CommandExecutorSQLUpdate.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/sql/FilterAnalyzer.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/sql/SQLHelper.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/sql/executor/CheckClassTypeStep.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/sql/executor/CheckRecordTypeStep.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/sql/executor/CheckSafeDeleteStep.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/sql/executor/ExpandStep.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/sql/executor/FetchEdgesFromToVerticesStep.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/sql/executor/FetchEdgesToVerticesStep.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/sql/executor/FilterByClassStep.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/sql/executor/InsertValuesStep.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/sql/executor/LiveQueryListenerImpl.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/sql/executor/MatchEdgeTraverser.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/sql/executor/MatchExecutionPlanner.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/sql/executor/RemoveEdgePointersStep.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/sql/executor/ResultInternal.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/sql/executor/SelectExecutionPlanner.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/sql/executor/UpdateContentStep.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/sql/executor/UpdateEdgePointersStep.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/sql/executor/metadata/ClassIndexFinder.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/sql/filter/SQLFilterCondition.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/sql/filter/SQLFilterItemAbstract.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/sql/filter/SQLFilterItemField.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/sql/filter/SQLFilterItemFieldMultiAbstract.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/sql/functions/coll/SQLFunctionTraversedElement.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/sql/operator/QueryOperatorContains.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/sql/operator/QueryOperatorContainsValue.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/sql/operator/QueryOperatorInstanceof.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/sql/parser/SQLAlterClassStatement.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/sql/parser/SQLAlterPropertyStatement.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/sql/parser/SQLBaseExpression.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/sql/parser/SQLBaseIdentifier.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/sql/parser/SQLBinaryCondition.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/sql/parser/SQLContainsAnyCondition.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/sql/parser/SQLCreateIndexStatement.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/sql/parser/SQLCreateLinkStatement.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/sql/parser/SQLDropClassStatement.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/sql/parser/SQLMatchPathItem.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/sql/parser/SQLMatchStatement.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/sql/parser/SQLModifier.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/sql/parser/SQLSuffixIdentifier.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/sql/parser/SQLTruncateClassStatement.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/sql/parser/SQLUpdateItem.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/tx/FrontendTransactionDataChange.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/tx/TransactionOptimistic.java # core/src/test/java/com/jetbrains/youtrack/db/internal/core/db/DatabaseDocumentTxTest.java # core/src/test/java/com/jetbrains/youtrack/db/internal/core/db/tool/DatabaseImportTest.java # core/src/test/java/com/jetbrains/youtrack/db/internal/core/db/tool/TestSchemaImportExport.java # core/src/test/java/com/jetbrains/youtrack/db/internal/core/metadata/ClassTest.java # core/src/test/java/com/jetbrains/youtrack/db/internal/core/metadata/schema/AlterSchemaPropertyTest.java # core/src/test/java/com/jetbrains/youtrack/db/internal/core/metadata/schema/AlterSuperclassTest.java # core/src/test/java/com/jetbrains/youtrack/db/internal/core/metadata/schema/SchemaClassImplTest.java # core/src/test/java/com/jetbrains/youtrack/db/internal/core/metadata/schema/TestMultiSuperClasses.java # core/src/test/java/com/jetbrains/youtrack/db/internal/core/record/impl/EntitySerializerDeltaTest.java # core/src/test/java/com/jetbrains/youtrack/db/internal/core/sql/CommandExecutorSQLCreateSchemaPropertyTest.java # core/src/test/java/com/jetbrains/youtrack/db/internal/core/sql/CommandExecutorSQLDropSchemaPropertyTest.java # core/src/test/java/com/jetbrains/youtrack/db/internal/core/sql/CommandExecutorSQLSelectTest.java # core/src/test/java/com/jetbrains/youtrack/db/internal/core/sql/CommandExecutorSQLTruncateTest.java # core/src/test/java/com/jetbrains/youtrack/db/internal/core/sql/executor/AlterClassStatementExecutionTest.java # core/src/test/java/com/jetbrains/youtrack/db/internal/core/sql/executor/CheckSafeDeleteStepTest.java # core/src/test/java/com/jetbrains/youtrack/db/internal/core/sql/executor/CreateSchemaPropertyStatementExecutionTest.java # core/src/test/java/com/jetbrains/youtrack/db/internal/core/sql/executor/DropSchemaPropertyStatementExecutionTest.java # core/src/test/java/com/jetbrains/youtrack/db/internal/core/sql/executor/SelectStatementExecutionTest.java # jdbc/src/main/java/com/jetbrains/youtrack/db/internal/jdbc/YouTrackDbJdbcDatabaseMetaData.java # jdbc/src/main/java/com/jetbrains/youtrack/db/internal/jdbc/YouTrackDbJdbcResultSet.java # jdbc/src/main/java/com/jetbrains/youtrack/db/internal/jdbc/YouTrackDbJdbcResultSetMetaData.java # jdbc/src/test/java/com/jetbrains/youtrack/db/internal/jdbc/YouTrackDbJdbcStatementDMLtest.java # lucene/src/main/java/com/jetbrains/youtrack/db/internal/lucene/engine/LuceneIndexEngineAbstract.java # lucene/src/main/java/com/jetbrains/youtrack/db/internal/lucene/operator/LuceneOperatorUtil.java # lucene/src/main/java/com/jetbrains/youtrack/db/internal/lucene/operator/LuceneTextOperator.java # lucene/src/main/java/com/jetbrains/youtrack/db/internal/spatial/factory/SpatialStrategyFactory.java # lucene/src/test/java/com/jetbrains/youtrack/db/internal/lucene/integration/LuceneCreateIndexIntegrationTest.java # security/src/main/java/com/jetbrains/youtrack/db/internal/security/auditing/AuditingHook.java # server/src/main/java/com/jetbrains/youtrack/db/internal/server/network/protocol/http/command/delete/ServerCommandDeleteDocument.java # server/src/main/java/com/jetbrains/youtrack/db/internal/server/network/protocol/http/command/get/ServerCommandGetDatabase.java # server/src/main/java/com/jetbrains/youtrack/db/internal/server/network/protocol/http/command/post/ServerCommandPostDatabase.java # server/src/test/java/com/jetbrains/youtrack/db/internal/server/DBSequenceRemoteTest.java # tests/src/test/java/com/jetbrains/youtrack/db/auto/BaseDBTest.java # tests/src/test/java/com/jetbrains/youtrack/db/auto/CRUDDocumentPhysicalTest.java # tests/src/test/java/com/jetbrains/youtrack/db/auto/CRUDInheritanceTest.java # tests/src/test/java/com/jetbrains/youtrack/db/auto/CollateTest.java # tests/src/test/java/com/jetbrains/youtrack/db/auto/FetchPlanComplexNestedLevelsTest.java # tests/src/test/java/com/jetbrains/youtrack/db/auto/GraphDatabaseTest.java # tests/src/test/java/com/jetbrains/youtrack/db/auto/IndexTest.java # tests/src/test/java/com/jetbrains/youtrack/db/auto/SQLCommandsTest.java # tests/src/test/java/com/jetbrains/youtrack/db/auto/SQLInsertTest.java # tests/src/test/java/com/jetbrains/youtrack/db/auto/SQLMetadataTest.java # tests/src/test/java/com/jetbrains/youtrack/db/auto/SQLSelectHashIndexReuseTest.java # tests/src/test/java/com/jetbrains/youtrack/db/auto/SQLSelectIndexReuseTest.java # tests/src/test/java/com/jetbrains/youtrack/db/auto/SQLSelectTest.java # tests/src/test/java/com/jetbrains/youtrack/db/auto/SQLSelectTestNew.java # tests/src/test/java/com/jetbrains/youtrack/db/auto/SQLUpdateTest.java # tests/src/test/java/com/jetbrains/youtrack/db/auto/SchemaPropertyIndexTest.java # tests/src/test/java/com/jetbrains/youtrack/db/auto/SchemaTest.java # tests/src/test/java/com/jetbrains/youtrack/db/auto/TransactionAtomicTest.java # tests/src/test/java/com/jetbrains/youtrack/db/auto/TransactionConsistencyTest.java # tests/src/test/java/com/jetbrains/youtrack/db/auto/embedded-test-db-from-scratch.xml # tools/src/main/java/com/jetbrains/youtrack/db/internal/tools/console/ConsoleDatabaseApp.java
# Conflicts: # client/src/main/java/com/jetbrains/youtrack/db/internal/client/remote/metadata/schema/SchemaClassRemote.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/metadata/schema/SchemaClassEmbedded.java
…y a mistake). Fix more merge conflicts. Join current transaction when loading lazy classes. Make lazy classes loaded by default if they are created from template(there is no information about such classes in storage).
Rename reference to metadata:classes to metadata:classesRefs in sql. Do not create schema snapshot for transactions on system collections. Rename addBaseClass to addSubClass.
…same reason. Split class init and inheritance init on the full init stage. Remove loading flag. Do not load system collections(fix for remote mode). Remove inheritance information when class has been unloaded.(Dirty field causes issues when reinitializing)
Restore ignored tests.
# Conflicts: # client/src/main/java/com/jetbrains/youtrack/db/internal/client/remote/db/SharedContextRemote.java # client/src/main/java/com/jetbrains/youtrack/db/internal/client/remote/metadata/schema/SchemaClassRemote.java # client/src/main/java/com/jetbrains/youtrack/db/internal/client/remote/metadata/schema/SchemaRemote.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/db/DatabaseSessionAbstract.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/metadata/schema/ImmutableSchema.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/metadata/schema/SchemaClassEmbedded.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/metadata/schema/SchemaClassImpl.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/metadata/schema/SchemaEmbedded.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/metadata/schema/SchemaPropertyImpl.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/metadata/schema/SchemaShared.java # tests/src/test/java/com/jetbrains/youtrack/db/auto/DbImportExportTest.java
# Conflicts: # client/src/main/java/com/jetbrains/youtrack/db/internal/client/remote/metadata/schema/SchemaPropertyRemote.java # core/src/main/java/com/jetbrains/youtrack/db/internal/core/metadata/schema/SchemaClassImpl.java
# Conflicts: # core/src/main/java/com/jetbrains/youtrackdb/api/schema/Schema.java # core/src/main/java/com/jetbrains/youtrackdb/internal/common/collection/BitSetMap.java # core/src/main/java/com/jetbrains/youtrackdb/internal/core/metadata/schema/LazySchemaClass.java # core/src/main/java/com/jetbrains/youtrackdb/internal/core/metadata/schema/SchemaClassEmbedded.java # core/src/main/java/com/jetbrains/youtrackdb/internal/core/metadata/schema/SchemaClassImpl.java # core/src/main/java/com/jetbrains/youtrackdb/internal/core/metadata/schema/SchemaProxy.java # core/src/main/java/com/jetbrains/youtrackdb/internal/core/sql/parser/SQLCreatePropertyStatement.java # core/src/test/java/com/jetbrains/youtrackdb/internal/common/collection/BitSetMapTest.java # core/src/test/java/com/jetbrains/youtrackdb/internal/core/db/tool/DatabaseImportTest.java # core/src/test/java/com/jetbrains/youtrackdb/internal/core/metadata/schema/LazySchemaClassTest.java # core/src/test/java/com/jetbrains/youtrackdb/internal/core/metadata/schema/SchemaClassEmbeddedMockTest.java # core/src/test/java/com/jetbrains/youtrackdb/internal/core/metadata/schema/SchemaClassEmbeddedTest.java # core/src/test/java/com/jetbrains/youtrackdb/internal/core/metadata/schema/SchemaSharedClassReadTest.java
Here I introduce new field named classesRefs for schema which will eventually replace classes.
The idea is to store each schema class separately so update to one class would not lead to overwrite to the whole schema.
Next steps would be to gradually replace classes with classesRefs. I will update this description when it's ok to merge.
Thank you for your review.
We have a Slack chat for contributors. If you wish to join, please read this article.