Mysql Запрос соответствия, чтобы проверить, был ли запрос обновлен - PullRequest
0 голосов
/ 29 января 2020

Я пытаюсь сопоставить два MySQL Запроса (на данный момент , целью является "Создать ВИД" ), чтобы проанализировать, приведет ли результат выполнения к тому же эффекту для базы данных.

Источник запросов не совпадает, что делает синтаксис запросов несовместимым.

Чтобы еще больше упростить вопрос, позвольте мне добавить более подробную информацию:

  • Допустим, в базе данных уже существует View .
  • Этот View был создан с использованием оператора Create VIEW ... SQL.
  • Возможно, что оператор get Create VIEW ... обновлен, поэтому для отражения изменений в базе данных, в данный момент этот оператор выполняется во время миграции.
  • Но я хочу избежать этой ситуации, если оператор Create VIEW ... приведет к той же структуре, что и существующее View в базе данных, я хочу избежать
  • Для генерации C REATE VIEW из базы данных, которую я использую SHOW CREATE VIEW ... (, сравнивая это с запросом, первоначально использованным для создания VIEW ).
  • Основной ограничение заключается в том, что я должен принимать это решение только во время миграции и не могу предполагать какие-либо выводы (например, , используя git diff или историю фиксации ... ).

Я уже выполнил некоторый поиск, чтобы найти решение для этого:

  • Не нашел прямого решения этой проблемы ( как движок SQL, к которому я могу подавать оба запроса и знать, результат будет таким же ).
  • Принято решение проанализировать запросы и добиться того, чтобы в конечном итоге заглянуть в ANTLR ( также используется MYSQL WorkBench )
  • Подход ANTLR выглядит многообещающе, но это потребует обширного анализа на основе правил и создания программы сопоставления запросов с нуля.
  • Я понял, что просто разбора запросов недостаточно, я должен создать свои собственные POJO для хранить атоми c лексеры из запросов, а затем сравнивают запросы на основе некоторых правил.

Даже если бы я мог найти предопределенные POJO, это позволило бы быстро создать решение для этой проблемы.

...