Community
Participate
Working Groups
Traditionally the main purpose of CDOIDMeta was to enable users to include EModelElements into their object graphs. Later we introduced external references and it turns out that not only CDOIDExternal can provide the same functionality as CDOIDMeta, worse, the framework already uses them for this purpose. In other words, CDOIDMeta instances are not created/transfered/stored/used anywhere anymore. I found that out by accident when I was trying to estimate the impact of removing CDOIDMeta. In a minute I'll attach a patch that actually removes the entire concept of Meta IDs, including changes to all stores, that used to support them in a special way. Store responsibles, please review my changes carefully and make sure that all your tests are passing!!! The bad news is that the DBStore and the ObjectivityStore make additional use of the Meta IDs for internal purposes: 1) ObjectivityStore seems to use them to implement FeatureMapEntry.getFeature(). Ibe, I guess you can fix that easily?! 2) DBStore uses them - to implement CDORevision.getEClass() - for unambiguation of table and column names - possibly for other purposes (feature maps?, object type table?, ...) Stefan, I think this is an excellent opportunity to finally implement a mechanism that persists the names initially mapped by the various strategies. Please let us discuss the details. The whole patch is pretty big and impacting. I don't want to have it around for too long.
Created attachment 185475 [details] Patch v1
Created attachment 185476 [details] Patch v2
Created attachment 185503 [details] Patch-v3 DBStore changed to a different implementation of meta ids. MetaIDs are now mapped as external IDs (with URIs). Testcases for H2Branching work (with the exception of FeatureMapTests). Other strategies and databases have to be tested yet. This patch contains a performance issue, because the externalReferenceManager does not cache URI-ID-Mappings. A cache should be added here.
(In reply to comment #3) > DBStore changed to a different implementation of meta ids. > MetaIDs are now mapped as external IDs (with URIs). Thx! > This patch contains a performance issue, because the externalReferenceManager > does not cache URI-ID-Mappings. A cache should be added here. I'll care for it...
Created attachment 185521 [details] Patch v4 Caching added to MetaDataManager
Created attachment 185524 [details] Patch v5 - for future reference added clearing of cache on rollback
Committed patch v5 to HEAD. Assigning to Ibe for ObjectivityStore adjustment...
Fixed the objyectivityStore code. Checked in head. committed in trunk rev. 6973 org.eclipse.emf.cdo.sever.internal.objectivity.schema.ObjyFeatureMapEntry.java committed in trunk rev. 6974 org.eclipse.emf.cdo.sever.internal.objectivity.db.ObjyObject.java [That could've been one commit instead of two]
Available in R20110608-1407