Что нового в DataGrip 2021.2

Встречайте DataGrip 2021.2! Это второе крупное обновление в 2021 году, и вот что мы приготовили для вас за последние четыре месяца.

Источники данных DDL

Генерация DDL-источников — еще один наш шаг на пути к созданию простой системы версионирования баз данных. Теперь вы можете хранить DDL-файлы в VCS-системе и заново генерировать их каждый раз, когда структура вашей базы обновляется.

В новой версии можно создать источник данных DDL на основе обычного. DDL-файлы, на которых основывается такой источник данных, генерируются локально. Благодаря этому вы всегда сможете пересоздать эти файлы и обновить источник данных DDL.

Давайте посмотрим, как это работает.

Сгенерировать источник данных на основе кода можно из контекстного меню: SQL Scripts | Dump to DDL data source.

В открывшемся окне выберите папку, в которой будут сгенерированы файлы.

На вкладке Generation выберите способ генерации.

После нажатия OK DataGrip сгенерирует источник данных.

Папка с новыми файлами автоматически добавится в ваш проект.

Создание объектов

Начиная с этой версии, создавать объекты внутри DDL-источников данных можно из интерфейса. Соответствующие файлы будут созданы на диске.

Диаграммы

Что касается диаграмм, то теперь:

  • видны комментарии к таблицам;
  • показываются цвета таблиц;
  • появилась возможность слияния связей.

Улучшения:

DBE-13057: мы улучшили алгоритм отрисовки диаграмм — теперь имена объектов не пересекаются со связями.

DBE-13264: добавленные на диаграммы заметки теперь не теряются при сохранении.

Редактор кода

Поиск по истории изменений

Искать версии в истории изменений стало еще проще: вы можете пользоваться текстовым поиском!

История изменений исходного кода объекта

Локальные изменения исходного кода объекта теперь можно просмотреть в истории изменений. Эта возможность пригодится вам при работе с функциями и хранимыми процедурами.

Исходный код каждого объекта хранится в файле, поэтому все изменения отслеживаются. Файл обновляется, если вы делаете интроспекцию базы данных.

Используя окно Local History, вы можете отслеживать изменения функций и процедур. Обратите внимание, что все внешние изменения, выполненные в рамках двух интроспекций, считаются за одно изменение.

Возвращение длинных названий в заголовках вкладок

Пользовательские отзывы показали, что не всем понравились сокращенные заголовки вкладок. Теперь вы можете отменить эту настройку. Если вы предпочитаете длинные названия в заголовках вкладок, уберите галочку для опции Shorten Tab Titles.

Выделение в редакторе

Действие Maximize Editor / Normalize Splits

Действие Hide All Tool Windows существует давно — его можно вызвать двойным щелчком по вкладке либо нажатием Shift+Ctrl+F12. Многие использовали его для расширения окна (вместо Maximize Editor), и оно действительно прекрасно выполняло эту функцию.

После того, как мы ввели механизм разделения окна, ситуация усложнилась. Скрывать разделенные вкладки или нет? Вот что мы сделали:

  • Действие Hide All Tool Windows больше не скрывает разделенные вкладки.
  • Новое действие Maximize Editor / Normalize Splits позволяет расширить текущую вкладку, не скрывая при этом окна инструментов.

Автодополнение

Управление набором объектов

Теперь можно указать, какие объекты будут попадать в список автодополнения. Есть три варианта.

  • Suggest only search path objects: список будет ограничен объектами из схем, указанных в переключателе.
  • Suggest objects from current scope: эта опция включена по умолчанию. В списке будут предложены объекты, которые могут быть использованы в текущем контексте без квалификатора. Это объекты из переключателя, запросы USE и стандартные схемы.
  • Suggest objects from all available schemas: в список попадут объекты из всех доступных схем и баз данных.

Также вы можете управлять списком при помощи умного автодополнения. Чтобы вызвать умное автодополнение, несколько раз нажмите сочетание клавиш, вызывающее обычное автодополнение (как правило, Ctrl+Space).

  • Однократное нажатие (или автоматический вызов автодополнения): cрабатывает опция, которую вы выбрали в настройках.
  • Двойное нажатие: в список добавятся все схемы, кроме тех, которые выключены для интроспекции.
  • Тройное нажатие: в список добавятся все объекты из всех доступных схем и баз данных.

Автодополнение для полей и операторов MongoDB

Для MongoDB теперь доступно полноценное автодополнение кода с учетом полей и операторов. Подробнее об этом мы рассказываем в отдельном блог-посте.

Автодополнение для синонимов объектов из других баз данных SQL Server

Теперь вы можете пользоваться автодополнением для синонимов объектов из других баз данных.

Дополнение INSERT и вычисляемые столбцы

Теперь вычисляемые столбцы учитываются при автодополнении запросов INSERT и не включаются в список.

Улучшения

DBE-10515, DBE-2212: объекты из схемы, относящейся к текущему контексту, теперь считаются более приоритетными в списке автодополнения.

DBE-7781, DBE-10650: автоматический псевдоним теперь появляется только тогда, когда он может понадобиться.

DBE-12018: квалификация таблиц при автодополеннии JOIN теперь работает ожидаемым образом.

DBE-12479: мы повысили приоритетность ASC/DESC внутри запросов ORDER BY.

DBE-13341: PostgreSQL автодополнение в запросах GRANT/REVOKE теперь работает ожидаемым образом.

Подсветка кода

Поддержка рекурсивных табличных выражений Redshift

Теперь DataGrip правильно подсвечивает запросы с рекурсивными табличными выражениями и позволяет запустить их без предварительного выделения.

Улучшенная поддержка табличных выражений ClickHouse

