Что нового в DataGrip 2022.1

Представляем DataGrip 2022.1 — первое крупное обновление в этом году. В новой версии много улучшений, которые сделают работу с IDE удобнее. Рассказываем, что вошло в этот релиз.

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

Копирование нескольких объектов

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

Выберите таблицы, которые нужно скопировать, и нажмите F5, чтобы открыть диалог экспорта.

Как и при экспорте отдельной таблицы, можно настроить соответствие столбцов и внешний вид, а также изменить DDL новой таблицы.

 

Как вы, возможно, знаете, DataGrip поддерживает экспорт в другие СУБД, то есть целевая схема может относиться к любой базе данных в вашем проекте. Копировать все таблицы из базы данных PostgreSQL в SQL Server проще простого.

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

Улучшения

  • DBE-5200: действие Edit as table теперь работает корректно, даже когда в строках исходного файла разное количество столбцов.
  • DBE-14541: в новой версии корректно работает добавление строки к CSV-файлу, содержащему один столбец.
  • DBE-14735: исправлена ошибка, возникавшая при одновременном экспорте таблиц с временными отметками.

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

Формат отображения по умолчанию для двоичных ячеек

Мы добавили новую настройку Automatically detect binary values. Можно выбрать один из двух вариантов: UUID и Text. Теперь определение UUID можно отключить.

Редактирование полей в результатах запросов MongoDB

Теперь можно редактировать результаты запросов к коллекциям MongoDB прямо из консоли. Это сработает, даже если после .find() были выполнены методы sort() или limit().

Поддержка результатов внутри редактора в пакетном режиме запуска SQL Server

Если в Transact SQL запустить параллельно несколько запросов, они выполняются в пакетном режиме. Раньше из-за этого было тяжело посмотреть результаты внутри редактора по каждому запросу, но теперь DataGrip успешно справляется с этой задачей.

Кроме того, теперь DataGrip удаляет все выражения SQLCMD при выполнении запросов в пакетном режиме (подробнее см. DBE-14920).

Улучшения

  • DBE-8561: нажатие за пределами календаря больше не приводит к сбросу изменений.
  • DBE-9632: в новой версии нажатие клавиши Enter сохраняет текущее значение в календаре.
  • DBE-11706: в новой версии поддерживается использование клавиши Tab в календаре.
  • DBE-9974: теперь можно отменить связь файлов .csv с режимом просмотра ‘View as Table’.
  • DBE-13040: мы упростили отображение скрытых столбцов: достаточно нажать на нужный столбец в списке.
  • DBE-14516: индикатор размера ячейки больше не показывается для полностью загруженных значений. Для него используется моноширинный шрифт, чтобы содержимое было правильно выравнено.
  • DBE-14670: реализована правильная синхронизация просмотрщика геоданных.
  • DBE-10851: исправлена ошибка шрифта в режиме просмотра дерева.
  • DBE-9710: Oracle значения временных отметок теперь учитывают часовые пояса.
  • DBE-14852: MariaDB, Aurora MySQL в новой версии пустые даты правильно отображаются в редакторе данных.
  • DBE-15009: Sybase ASE в режиме просмотра результатов отображаются все столбцы.
  • DBE-15031: Snowflake правильно генерируется запрос обновления таблиц со значениями DEFAULT.
  • Контекстное меню столбца теперь отображается также в транспонированном виде.

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

Шаблоны сессий для интроспекции

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

 

После этого шаблон можно использовать для интроспекции, выбрав его название в поле Use session template в разделе Introspection.

Интроспекция отдельных объектов Oracle

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

 

Это особенно полезно, если вы используете новую функцию Introspection levels. Когда нужно посмотреть исходный код одного объекта, достаточно нажать кнопку Refresh Object в проводнике базы данных.

Кроме того, при открытии исходного кода выбранного объекта в редакторе DataGrip предложит выполнить его интроспекцию.

Поддержка версии 2.x H2

Мы добавили поддержку H2 2.x. Вот что изменилось:

  • DataGrip теперь корректно выполняет интроспекцию типов (большинство ошибок было связано с составными типами: ARRAY и ROW);
  • корректно выполняется интроспекция столбцов со встроенными последовательностями (auto_increment, generated always as identity и т. п.);
  • контрольные ограничения и внешние ключи больше не теряются;
  • загружаются источники данных для видов, триггеров и рутин;
  • для доменов отображается информация о контрольных предикатах.

Добавлена базовая поддержка YugabyteDB

Мы добавили JDBC-драйвер для YugabyteDB, и теперь можно в один клик создать источник данных YugabyteDB.

Улучшения

  • DBE-13521: ClickHouse добавлена интроспекция исходного кода материализованных представлений.

Генерация кода

Новая версия Modify Table

Мы занялись переработкой окна Modify Table. Интерфейс новой версии Modify table будет генерироваться на основе свойств объекта интроспекции, что позволит использовать много параметров, связанных с конкретной базой данных.

Пока что мы выпускаем лишь небольшое обновление, но оно уже будет очень полезным. В новом окне Modify Table можно добавлять и редактировать контрольные ограничения столбцов — раньше это было недоступно. Кроме того, теперь можно редактировать свойства таблиц и столбцов, для которых была выполнена интроспекция.

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

Улучшения

  • DBE-15000, DBE-15001: PostgreSQL теперь при редактировании грантов генерируется правильный код.
  • DBE-5136: SQL Server при удалении столбцов с ограничениями с помощью Modify Table вы получаете работающий скрипт.
  • DBE-14760: MySQL окно Modify Table больше не повреждает индекс функций.
  • DBE-2827: MySQL можно изменить атрибут AUTO_INCREMENT.
  • DBE-14801: Snowflake сгенерированный DDL-скрипт содержит выражения для создания последовательностей по умолчанию.

