After a discussion with @tenderlove, it looks like we could abstract https://github.com/rails/rails/blob/98d65ed19c7d3c4a0187616984deb4c3f1b9d270/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb#L257-L462 into a `Capabilities` class, which would be implemented as an attribute of an active connection and used for lowering AST and other statements into valid SQL.