Теперь 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. Если ее включить, триггеры, ключи и индексы будут отражаться в отдельных узлах на корневом уровне схемы, а не внутри таблиц.

 

Чем это может быть полезно?

  • Легче найти объект быстрым поиском по дереву.
  • Столбцы можно просмотреть внутри узла таблицы. Для этого выключите опцию Show Empty Groups.

Естественный порядок сортировки объектов базы данных

Если вы выключите опцию Sort Alphabetically в настройках проводника баз данных, будет применен естественный порядок сортировки объектов.

Вот что вы увидите, выключив опцию Sort Alphabetically:

Вот что вы увидите, выключив опцию Sort Alphabetically:

... а если включите опцию Sort Alphabetically:

Интроспекция

Нативная интроспекция CockroachDB

Мы доделали поддержку CockroachDB. Теперь интроспекцию выполняют не JDBC-драйверы, а сам DataGrip.

 

Это работает гораздо быстрее, чем интроспекция на основе JDBC. Кроме того, предыдущая версия не умеет выполнять интроспекцию role, deftype и check constraint. Полный список объектов, к которым теперь применима интроспекция, включает database, role, privilege, schema, sequence, deftype, table, view, mat view, index, column и constraints. Partitions не интроспектируются — эта проблема нам известна.

Виртуальные ключи для pg_catalog PostgreSQL

У нас есть механизм назначения виртуальных внешних ключей. Теперь мы также покрыли pg_catalog. Вот что это дало:

Автодополнение для JOIN в запросах с системными таблицами:

Навигация по столбцам в этих таблицах:

Табличные пространства Oracle

Мы поддержали табличные пространства, файлы данных, а также временные файлы. Теперь для них выполняется интроспекция:

 

Также табличные пространства включаются в сгенерированный DDL:

Связанные серверы SQL Server

Поддержка обеспечена не полностью: пока что для объектов связанных серверов недоступны метаданные. Связанные серверы отображаются в проводнике баз данных, и вы можете сгенерировать DDL, которые будут их создавать.

Редактор данных

Выделение в редакторе

Контекстные шаблоны из редактора данных

В прошлом релизе мы ввели контекстные шаблоны, генерирующие код с использованием текущего объекта. Теперь эти шаблоны работают из редактора данных. Работая с таблицей, вы можете с легкостью сгенерировать для нее любой запрос при помощи действия SQL Scripts.

Накапливаемая сортировка

Вызвать накапливаемую сортировку для столбца теперь можно при помощи Alt+Click. Чтобы вызывать накапливаемую сортировку, как раньше, по клику, используйте эту настройку:

Выделение в редакторе

Добавление/удаление столбца MongoDB

Теперь в коллекции MongoDB можно добавлять столбцы. Вы можете добавить новое поле в любой документ коллекции.

 

Также вы можете удалять столбцы. Причем данные будут удалены из всей коллекции (а не только в документах, отображенных на текущей странице).

Выделение в редакторе

Добавление/переименование столбцов в CSV-файле

Добавлять и переименовывать столбцы в CSV-файлах теперь можно из интерфейса редактора данных.

Действие Copy Query to Console

При работе в редакторе данных вам может понадобиться использовать сложные предложения в полях WHERE и ORDER BY. Если вы хотите продолжить работать с полученным запросом, используйте новое действие Copy Query to Console (в меню по нажатию на иконку шестеренки) — оно откроет запрос в стандартной консоли.

Выделение в редакторе

Все строчки при навигации по внешним ключам (без опции First row)

Навигация по ключам стала быстрее. Для этого мы убрали опцию 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.

Импорт и экспорт

Отображение ссылки на таблицу после импорта

Теперь после завершения импорта в уведомлениях появится ссылка на новую таблицу.

Улучшения

DBE-13259: экспорт числовых полей больше не прерывается при наличии нечисловых значений.

DBE-11370, DBE-13139, DBE-12536: импорт PostgreSQL, Redshift, Exasol, Hive, Clickhouse, DB2 и HSQL стал быстрее.

Навигация

Клавиша Enter на панели навигации

Теперь все просто: при нажатии Enter на панели навигации вы развернете текущий узел.

 

Раньше, нажимая Enter для таблицы, вы открывали данные, a нажимая Enter для источника данных — главную консоль.

Для навигации можно использовать классические сочетания клавиш:

  • Чтобы открыть DDL — Ctrl+B
  • Чтобы открыть данные — F4
  • Чтобы показать объект в проводнике — Alt+Shift+B

Указание сигнатуры в окне Go To

Теперь при поиске функции, процедуры или оператора в окне 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), но есть и новые.

Несколько важных настроек в этом разделе:

  • Настройка величины левого отступа в режиме Distraction-free.
  • Возможность настроить перемещение курсора после комментирования строки (действие Comment with Line Comment).
  • Настройка поведения при двойном щелчке по вкладке.

Действие Show scratch files

Новое действие Show Scratch Files, доступное по команде Find Action (Cmd+Shift+A), показывает список скретч-файлов с фрагментами кода во всплывающем окне. Интерфейс такой же, как во всплывающем окне Recent Locations, с возможностями быстрого поиска и удаления.

Поведение окна Services

Если запрос не возвращает данных, то скрытое ранее окно Services не откроется. Теперь вы можете сами настроить, какие действия будут открывать окно Services.

Улучшения

DBE-12079: PostgreSQL мы переработали инструмент интроспекции. Теперь никаких дубликатов объектов!

DBE-13164: мы устранили зависание при введении запросов JOIN с использованием виртуальных внешних ключей.

DBE-194931: пустые скретч-файлы теперь удаляются автоматически.