Представляем DataGrip 2022.1 — первое крупное обновление в этом году. В новой версии много улучшений, которые сделают работу с IDE удобнее. Рассказываем, что вошло в этот релиз.
Пожалуй, главное нововведение: теперь можно выбрать сразу несколько таблиц и скопировать их в другую схему.
Выберите таблицы, которые нужно скопировать, и нажмите F5, чтобы открыть диалог экспорта.
Как и при экспорте отдельной таблицы, можно настроить соответствие столбцов и внешний вид, а также изменить DDL новой таблицы.
Как вы, возможно, знаете, DataGrip поддерживает экспорт в другие СУБД, то есть целевая схема может относиться к любой базе данных в вашем проекте. Копировать все таблицы из базы данных PostgreSQL в SQL Server проще простого.
В качестве целевой таблицы можно указать как новую, так и существующую. После этого данные из исходной таблицы будут добавлены в целевую.
Мы добавили новую настройку Automatically detect binary values. Можно выбрать один из двух вариантов: UUID и Text. Теперь определение UUID можно отключить.
Теперь можно редактировать результаты запросов к коллекциям MongoDB прямо из консоли. Это сработает, даже если после .find() были выполнены методы sort() или limit().
Если в Transact SQL запустить параллельно несколько запросов, они выполняются в пакетном режиме. Раньше из-за этого было тяжело посмотреть результаты внутри редактора по каждому запросу, но теперь DataGrip успешно справляется с этой задачей.
Кроме того, теперь DataGrip удаляет все выражения SQLCMD при выполнении запросов в пакетном режиме (подробнее см. DBE-14920).
DEFAULT
. Иногда для интроспекции требуются особые разрешения, предоставляемые специальным пользователям. Теперь для интроспекции можно использовать выделенные учетные данные. Для этого на вкладке Options нужно создать шаблон выделенной сессии.
После этого шаблон можно использовать для интроспекции, выбрав его название в поле Use session template в разделе Introspection.
Теперь можно обновить один объект отдельно от остальных объектов в базе данных.
Это особенно полезно, если вы используете новую функцию Introspection levels. Когда нужно посмотреть исходный код одного объекта, достаточно нажать кнопку Refresh Object в проводнике базы данных.
Кроме того, при открытии исходного кода выбранного объекта в редакторе DataGrip предложит выполнить его интроспекцию.
Мы добавили поддержку H2 2.x. Вот что изменилось:
ARRAY
и ROW
); Мы добавили JDBC-драйвер для YugabyteDB, и теперь можно в один клик создать источник данных YugabyteDB.
Мы занялись переработкой окна Modify Table. Интерфейс новой версии Modify table будет генерироваться на основе свойств объекта интроспекции, что позволит использовать много параметров, связанных с конкретной базой данных.
Пока что мы выпускаем лишь небольшое обновление, но оно уже будет очень полезным. В новом окне Modify Table можно добавлять и редактировать контрольные ограничения столбцов — раньше это было недоступно. Кроме того, теперь можно редактировать свойства таблиц и столбцов, для которых была выполнена интроспекция.
Думаем, вам особенно понравится новый интерфейс столбцов, которые больше не надо сворачивать и разворачивать — многих пользователей это раздражало.
AUTO_INCREMENT
. Мы добавили кнопку, которая позволяет при сравнении объектов и схем поменять исходный и целевой объект местами.
Мы постоянно работаем над улучшением недавно появившегося окна сравнения баз данных. Некоторые исправления были сделаны уже в версии 2021.3, другие появились в версии 2022.1, в том числе:
Мы добавили новое удобное intention-действие: Convert To Subquery. Теперь для преобразования подзапросов не нужно использовать Surround Live Template. Более того, не нужно даже выбирать запрос: достаточно нажать Alt+Enter | Convert To Subquery.
Многодиапазонные типы появились в PostgreSQL 14, и мы добавили поддержку встроенных многодиапазонных типов.
Поддержка пользовательских многодиапазонных типов появится позже.
ROWS FROM
. JSONB
. BEGIN ATOMIC
. ALTER MATERIALIZED VIEW
. USING INDEX ENABLE
. CREATE MATERIALIZED VIEW LOG
. WITH TAG
в выражениях CREATE STAGE
. EXECUTE
. JSON
. QUALIFY
. UNNEST
. UNION DISTINCT
. Раньше при многократном нажатии на кнопку Cancel statement могло показаться, что выполнение запроса прекращено, но на самом деле база данных продолжала его выполнять.
Такое поведение было вызвано хитрой логикой. При первом нажатии DataGrip отправляла базе данных запрос на отмену, а при втором отменяла процесс JDBC-драйвера, завершая все соединения с источником данных (мы называем это деактивацией источника данных). В результате второй запрос на отмену возвращал DataGrip ошибку, потому что соединение было разорвано, а не потому, что была успешно осуществлена отмена.
Мы упростили логику отмены. Надеемся, теперь будет лучше видно, что отменен именно запрос:
Мы больше не деактивируем источники данных без предупреждения, поскольку это может представлять опасность для некоторых параллельно выполняемых процессов. Таким образом, если вы повторно нажмете на иконку Cancel, DataGrip спросит, действительно ли вы хотите прекратить удаленный процесс или предпочтете подождать. Если вы решите деактивировать источник данных, запрос будет остановлен для DataGrip, но в базе данных он будет выполняться дальше.
Если запрос на отмену не будет выполнен в течение 10 секунд, система сама предложит деактивировать источник данных.
После отмены запроса слева от него на полях редактора появится иконка, похожая на символ «Нет».
Раньше при попытке прервать выполнение запроса во время создания соединения источник данных деактивировался.
Теперь можно прервать не только выполнение запроса, но и создание соединения. Это особенно важно для самого первого запроса в консоли, который в том числе устанавливает соединение.
Теперь можно остановить этот процесс, не деактивируя источник данных: если нажать кнопку Cancel во время создания соединения, процесс будет остановлен, и появится сообщение Connection canceled.
Это касается не только запросов из консоли. Например, если вы создаете соединение перед началом интроспекции, при ее прерывании создание соединения будет отменено, но источник данных не деактивируется.
Структура настроек Preferences в разделе Database не менялась с первой версии DataGrip. Мы решили, что пора сделать этот раздел удобнее, и обновили его структуру. Вот что у нас получилось.
Настройка Track databases/schemas creation and deletion перенесена из раздела General в Data Source Properties | Options и теперь относится к конкретному источнику данных. Она определяет, нужно ли обновлять список схем после создания или удаления схем в консоли запросов.
Другие настройки остаются глобальными, но разнесены по более подходящим разделам.
Обратите внимание, что следующие настройки будут сброшены к значениям по умолчанию:
Теперь рабочее пространство в редакторе можно распределить так, чтобы вкладки были равной ширины. Для этого воспользуйтесь настройкой Settings / Preferences | Advanced Settings | Editor Tabs | Equalize proportions in nested splits.
В новой версии диаграммы можно экспортировать в форматах yEd (.graphml), JGraph (.drawio), Graphviz (.dot и .dot с позициями), Mermaid (.md), Plantuml, а также в файлы .uml IDEA. Благодаря этому их можно использовать в других инструментах.