Jay Sprenkle wrote:
Since SQL conformance is hard to legitimately define (Are we
going to conform to cj date, mysql, oracle, etc.) you're right,
it would be hard.
I believe my original suggestion still has value:
If DRH is going to radically change SQLite (removing/redefining typing
and redoing the expression evaluation) then a split/branch is valuable.
Jay,
I agree that moving away from the standard is a bad thing, but this
change does not in any way merit forking SQLite or changing its name.
SQLite currently deviates from the standard in much more significant
ways than this proposed (well its more than proposed now) change. It
lacks many standard functions, has no support for standard dates or
times, and no support for referential integrity for example.
SQLite currently covers a very large subset of standard SQL, and most of
the recent changes have been made in a way that makes it more standard
compliant. The recent changes to NULL handling in the SUM function and
the addition or correlated subqueries come to mind.
One of the things I see happening repeatedly around here is the
comparison of one SQL implementation to another. We are often asked how
does database X (or X, Y, and Z) do this. Also, people often justify
deviation from the standard because other databases also deviate from
the standard (perhaps even in different ways).
The solution to the compatibility problem is not to try match the
behavior of another database, but rather to match the behavior required
by the standard. If all the database implementations do this (and I
believe that most are generally trying to), then they will all
eventually become more and more compatible with each other as time goes
on. At some point the differences will be so small that they are seldom
an issue.
This will only be achieved if we continuously aim for standard
compliance. It is the target we should alway try to move towards, never
away from.
Many of the things we use everyday work only because all implementors
adhere to a common standard. Threading of nuts and bolts, USB devices,
compact disks, the C programming language, etc.as examples. These things
work well and interoperate because all implementors work from a common
standard. I'm sure each of these standards have some warts that could be
improved.
Generally fixing these problems isn't worth the loss of compatibility so
all implementations live with warts until a consensus arises that the
standard itself should be changed. At that point all implementation can
be revised at nearly the same time so the improvement is realized
without an attendant loss of compatibility.
Many good ideas have been sacrificed to maintain compatibility, but the
increased usability of compatible products is usually worth the
sacrifice. Truly great ideas often form the basis for a totally new way
of doing things which is completely incompatible with the previous
technology. Usually, these ideas will develop their own standard to
ensure compatibility between implementations.
I think this change is a good idea that should have been sacrificed for
compatibility. It's not such a great idea that it will spawn a whole new
industry centered around typeless databases engines. As a result of this
chnage SQLite has become a slightly less compatible database engine.
Well this post certainly drifted away from where I started.... but at
least that is off my chest.
In summary: SQLite is good. Standards are good. I hope SQLite moves
towards the SQL standard.
Dennis Cote