Инструмент сравнения баз данных

Возможность поменять местами сравниваемые объекты

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

Улучшения

Мы постоянно работаем над улучшением недавно появившегося окна сравнения баз данных. Некоторые исправления были сделаны уже в версии 2021.3, другие появились в версии 2022.1, в том числе:

  • DBE-15063: новый умный алгоритм сравнения строк позволил решить проблему учета регистра ключевых слов в окне просмотра различий.
  • DBE-14686: учитывается параметр Reformat generated code.
  • DBE-14782: инструмент поиска различий находит потенциально идентичные объекты, даже если у них разные имена.
  • DBE-14431: Oracle больше не появляется исключение Array index out of bounds.

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

Действие Convert to subquery

Мы добавили новое удобное intention-действие: Convert To Subquery. Теперь для преобразования подзапросов не нужно использовать Surround Live Template. Более того, не нужно даже выбирать запрос: достаточно нажать Alt+Enter | Convert To Subquery.

Улучшенный алгоритм автоматической расстановки отступов

Мы улучшили алгоритмы автоматической расстановки отступов. По этому поводу у нас была пара тикетов: DBE-14825 и DBE-8742. Но мы пошли дальше и учли все возможные случаи и ситуации, так что теперь автоматическая расстановка отступов должна всегда и везде работать корректно.

Поддержка многодиапазонных типов PostgreSQL

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

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

Улучшения

  • DBE-11683: PostgreSQL добавлена поддержка синтаксиса ROWS FROM.
  • DBE-11868: PostgreSQL исправлена проблема, приводившая к появлению неразрешенных обычных табличных выражений.
  • DBE-15061: PostgreSQL исправлена проблема, вызывавшая неверную вставку синтаксиса JSONB.
  • DBE-14888: PostgreSQL добавлена поддержка BEGIN ATOMIC.
  • DBE-15052: Redshift добавлена поддержка ALTER MATERIALIZED VIEW.
  • DBE-11830: Oracle добавлена поддержка синтаксиса USING INDEX ENABLE.
  • DBE-6548: Oracle исправлено разрешение столбцов в выражениях CREATE MATERIALIZED VIEW LOG.
  • DBE-15095: Snowflake добавлена поддержка параметра WITH TAG в выражениях CREATE STAGE.
  • DBE-14793: Snowflake добавлена поддержка выражения EXECUTE.
  • DBE-11247: Snowflake теперь в выражениях корректно подсвечивается JSON.
  • DBE-14843: BigQuery добавлена поддержка QUALIFY.
  • DBE-13995: BigQuery добавлена поддержка столбца UNNEST.
  • DBE-14504: ClickHouse добавлена поддержка литералов сопоставления.
  • DBE-15013: ClickHouse добавлена поддержка UNION DISTINCT.

Выполнение запросов

Отмена выполняемых запросов

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

Такое поведение было вызвано хитрой логикой. При первом нажатии DataGrip отправляла базе данных запрос на отмену, а при втором отменяла процесс JDBC-драйвера, завершая все соединения с источником данных (мы называем это деактивацией источника данных). В результате второй запрос на отмену возвращал DataGrip ошибку, потому что соединение было разорвано, а не потому, что была успешно осуществлена отмена.

Мы упростили логику отмены. Надеемся, теперь будет лучше видно, что отменен именно запрос:

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

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

Если запрос на отмену не будет выполнен в течение 10 секунд, система сама предложит деактивировать источник данных.

После отмены запроса слева от него на полях редактора появится иконка, похожая на символ «Нет».

Отмена соединений

Раньше при попытке прервать выполнение запроса во время создания соединения источник данных деактивировался.

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

Теперь можно остановить этот процесс, не деактивируя источник данных: если нажать кнопку Cancel во время создания соединения, процесс будет остановлен, и появится сообщение Connection canceled.

Это касается не только запросов из консоли. Например, если вы создаете соединение перед началом интроспекции, при ее прерывании создание соединения будет отменено, но источник данных не деактивируется.

Общие улучшения IDE

Переработанные настройки

Структура настроек Preferences в разделе Database не менялась с первой версии DataGrip. Мы решили, что пора сделать этот раздел удобнее, и обновили его структуру. Вот что у нас получилось.

Настройка Track databases/schemas creation and deletion перенесена из раздела General в Data Source Properties | Options и теперь относится к конкретному источнику данных. Она определяет, нужно ли обновлять список схем после создания или удаления схем в консоли запросов.

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

Обратите внимание, что следующие настройки будут сброшены к значениям по умолчанию:

  • Data Source properties | Track databases/schemas creation and deletion – True.
  • Editor | General | Editor Tabs | Database | Always show qualified names for database objects in tab titles – False.
  • Editor | General | Editor Tabs | Database | Shorten datasource and object names in tab titles – True.

Равные вкладки в режиме Split

Теперь рабочее пространство в редакторе можно распределить так, чтобы вкладки были равной ширины. Для этого воспользуйтесь настройкой Settings / Preferences | Advanced Settings | Editor Tabs | Equalize proportions in nested splits.

Экспорт UML-диаграмм в другие форматы

В новой версии диаграммы можно экспортировать в форматах yEd (.graphml), JGraph (.drawio), Graphviz (.dot и .dot с позициями), Mermaid (.md), Plantuml, а также в файлы .uml IDEA. Благодаря этому их можно использовать в других инструментах.

Улучшения

  • DBE-15043: теперь навигация по закладкам осуществляется так же, как по объектам проводника баз данных.
  • DEA-129631: добавлена поддержка дробных размеров шрифтов.