Community
Participate
Working Groups
Currently a lot of DB code uses the static IDBTable fields on the singleton... but not all, because some system tables depend on the result of store.getIDHandler().getDBType() for their initialization, and so they can't be initialized as static fields on the singleton. In order to eliminate this inconsistency, we should eliminate the singleton, and instead instantiate a CDODBSchema for a specific DBType.
Created attachment 202783 [details] Patch v1 This patch is incomplete, but it covers a lot of the extensive (but straightforward) textual changes, i.e. using the store-specific schema instance instead of the global CDODBSchema.INSTANCE. This compiles but perhaps it's all wrong; I just discovered that the DBStore's schema is not a CDODBSchema, but yet another one :-(
Thanks, Caspar, for your work. I have started working on something similar a few months back, but had to time to complete it. I followed along the same lines as you (DBSchema wired to DBStore etc.). However, what I see from your patch is that you still have a "central" INSTANCE in CDODBSchema. I would suggest to remove this as well and create a dedicated constructor which initializes the schema when the CDODBSchema is added to the DBStore. This way we can have several DBStores, each one with its own instance of CDODBSchema. The next step would be to make CDODBSchema dependent on the DBAdapter, which is needed to handle reserved words (e.g. by quoting them correctly). As a heads up: this is related to Bug 306356 and to Bug 344232.
Moving all open issues to 4.2. Open bugs can be ported to 4.1 maintenance after they've been fixed in master.
We'll try to address open problems in 4.3 (master) first and then port fixes back to 4.2.
Moving all open bugzillas to 4.5.
Moving all unaddressed bugzillas to 4.6.
Moving all open bugs to 4.7
Moving all unresolved issues to version 4.8-
Moving all unresolved issues to version 4.9
Moving to 4.13.