Oracle and NuoDB are now almost completely supported. They run fast and clear and I'm impressed with the both of them.
EXCEPT: Oracle and NuoDB both treat an empty string as a NULL. This means they don't pass some tests because they disagree with the other databases fundamentally.
I have been developing an attitude that any query from DBvolution, given an identical data set, should produce the same result on every database. This does mean that I can run the test set without any annoying if/then/else protecting dainty little DBs from the nasty tests. It also means that DBV-based applications can move seamlessly from one database backend to another. Possibly even spanning across heterogenous databases.
However I already have some code that specifically avoids testing Full Outer Joins on databases that don't support full outer joins. So there is precedent for having varying behaviour.
The precedent is meant to be temporary though, I have always intended to extend query creation to create an artificial outer join. With the full outer join I don't feel pressured to implement the functionality at the moment, I assume everyone will forgive me for not implementing something MySQL couldn't manage.
But the NULL/Empty String situation feels different: string comparison is fundamental to everyday queries. This needs a proper response, and before I go to v1.0; I really don't want to release a massive fundamental change in v1.1.
My question to you is: does it matter if all your empty strings are NULL?
Anonymous
The good news is that NuoDB has fixed it's problems with Strings and is now an industry standard database.
There is one remaining bug in NuoDB that stops it being fully supported but the lads at Nuo are working on it and hopefully it won't effect you.
The bad news is that I've done the work on Oracle and their strange strings are now as supported as they can be. Unfortunately trying to cope with the null==empty state introduces as many problems as it solves and supporting them is just never going to work. So, I'm sorry but, you just have to watch out for the Oracle null=empty behaviour.