Regarding the new database version issue, I wonder why the caching layer can't just pass any query it is unable to process on to the underlying database?
This would be more complex if the feature you are using does not return a normal table of results back (e.g. the pub/sub support in Postgres).
This would be more complex if the feature you are using does not return a normal table of results back (e.g. the pub/sub support in Postgres).