DDL generation is brittle
I can finally close this!
 What do you mean?
 Sorry,  blaming incorrectly. It worked fine. 

Currently the DDL generation code is very brittle.  The upside is that in the simple case it "just works" and isn't much code.

Examples:
- #259 
- #147 

Perhaps the DDL code should be implemented using `QueryCompiler` (or a subclass).
