[mythtv] More ideas on PostgreSQL support, comments welcome

David Härdeman david at 2gen.com
Tue Aug 31 05:50:23 EDT 2004


On Mon, Aug 30, 2004 at 05:49:23PM -0400, Isaac Richards wrote:
>On Monday 30 August 2004 04:59 pm, David Härdeman wrote:
>> >Sounds like a horrible idea to me.  The 'duplicate' implementation is a
>> > few simple lines of code that doesn't need to be consolidated, and I will
>> > _not_ update multiple files every schema change.
>>
>> Fine, so don't update the psql file, just update the mysql one and I'm
>> sure that someone that cares for postgresql can update the corresponding
>> pgsql soon thereafter. Worst case scenario is that PostgreSQL support is
>> broken for a period of time. Would this be an acceptable compromise?
>
>No, I wouldn't really consider that's acceptable at all.  What happens when I 
>want to make a release and the postgresql support isn't updated?
>

The situation isn't very different from what the Linux kernel 
maintainers experience. People add new drivers for hardware which the 
maintainers don't have access to all the time. If changes are later made 
to other parts which break that driver, people complains and the driver 
is either updated by someone who does care about that piece of hardware 
or the driver is ultimately removed.

>> >I will not add support for other databases if it makes the current
>> > internal database usage any harder to use.  I see absolutely no benefit
>> > in doing that.
>>
>> I fail to see how my suggestion would make internal database usage
>> harder? Is updating a separate file with SQL queries harder than updating
>> a .cpp file with SQL queries?
>
>It's not harder, but it's a large step backwards, IMO.  It's one more thing to 
>keep track of, and one more thing that can possibly break.
>
>If multiple databases can't be supported without extra work for me down the 
>road, then there won't be support for multiple databases.  I don't see the 
>benefit in it.

Ok, so here's another suggestion more along the lines of what Roland 
proposed in this thread (albeit one that is MySQL centric rather than 
completely generic):

Create a lightweight DB wrapper that will accept MySQL queries and 
either pass them directly to the database (in case it's a MySQL backend) 
or do some dynamic rewriting and then pass it to the backend (if it's 
anything but a MySQL backend).

Looking at the dbcheck code there aren't that many things which would 
need to be rewritten, and considering that amount of SQL in there, the 
wrapper should be in a pretty good shape once it manages to rewrite it 
all into PostgreSQL acceptable code.

Examples of rewriting would be:
remove any "TYPE=MyISAM" parameters
change "SMALLINT AUTO_INCREMENT" to "SERIAL"
remove "IF EXISTS / IF NOT EXISTS" or rewrite to something equivalent
etc...

also some minor rewrites to MySQL SQL code (statements such as "INSERT 
INTO recordingprofiles SET name" would need to be "INSERT INTO 
recordingprofiles (name) VALUES") which shouldn't affect functionality 
at all.

Does this sound like a better solution?

As another alternative, I could also write duplicate dbcheck 
functionality but PostgreSQL centric (so mydbcheck and pgdbcheck would 
both be provided) but I doubt that it would be percieved as more tolerable 
than my first suggestion?

All suggestions would of course lead to some extra work (that's 
unavoidable), but the goal would be to minimize the work and 
interruption for the majority of users/developers (MySQL using ones that 
is).

Regards,
David


More information about the mythtv-dev mailing list