Что нового в DataGrip 2021.3

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

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

Режим просмотра Aggregate

Для просмотра диапазонов ячеек теперь есть режим Aggregate. Он поможет управлять данными, позволит не писать дополнительные запросы и даст вам новые возможности из арсенала Excel и Google Spreadsheets.

Для перехода в режим Aggregate, выберите интересующие вас ячейки, щелкните правой кнопкой мыши и нажмите Show Aggregate View.

Как это работает:

  • Мы поместили представления Aggregate и Value на одну панель, выделив для каждого отдельную вкладку. Панель можно переместить в нижнюю часть редактора.
  • Можно убирать из представления ненужные агрегаты: используйте иконку шестеренки, чтобы отобразить либо скрыть любой из них.
  • Как и экстракторы, агрегаты представляют собой скрипты. Мы добавили в DataGrip девять готовых скриптов агрегатов. Но вы также можете создавать свои скрипты и делиться ими с коллегами.
  • Скрипты агрегатов и экстракторы взаимозаменяемы. Экстрактор, который предназначался для получения одного значения, теперь можно скопировать в папку Aggregators и использовать для агрегатов. Папка находится в разделе Scratches and consoles / Extensions / Database Tools and SQL рядом с папкой Extractors.

В строке состояния отображается один агрегат: какой именно — сумма, среднее значение, медиана, минимальное/максимальное значение и т. д. — вы можете выбрать сами.

Табличное представление для узлов дерева данных

Нажав F4 для любого узла схемы, можно просмотреть его содержимое в табличном виде. К примеру, выбрав все таблицы схемы, вы увидите следующее:

 

Также в виде таблицы можно отобразить отдельные столбцы:

Используя табличное представление, вы можете показывать/скрывать столбцы, экспортировать данные в различные форматы и выполнять текстовый поиск. Навигация тоже работает:

  • Ctrl+B покажет DDL;
  • F4 покажет данные;
  • Alt+Shift+B подсветит объект в проводнике базы данных.
Независимые окна в режиме Split

Независимые окна в режиме Split

Теперь, если вы разделите редактор и откроете одну и ту же таблицу, два окна редактора данных будут абсолютно независимыми. Вы можете по-разному фильтровать и сортировать данные внутри и сравнивать результаты. Раньше фильтрация и сортировка были синхронизированы, и это было неудобно.

Собственные шрифты

Собственные шрифты

Вы можете выбрать шрифт для отображения данных: Database | Data views | Use custom font.

Навигация по внешним ключам на основе нескольких значений

Навигация по внешним ключам на основе нескольких значений

Теперь в редакторе можно выбрать сразу несколько значений и перейти к соответствующим данным.

Настройка сортировки по умолчанию

Настройка сортировки по умолчанию

Вы можете указать, какой метод будет использоваться по умолчанию для сортировки таблиц. При выборе сортировки на стороне клиента DataGrip не будет выполнять дополнительные запросы и отсортирует только текущую страницу. Чтобы выбрать сортировку при помощи ORDER BY, перейдите в раздел Database | Data views | Sorting | Sort via ORDER BY.

Отображение бинарных данных

Отображение бинарных данных

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

Автодополнение для filter {} и sort {}

Автодополнение filter {} и sort {} MongoDB

При фильтрации данных в коллекциях MongoDB теперь работает автодополнение.

Хранение базы данных в VCS

Соотнесение источников данных DDL с реальными

В предыдущей версии появилась возможность создавать источники данных DDL на основе реальных. Мы продолжили развивать это направление, и теперь процесс поддерживается полностью. Вы можете:

  • создавать источники данных DDL на основе реальных (читайте про релиз 2021.2);
  • соотносить источники данных DDL с реальными;
  • сравнивать и синхронизировать их (в обе стороны).

Напоминаем, что источник данных DDL — это виртуальный источник данных, схема которого основана на наборе SQL-скриптов. Сохраняя эти скрипты в системе контроля версий, вы по сути сохраняете в ней схему вашей базы данных.

В настройках конфигурации данных появилась новая вкладка DDL mappings, на ней можно соотнести виртуальные источники данных с реальными.

Подробнее о том, как это поможет в работе с VCS, читайте в этой статье.

Новое окно сравнения баз данных

Чтобы сравнить и синхронизировать источник данных DDL с реальным, откройте контекстное меню для источника DDL, перейдите в раздел DDL Mappings и выберите Apply from... или Dump to....

Результат синхронизации будет четко отображаться справа.

