Before this goes into another db abstraction discussion, I would
like to point out that the ACS/OpenACS shared viewpoint now is
that true abstraction isn't going to happen (we've had a couple of
meetings about this). SQL is already supposed to *be* an
abstraction, and it's not implemented in a standard way from
RDBMS to RDBMS. In terms of switching the SQL depending on
what DB is being used, that is an issue being discussed in
a
separate thread.
The important point Peter raises here is the idea of "fat binary"
APMs for OpenACS/ACS. I *absolutely* would like to see this
happen in a way that is hopefully backwards compatible with
current APM packages (for ACS classic). Basically, the package
manager should be able to say "I am running on Postgres, and
this package does have Postgres compatibility, so let me set up
the Postgres data-model for it" and same thing with the same
"fat binary" APM, but Oracle. We assume that a package that
declares being Oracle *and* Postgres compatible will have both
sets of data model files, and will follow whatever convention we
come up with for replacing queries for one DB with queries for
the other.
Backwards-compatibility, again, would be great. This means that
while OpenACS would implement a slightly augmented,
RDBMS-aware package manager, ACS Classic could look at a
fat binary package and still find the correct Oracle data model
files and all. This could be tricky, but is worth the effort to get
single APMs.
Peter, since you and your team have looked at APMs already, can
you propose a solution to this? Basically,