On Sat, Mar 26, 2011 at 8:56 PM, Patrick Earl <pate...@patearl.net> wrote:
> 1.  Support for a base-10 numeric data type.

Looking at the wikipedia page for NHibernate it seems that you don't
export a SQL interface -- all SQL is generated.  So, given that, you
should be able to generate SQLite3 statements that use user-defined
functions for handling bignums.  There have been other threads on this
topic recently.

> 2.  Support for altering tables (especially the removal or addition of
> foreign keys).  Granted, tables can be updated by turning off foreign
> key constraints, copying all data, manually checking foreign key
> consistency, and then turning on foreign key constraints again.  Not
> having the ability to alter tables ultimately leads to a great of
> complexity in any system that has to deal with updating database
> schemas.

If it's just foreign keys you could just generate/drop triggers (there
used to be a program for that).  Actually, most table constraints can
be implemented via triggers (CHECK? check; FOREIGN KEY? check; UNIQUE?
check!); only collation can't be handled via triggers.

> 3.  FULL OUTER JOIN support.  There are work-arounds, but implementing
> those as part of NHibernate proved quite complicated, so I opted to
> wait unless there seems to be extreme demand for it.

You could always use a UNION to emulate FULL OUTER JOIN (a UNION of
two LEFT OUTER JOINs with the tables swapped).  Support in the engine
could probably be significantly more efficient than that.

> 4.  Some sort of locate function to get the index of substring within
> another string.  I couldn't even find any way to emulate this (aside
> from user defined functions).

You can define that yourself.

> 5.  Support for operations like "= all (subquery)", "= some
> (subquery)", and "= any (subquery)".

What's that?

> 6.  Better support for distributed transactions.  I don't pretend to
> be an expert here, but it seems plausible that SQLite could
> participate in a transaction across multiple databases.  Perhaps
> implementing two phase commit would help with this.

If by distributed you mean "client/server" then SQLite3 is likely not
for you (but there are third party
projects that add a networked layer above SQLite).  In any case,
SQLite3 does do two-phase commits (and provides ACID semantics).

Nico

PS: I'm just a SQLite3 fan.  My comments above you be taken with salt.
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to