Здесь же указывается, что обозначают различные цвета:

  • зеленый курсив — объект будет создан;
  • серый — объект будет удален;
  • синий — объект будет изменен.

Вкладка Script preview показывает результирующий скрипт. Вы можете запустить его в этом же окне либо открыть в новой консоли. Выполнив скрипт, вы преобразуете базу данных справа (целевую) в идентичную базе данных слева (исходной).

Помимо Script preview, на нижней панели есть еще две вкладки: Object Properties Diff и DDL Diff. В них показана разница между конкретными версиями объекта в исходной и целевой базах данных.

Чтобы сравнить две схемы или два объекта, выделите их и нажмите Ctrl + D.

Важно! Окно сравнения все еще в разработке. У каждой базы данных свои особенности, поэтому некоторые объекты могут отображаться как разные, хотя на самом деле они идентичны. В частности, проблему могут представлять псевдонимы типов или отсутствие свойств по умолчанию. Если вы заметите такие ошибки, сообщите нам в баг-трекере.

Файловые операции

Файловые операции

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

Автоматическая синхронизация

Автоматическая синхронизация

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

Если опция отключена, чтобы обновить источник данных DDL, нужно нажать Refresh.

Схемы и базы данных по умолчанию

На панели Default schemas/databases можно указать имена баз данных и схем, которые будут отображаться для источника данных DDL. Скрипты DDL, как правило, не содержат имен, поэтому DataGrip автоматически создаст для баз данных и схем одноразовые названия.

Соединение

Предупреждение о лишних пробелах

Если при тестировании соединения (Test Connection) в любом поле за исключением User и Password обнаружатся лишние пробелы, DataGrip предупредит вас об этом.

Источник данных для работы с LocalDB SQL Server

В списке драйверов появился драйвер SQL Server для LocalDB. А значит, вы можете использовать специальный тип источника данных для работы с LocalDB. При этом:

  • соединение LocalDB будет легче найти;
  • достаточно один раз указать путь к исполняемому файлу (в настройках драйвера), и впоследствии он будет использоваться для всех источников данных.

Аутентификация Kerberos Oracle, SQL Server

Для Oracle и SQL Server доступна аутентификация Kerberos. Используйте команду kinit, чтобы получить исходный билет для принципала, — впоследствии DataGrip будет применять его при выборе опции Kerberos.

Возможность включить DBMS_OUTPUT Oracle, IBM Db2

Чтобы DBMS_OUTPUT работал для всех новых сессий по умолчанию, включите соответствующую опцию на вкладке Options.

Кнопка More options

Если вам нужно особым образом настроить соединение, нажмите кнопку More Options. Вы сможете добавить поля Schema и Role для соединений Snowflake, а также настроить SSH и SSL.

Меню Expert options

На вкладке Advanced теперь есть продвинутые настройки (Expert options). Здесь можно включить интроспекцию на основе JDBC (обязательно свяжитесь со службой поддержки перед тем, как использовать эту функцию). Также доступны следующие возможности:

  • Oracle: отключение инкрементальной интроспекции, получение значений LONG, интроспекция серверных объектов
  • SQL Server: отключение инкрементальной интроспекции
  • PostgreSQL (и аналогичные БД): отключение инкрементальной интроспекции, запрет на использование xmin в запросах pgdatabase
  • SQLite: регистрация функции REGEXP
  • MYSQL: использование SHOW/CREATE в исходном коде
  • ClickHouse: автоматическое назначение sessionid

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

Уровни интроспекции Oracle

Пользователи Oracle жаловались, что DataGrip слишком медленно выполняет интроспекцию в случае большого количества баз данных и схем. Интроспекция — это процесс получения метаданных БД (к ним относятся имена объектов, исходный код и т. д.). Благодаря интроспекции DataGrip может выполнять быструю навигацию и поиск, а также отображать подсказки налету.

Системные каталоги Oracle работают довольно медленно, и интроспекция занимала еще больше времени, если у пользователя не было прав администратора. Мы пробовали оптимизировать запросы на получение метаданных, но столкнулись с ограничениями.

Выяснилось, что для большинства повседневных задач не обязательно загружать исходный код объектов. Зачастую для нормальной работы автодополнения и навигации достаточно знать имена объектов БД. Поэтому мы ввели три уровня интроспекции баз данных Oracle:

  • Уровень 1: имена всех поддерживаемых объектов и их сигнатуры (за исключением имен столбцов индексов и закрытых пакетных переменных)
  • Уровень 2: все метаданные, кроме исходного кода
  • Уровень 3: все метаданные

