Ок, я лох, и не посмотрел в тестах грандиозную разницу между getWhere и getExpr.не вижу смысла это обсуждать
По остальным пунктам, как я и думал, возражений не нашлось

На самом деле, проблема в том, что ты пытаешься из драйвера SQL сделать некий универсальный сервис доступа к данным. И сервер на лету подменять, и к мемкешу обращаться.
При этом правильно было бы не смешивать эти сущности. сделать дравйвер БД, а после него - полноценный ОРМ, который бы и абстрагировал, как ты хочешь, работу с данными. И был бы расширяемым, кошерным кавыйным и няшным.
а так у тебя получилось ни два, ни полтора - и от SQL не избавился (что ставит крест на фантазиях про мемкеш), и сам этот SQL так изуродовал, что потерял всякую совместимость с любым другим разработчиком, кроме себя. Плюс нехилая обфускация - сторонний человек думает, что это для работы с БД, а у тебя там за каждым углом черт в табакерке из другой оперы.