In the other comment @gidden, you mentioned breaking the long functions with switch-case statements into many functions.  I believe that this is bad idea (which is why I didn't write them this way to begin with ^_^). 

From what I could gather, the backends are a performance critical part of the code base. These switch-cases (eps in Query, CreateTable, etc) are executed for each column and each row.  Function call overhead is roughly ~100 cycles the last time I checked.  Moving to private member functions would more than negate the benefits of having the DbTypes abstraction.

These switch-cases are going to be big if they are going to be efficient  - and I believe that they should be.  That said, to improve readability I wouldn't be opposed to moving these functions to their own *.cc files. Alternatively, I could move just the switch-cases to their own files and then `#include` them.  I also wouldn't be opposed to dropping some gotos (though `#include` is faster).  

I fully expect some of these functions to be 1000+ lines if and when they are fully implemented for all types.  I had considered moving them to their own implementation files but wanted to gain consensus that this was an OK thing to do before proceeding.