Интроспекция на первом уровне самая быстрая, на третьем — самая долгая.

Чтобы изменить уровень интроспекции, воспользуйтесь контекстным меню:

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

Уровень интроспекции обозначается значком, похожим на пилюлю, рядом с иконкой источника данных. Чем больше наполнена пилюля, тем выше уровень интроспекции. Синий цвет означает, что уровень интроспекции был выбран вручную, а серый цвет — что уровень был унаследован.

Возможность соотносить связанные серверы и ссылки на базы данных с источниками данных SQL Server, Oracle

Теперь вы можете соотнести связанный сервер из SQL Server или ссылку на базу данных Oracle с любым источником данных.

Когда внешний объект сопоставлен с источником данных, для запросов, содержащих этот объект, будет работать автодополнение.

Возможность скрыть системные схемы и шаблоны баз данных PostgreSQL

Раньше в списке схем не было системных схем (pg_toast, pg_temp и др.) и шаблонов баз данных. Мы добавили возможность их отображать: вы найдете соответсвующие настройки на вкладке Schemas.

Поддержка потоков Snowflake

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

Распределенные таблицы ClickHouse

В проводнике базы данных появилась отдельная папка для распределенных таблиц.

Консоль запросов

Проверка логических выражений

One of our users posted about an unfortunate situation: he executed the UPDATE query on a production database with the condition WHERE id - 3727 (instead of =) and had millions of records updated!

Мы тоже удивились, что такое возможно в MySQL, и разумеется, сразу решили добавить инспекцию, которая проверяет, что в условиях WHERE и HAVING содержатся логические выражения.

Если выражение не похоже на логическое, DataGrip подсветит его желтым и покажет предупреждение перед выполнением запроса. Проверка работает для ClickHouse, Couchbase, Db2, H2, Hive/Spark, MySQL/MariaDB, Redshift, SQLite и Vertica. Для других баз данных такие выражения будут подсвечиваться как ошибки.

Извлечение функций из запросов

Теперь из запросов можно извлекать табличные функции. Для этого выделите запрос, откройте меню Refactor и выберите опцию Extract Routine.

Встроенная подсказка об отношении таблиц в JOIN

Появилась встроенная подсказка, показывающая тип связи таблиц, указанных в условии для JOIN: один к одному, один ко многим или многие ко многим. Выключить эту подсказку можно в разделе Preferences | Editor | Inlay Hints | Join cardinality.

Автодополнение имен баз данных MongoDB

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

Кроме того, автодополнение доступно для имен полей из коллекции, которая была определена с помощью getCollection.

Окно Services

Результаты без временных меток

По просьбе пользователей мы убрали временные метки из результатов запросов. Если вы хотите, чтобы все отображалось как раньше, измените настройку Database | General | Show timestamp for query output.

Новые настройки активации окна

Если вы используете окно Services в оконном режиме, по умолчанию оно всегда скрыто за IDE. Мы добавили настройку, которая переводит фокус в окно при каждом запуске запроса, и оно будет появляться сразу после выполнения запроса.

Кроме того, если вам не нравится, что после выполнения долгого запроса в окне Services активируется соответствующая вкладка, отметьте флажком опцию Activate Services output pane for selected query console only.

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

Новый интерфейс для импорта данных

Мы улучшили импорт CSV-файлов и копирование наборов данных:

  • Можно выбрать существующую таблицу или создать новую.
  • В окне импорта можно изменить целевую схему. Если вы просто скопировали таблицу или результаты, окно целевой схемы не откроется.
  • Выбор целевой схемы сохраняется. Если вы несколько раз подряд выполняете копирование в одну и ту же схему, вам не придется каждый раз заново ее указывать.

Автоматическое выявление заголовков

При открытии и импорте CSV-файлов DataGrip автоматически обнаружит, что в первой строке содержатся названия столбцов.

Автоматическое определение столбцов в CSV-файлах

Теперь DataGrip определяет типы столбцов в CSV-файлах и позволяет сортировать данные по числовым значениям. Раньше они считывались как текст, и это усложняло сортировку.

Прочее

Новое окно Bookmarks

Раньше у нас было два похожих понятия: Favorites и Bookmarks. Разница между ними была несущественной, поэтому мы решили оставить только одно — Bookmarks. Мы изменили соответствующую логику и сделали для закладок отдельное окно.

В новом окне Bookmarks можно просмотреть все объекты и файлы, которые вы пометили как важные (нажав F3 на macOS или F11 на Windows/Linux).