Форматтер PostgreSQL
Форматируйте запросы и скрипты PostgreSQL с учётом правил Postgres для тел функций в долларовых кавычках, строк с экранированием E'', идентификаторов в двойных кавычках, приведений :: и операторов JSON, таких как ->> и @>. Такие секции, как RETURNING, ON CONFLICT и DO UPDATE SET, выносятся на отдельные строки; о незакрытых строках, комментариях и скобках сообщается с указанием строки и столбца. Для разработчиков, читающих миграции и запросы.
Часто задаваемые вопросы
Какой синтаксис PostgreSQL распознаётся?
Распознаются стандартные строки с удвоенными кавычками, строки E'' с экранированием обратной косой чертой, строки U&'' Unicode, битовые строки B'' и X'', идентификаторы в двойных кавычках и параметры $1. Также распознаются строки в долларовых кавычках, например $$...$$ или $body$...$body$.
Что происходит с телами функций в долларовых кавычках?
Тело в долларовых кавычках сохраняется без изменений, поскольку для PostgreSQL оно является строкой. Окружающий его оператор CREATE FUNCTION форматируется, но само тело не меняется.
Сохраняются ли приведения типов и операторы целиком?
Да. Приведения типов, например value::integer, остаются целыми, а операторы вроде ->, ->>, #>, #>>, @>, <@, ?|, ?&, @@ и операторы регулярных выражений ~ и ~* с их отрицательными формами никогда не разделяются. В PostgreSQL # — это оператор, а не комментарий.
Какие конструкции PostgreSQL размещаются на отдельных строках?
RETURNING, ON CONFLICT, DO UPDATE SET, FOR UPDATE, FOR NO KEY UPDATE, FOR SHARE и FOR KEY SHARE сохраняются как единые конструкции. Обычные конструкции SELECT, FROM, WHERE, GROUP BY, ORDER BY, LIMIT и OFFSET тоже начинаются с новой строки.
Комментарии сохраняются?
Да. Строчные и блочные комментарии остаются на месте, а вложенные блочные комментарии, которые поддерживает PostgreSQL, обрабатываются правильно. Многострочные блочные комментарии получают отступы в соответствии с новым расположением.
Поддерживается ли MERGE?
Да. Ветви WHEN MATCHED и WHEN NOT MATCHED начинаются с новой строки, поэтому инструкции MERGE из версии PostgreSQL 15 и новее остаются читаемыми.
Меняется ли регистр ключевых слов?
Нет. Регистр ключевых слов и идентификаторов сохраняется таким, каким вы его задали. Идентификаторы в кавычках в PostgreSQL чувствительны к регистру и не изменяются.
Какие ошибки обнаруживаются?
О незакрытых строках, идентификаторах в кавычках, строках в долларовых кавычках и блочных комментариях, а также о несбалансированных скобках сообщается с указанием строки и столбца. Инструмент не проверяет полную грамматику PostgreSQL или вашу схему.
Каков максимальный размер входных данных?
До 1 MB на запрос и 128 KB на инструкцию. Файлы миграций со множеством инструкций форматируются по одной, с пустой строкой между ними.
Можно ли выбрать отступ?
Да. Выберите отступ в 2 или 4 пробела либо табуляцию. Ваш SQL обрабатывается только в памяти и нигде не сохраняется.