Есть такая странная задача:
Есть множество Oracle'овых баз с одинаковой структурой, которым нужно слать одинаковые запросы, буквально перебирая целевые базы в цикле.
Хотелось бы вот чего: добавлять в SELECT-запросы некий текст, который будет признаком целевой базы, отправлять запросы на некий SQL-прокси, который с точки зрения DBI будет выглядеть как single-СУБД.
Прокси-сервер увидит в теле SELECT'а идентификатор целевой базы, удалит его и отправит уже изменённый запрос на целевой хост.
От самого прокси при этом хотелось бы persistent соединений и какой-нибудь сетевой оптимизации, которую в обычном случае пришлось бы реализовать прямо в теле программы, формирующей запросы.
Собственно, нашёл SQLRelay - штука отличная и умеет по регэкспам дистрибутить запросы... Но не умеет их модифицировать.
Последнее в принципе можно обойти (например, добавлять идентификатор цели в качестве «комментария»), но... вдруг есть ещё какие-то, более умные SQL-прокси? Собственно, это с прицелом на будущее, потому что на самом деле хотелось бы мутировать SQL-запросы на прокси таким образом, чтобы они подходили как для MySQL (в тестовой среде), так и для Oracle (в продакшн).
ОТВЕТ!
SQL Relay может транслировать запросы. Для этого существует механизм так называемых модулей трансляции. По умолчанию в поставке SQL Relay есть только один модуль, normalize. Для преобразования запросов он бесполезен, но его код можно использовать в качестве основы для написания своего модуля. Написание своего собственного модуля подробно описано в статье о модулях трансляции. То есть здесь: http://sqlrelay.sourceforge.net/sqlrelay/modules/translations.html