Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [stellation-res] Database abstraction

Hi Mark,

It seems to me that you are complicating things more than necessary.

You are targeting 6 databases that need 6 different SQL scripts, not 6.000 different ones. The Postrgres version is ready; the Oracle version is working; don know the status of DB2 and I can modify the script for Firebird/InterBase. The only missing scripts are MySQL/InnoDB and you can search for a volunteer to fix the script when someone shows interest in using MySQL or InnoDB.

Please e-mail me the latest Postgres  script  and I will give you tomorrow the Firebird version.

Regards,

Rodolfo

On Tue, 2002-08-13 at 11:06, Mark C. Chu-Carroll wrote:
So... I'm looking at trying to create a database abstraction layer that
will work accross Postgres, DB2, Oracle, MySQL/InnoDB, and
Firebird. 

One option is to totally automate the SQL generation process. This
allows us to smoothly handle things like the INNODB declarations
that need to go onto the end of table creations, variations in typenames,
etc.

I've tried a first cut at doing this for table creation. I'm looking at a 
bit of test code, and I can't decide whether I like it (it's nicely abstract,
and quite easy to write), or hate it (it's hard to see the SQL in it). Here's
a sample: what do you folks think: is this a good direction, or am I being
idiotically abstract?

Here's the original SQL:

	CREATE TABLE Properties (INTEGER aid,
					        INTEGER vid,
					        INTEGER inheritable,
						VARCHAR(200) name,
						VARCHAR(1600) value,
			CONSTRAINT fk3 FOREIGN KEY (aid, vid) REFERENCES Versions(aid, vid)
			PRIMARY KEY(aid, vid, name))


Here's the corresponding code:
        DatabaseCreateTableCommand cmd = 
                    _db.createTable("Properties")
                        .addIntegerField("aid")
                        .addIntegerField("vid")
                        .addIntegerField("inheritable")
                        .addShortStringField("name")
                        .addLongStringField("value")
                       .beginForeignKeyConstraint("fk3", "FOREIGN KEY")
                            .addConstraintField("aid")
                            .addConstraintField("vid")
                           .beginForeignKeyReferences("Versions")
                             .addConstraintField("aid")
                             .addConstraintField("vid")
                           .endForeignKeyConstraint()
                       .beginPrimaryKeyConstraint()
                          .addConstraintField("aid")
                          .addConstraintField("vid")
                          .addConstraintField("name")
                       .endPrimaryKeyConstraint()
                     .endCommand();

-- 
Mark Craig Chu-Carroll,  IBM T.J. Watson Research Center  
*** The Stellation project: Advanced SCM for Collaboration
***		http://www.eclipse.org/stellation
*** Work Email: mcc@xxxxxxxxxxxxxx  ------- Personal Email: markcc@xxxxxxxxxxx


_______________________________________________
stellation-res mailing list
stellation-res@xxxxxxxxxxxxxxx
http://dev.eclipse.org/mailman/listinfo/stellation-res
-- 

 MAXPROGRAMS
 IBM Business Partner
 Microsoft MSDN Business Connection Partner
 rmraya@xxxxxxxxxxxxxxx
 http://www.maxprograms.com

Back to the top