Встречайте DataGrip 2021.2! Это второе крупное обновление в 2021 году, и вот что мы приготовили для вас за последние четыре месяца.
Генерация DDL-источников — еще один наш шаг на пути к созданию простой системы версионирования баз данных. Теперь вы можете хранить DDL-файлы в VCS-системе и заново генерировать их каждый раз, когда структура вашей базы обновляется.
В новой версии можно создать источник данных DDL на основе обычного. DDL-файлы, на которых основывается такой источник данных, генерируются локально. Благодаря этому вы всегда сможете пересоздать эти файлы и обновить источник данных DDL.
Давайте посмотрим, как это работает.
Сгенерировать источник данных на основе кода можно из контекстного меню: SQL Scripts | Dump to DDL data source.
В открывшемся окне выберите папку, в которой будут сгенерированы файлы.
На вкладке Generation выберите способ генерации.
После нажатия OK DataGrip сгенерирует источник данных.
Папка с новыми файлами автоматически добавится в ваш проект.
Начиная с этой версии, создавать объекты внутри DDL-источников данных можно из интерфейса. Соответствующие файлы будут созданы на диске.
Что касается диаграмм, то теперь:
Искать версии в истории изменений стало еще проще: вы можете пользоваться текстовым поиском!
Локальные изменения исходного кода объекта теперь можно просмотреть в истории изменений. Эта возможность пригодится вам при работе с функциями и хранимыми процедурами.
Исходный код каждого объекта хранится в файле, поэтому все изменения отслеживаются. Файл обновляется, если вы делаете интроспекцию базы данных.
Используя окно Local History, вы можете отслеживать изменения функций и процедур. Обратите внимание, что все внешние изменения, выполненные в рамках двух интроспекций, считаются за одно изменение.
Пользовательские отзывы показали, что не всем понравились сокращенные заголовки вкладок. Теперь вы можете отменить эту настройку. Если вы предпочитаете длинные названия в заголовках вкладок, уберите галочку для опции Shorten Tab Titles.
Действие Hide All Tool Windows существует давно — его можно вызвать двойным щелчком по вкладке либо нажатием Shift+Ctrl+F12. Многие использовали его для расширения окна (вместо Maximize Editor), и оно действительно прекрасно выполняло эту функцию.
После того, как мы ввели механизм разделения окна, ситуация усложнилась. Скрывать разделенные вкладки или нет? Вот что мы сделали:
Теперь можно указать, какие объекты будут попадать в список автодополнения. Есть три варианта.
Также вы можете управлять списком при помощи умного автодополнения. Чтобы вызвать умное автодополнение, несколько раз нажмите сочетание клавиш, вызывающее обычное автодополнение (как правило, Ctrl+Space).
Для MongoDB теперь доступно полноценное автодополнение кода с учетом полей и операторов. Подробнее об этом мы рассказываем в отдельном блог-посте.
Теперь вы можете пользоваться автодополнением для синонимов объектов из других баз данных.
Теперь вычисляемые столбцы учитываются при автодополнении запросов INSERT
и не включаются в список.
DBE-10515, DBE-2212: объекты из схемы, относящейся к текущему контексту, теперь считаются более приоритетными в списке автодополнения.
DBE-7781, DBE-10650: автоматический псевдоним теперь появляется только тогда, когда он может понадобиться.
DBE-12018: квалификация таблиц при автодополеннии JOIN
теперь работает ожидаемым образом.
DBE-12479: мы повысили приоритетность ASC/DESC
внутри запросов ORDER BY
.
DBE-13341: PostgreSQL автодополнение в запросах GRANT/REVOKE
теперь работает ожидаемым образом.
Теперь DataGrip правильно подсвечивает запросы с рекурсивными табличными выражениями и позволяет запустить их без предварительного выделения.
Теперь DataGrip поддерживает общепринятый синтаксис табличных выражений, когда табличное выражение стоит перед словом AS
.
DBE-3759, DBE-13364, DBE-13365: инспекции для агрегатов стали работать точнее.
DBE-10782: ClickHouse инспекция, отслеживающая аргументы, не равные null, в функции COALESCE
, теперь не делает ложноположительных предупреждений.
DBE-13188: Oracle PL/SQL поля типа record теперь правильно разрешаются.
DBE-10550: DB2 псевдонимы таблиц теперь правильно разрешаются.
Опция Separate Procedures and Function, доступная в настройках проводника баз данных (значок шестеренки), помещает функции и процедуры в разные папки. При включении опции изменения применятся сразу же.
Что касается SQL Server, то для скалярных и табличных функций также есть разные узлы. Для PostgreSQL есть специальный узел, хранящий триггерные функции.
Еще одна настройка — Show Constraints and Triggers in the schema. Если ее включить, триггеры, ключи и индексы будут отражаться в отдельных узлах на корневом уровне схемы, а не внутри таблиц.
Чем это может быть полезно?
Если вы выключите опцию Sort Alphabetically в настройках проводника баз данных, будет применен естественный порядок сортировки объектов.
Вот что вы увидите, выключив опцию Sort Alphabetically:
Вот что вы увидите, выключив опцию Sort Alphabetically:
... а если включите опцию Sort Alphabetically:
Мы доделали поддержку CockroachDB. Теперь интроспекцию выполняют не JDBC-драйверы, а сам DataGrip.
Это работает гораздо быстрее, чем интроспекция на основе JDBC. Кроме того, предыдущая версия не умеет выполнять интроспекцию role, deftype и check constraint. Полный список объектов, к которым теперь применима интроспекция, включает database, role, privilege, schema, sequence, deftype, table, view, mat view, index, column и constraints. Partitions не интроспектируются — эта проблема нам известна.
У нас есть механизм назначения виртуальных внешних ключей. Теперь мы также покрыли pg_catalog. Вот что это дало:
Автодополнение для JOIN
в запросах с системными таблицами:
Навигация по столбцам в этих таблицах:
Мы поддержали табличные пространства, файлы данных, а также временные файлы. Теперь для них выполняется интроспекция:
Также табличные пространства включаются в сгенерированный DDL:
Поддержка обеспечена не полностью: пока что для объектов связанных серверов недоступны метаданные. Связанные серверы отображаются в проводнике баз данных, и вы можете сгенерировать DDL, которые будут их создавать.
В прошлом релизе мы ввели контекстные шаблоны, генерирующие код с использованием текущего объекта. Теперь эти шаблоны работают из редактора данных. Работая с таблицей, вы можете с легкостью сгенерировать для нее любой запрос при помощи действия SQL Scripts.
Вызвать накапливаемую сортировку для столбца теперь можно при помощи Alt+Click. Чтобы вызывать накапливаемую сортировку, как раньше, по клику, используйте эту настройку:
Теперь в коллекции MongoDB можно добавлять столбцы. Вы можете добавить новое поле в любой документ коллекции.
Также вы можете удалять столбцы. Причем данные будут удалены из всей коллекции (а не только в документах, отображенных на текущей странице).
Добавлять и переименовывать столбцы в CSV-файлах теперь можно из интерфейса редактора данных.
При работе в редакторе данных вам может понадобиться использовать сложные предложения в полях WHERE
и ORDER BY
. Если вы хотите продолжить работать с полученным запросом, используйте новое действие Copy Query to Console (в меню по нажатию на иконку шестеренки) — оно откроет запрос в стандартной консоли.
Навигация по ключам стала быстрее. Для этого мы убрали опцию First row. Теперь вместо всплывающего окна появляется таблица, показывающая все строки сразу (строки, на которые есть ссылка, или строки, которые содержат ссылку).
Если у вас есть внешние ключи, указывающие на объекты в другой схеме и имеющие одинаковые имена, в интерфейсе навигации по внешним ключам они будут квалифицированы схемой.
DBE-12545: ширина поля ORDER BY
теперь запоминается.
DBE-13055: если значение содержит часовой пояс, он будет отображен.
DBE-9814: Oracle если в данных типа DATE
не указано время, оно будет скрыто.
DBE-12679: Oracle теперь вы можете фильтровать по полю DATE
.
DBE-12716: DB2 теперь вы можете фильтровать по полям binary, blob, char for bit data и varchar for bit data.
Теперь после завершения импорта в уведомлениях появится ссылка на новую таблицу.
Теперь все просто: при нажатии Enter на панели навигации вы развернете текущий узел.
Раньше, нажимая Enter для таблицы, вы открывали данные, a нажимая Enter для источника данных — главную консоль.
Для навигации можно использовать классические сочетания клавиш:
Теперь при поиске функции, процедуры или оператора в окне Go To отображается сигнатура. Это полезно, если вы часто используете переопределение.
Начиная с этой версии пользовательский интерфейс DataGrip полностью локализован на китайский, корейский и японский. Локализованный интерфейс можно скачать в виде плагинов с отдельными языковыми пакетами, которые легко установить в DataGrip. Более 1,5 млн пользователей начали использовать частично локализованные EAP-версии. Теперь доступна полностью локализованная версия.
Теперь DataGrip по умолчанию размещает все проекты так же, как и все другие IDE на основе платформы IntelliJ, — в папке DataGripProjects, находящейся в домашней папке пользователя.
Проект в DataGrip состоит из источников данных, консолей, временных файлов и прикрепленных папок. Раньше все они хранились в папке конфигурации, и при каждом обновлении DataGrip проекты копировались вместе с настройками IDE.
Иногда это приводило к тому, что источники данных исчезали. Теперь эта проблема решена.
Из-за ошибок, возникавших при миграции проектов, пользователи первой EAP-сборки могли потерять данные из разделов Favorites, Bookmarks, Run Configurations, а также данные о виртуальных внешних ключах. Чтобы восстановить их, просим вас заново выполнить миграцию с предыдущей версии. Подробнее: DBE-13410.
Благодаря этим кнопкам стало легче выполнять навигацию (и сложнее потеряться) в окне Settings.
В Preferences/Settings появился новый раздел — Advanced Settings. Он содержит несколько параметров для отдельных сценариев использования, сгруппированных по инструментам IDE. Большинство настроек перенесено сюда из реестра (Registry), но есть и новые.
Несколько важных настроек в этом разделе:
Новое действие Show Scratch Files, доступное по команде Find Action (Cmd+Shift+A), показывает список скретч-файлов с фрагментами кода во всплывающем окне. Интерфейс такой же, как во всплывающем окне Recent Locations, с возможностями быстрого поиска и удаления.
Если запрос не возвращает данных, то скрытое ранее окно Services не откроется. Теперь вы можете сами настроить, какие действия будут открывать окно Services.
DBE-12079: PostgreSQL мы переработали инструмент интроспекции. Теперь никаких дубликатов объектов!
DBE-13164: мы устранили зависание при введении запросов JOIN
с использованием виртуальных внешних ключей.
DBE-194931: пустые скретч-файлы теперь удаляются автоматически.