Evan Prodromou wrote:
I guess I'm mainly worried that this huge change
was made without
considering other options. There wasn't any discussion on this list that
I can find, and the change isn't documented on meta, AFAICT. Publishing
design decisions can be a good way to avoid second-guessing by people
like me after the code is written.
What huge change? Like Brion said, DatabaseFunctions.php has existed
since the dawn of time. I switched it to OOP to support multiple
connections, I probably announced that in a post about slave servers and
load balancing. Then Domas implemented PostgreSQL support as a subclass.
Domas' work doesn't preclude the use of a DB abstraction layer, in fact
his work in identifying the use of MySQL-specific features would be
invaluable should we attempt such a thing.
As far as I'm concerned, DB abstraction is a courtesy to low-traffic
non-Wikimedia users. The queries we use, and the schema, should be
optimised for MySQL. My focus has been on emulation of MySQL features,
not replacement by standard SQL in the bulk of the codebase. INSERT
IGNORE is the best example of this.
-- Tim Starling