On Mon, Feb 25, 2013 at 1:29 PM, Greg Sabino Mullane <[email protected]> wrote:
> Mark A. Hershberger wrote:
>> How can we improve the support for databases like PostgreSQL, Oracle,
>> DB2 and MS SQL?
>>
>> Getting Jenkins involved in testing isn't the (only) answer, though it
>> would certainly help.
>>
>> If developers who were interested in those databases could watch
>> includes/db, that would help, as well.
>
> I've tackled this problem, and will share my experience. The problem being how
> to keep all the schemas in sync. I looked at the existing solution someone
> else started, but found it pretty rough. My idea (I called it "abstract 
> schema")
> was a central SQL file, which used a fairly straightforward SQL-ish syntax,
> and then a parser that could read that file and create versions for MySQL,
> Postgres, etc. Or just load that information into memory for the install
> and upgrade process. I actually had a working prototype for that, which
> worked quite well. It made the upgrades in particular very smooth, as
> there were no more patch files needed, the installer simply read the current
> canonical schema state and made the necessary changes.
>
> The big, showstopping problem was trying to map the existing tables.sql
> file (the main MySQL one) into the new system. There is no straightforward
> mapping possible, as every single table in the system I had to try and
> figure out why column such-and-such was using this type, and why sometimes
> there was a default and other times not for similar cases, etc. It was quite
> the nightmare, so that's why I eventually abandoned the work. The tables.sql
> file is quite obviously organically grown, and has little rhyme or reason.
> I did come up with some basic naming rules (esp. for indexes), which means
> that the first release with the new system will rename a lot of objects,
> but as they are not referenced directly, that should not be a problem.
>
> I'm happy to dig out my notes if anyone wants some examples of the
> type mapping issues. I think an abstract tables.sql is a good general
> approach, but getting from here to there is going to require a lot
> of work slogging through those data types.
>

This was exactly what we tried with the abstract-schema branch,
before it was abandoned. The place we got stuck on was handling
updates.

-Chad

_______________________________________________
Wikitech-l mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/wikitech-l

Reply via email to