Что нового в DataGrip 2019.2

Окно инструментов Services

У IDE на платформе IntelliJ появилось новое окно инструментов: Services. В DataGrip здесь отображены соединения.

Каждое соединение имеет свой узел под соответствующим источником данных. Если на соединении горит зеленый кружок, значит, оно активно. Закрыть соединение можно из контекстного меню.

Каждый узел дерева, будь то служба, источник данных, соединение, можно открыть в отдельной вкладке: нажмите Show in New Tab на панели инструментов или используйте drag-and-drop.

Результаты запросов прикреплены к соответствующим соединениям.

Важно: сочетание клавиш для отображения/скрытия окна Services — Alt+8.

Отключение дерева служб

Отключение дерева служб

Если хотите вернуть вид «как раньше», отключите дерево служб в настройках отображения, нажав на иконку шестеренки.

Таймер запроса

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

Docker

Docker

Еще одна служба, которая может появиться в этом окне, — Docker, если вы используете соответствующий плагин.

Поиск по данным

Ищите данные, даже если не помните, где они хранятся. Выделите источник данных, группу источников или, наоборот, только отдельные таблицы, и выберите Full-text search в контекстном меню. Или нажмите Ctrl+Alt+Shift+F.

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

В нижней части окна показаны запросы, которые DataGrip выполнит для поиска.

По завершении поиска, вы увидите список результатов.

По клику на результат откроется редактор данных, в котором будет применен фильтр, чтобы показать только найденные строчки. Если столбцов слишком много и непонятно, где то, что вы нашли, используйте текстовый поиск: Ctrl+F.

В некоторых базах данных вы можете ограничить поиск столбцами, имеющими индекс. Для этого выберите Only columns with full-text search indexes в списке Search in.

  • В PostgreSQL будет такой запрос: where col @@ plainto_tsquery('text').
  • В MySQL и MariaDB такой: where match(col) against ('text' in natural language mode).
  • В Oracle DataGrip будет использовать индексы context, ctxrule, ctxcat, если они есть.
  • В SQL Server, если построены полнотекстовые индексы, DataGrip генерирует запрос с предложением WHERE CONTAINS(col, N'text').
  • В SQLite DataGrip генерирует запросы с where col MATCH ‘text’.

Если выбран режим All columns, поиск ищет в столбцах, для которых не поддерживается LIKE. Например, JSON-столбцы будут предварительно сконвертированы в строку.

Для Cassandra DataGrip запускает несколько запросов для одной таблицы, потому что оператор OR не поддерживается.

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

Быстрое изменение размера страницы

Быстрое изменение размера страницы

Меняйте размер страницы в редакторе данных, не заходя в настройки.

Имена вкладок

Имена вкладок

Теперь вы сами можете называть вкладки результатов: напишите имя в комментарии перед запросом.

Имена вкладок

 

Если вам не нравится, что любой предшествующий комментарий становится именем, укажите слово, после которого будет идти строка для заголовка. Это делается в соответствующих настройках: поле Prefix.

Проводник базы данных

Быстрое создание бэкапа таблицы

Быстрое создание бэкапа таблицы

Копировать таблицы при помощи drag-and-drop можно давно, но раньше это не работало, если перетаскивать в ту же схему. Теперь работает! Удобно, если делаете бэкап данных перед важной операцией.

Быстрое создание группы

Быстрое создание группы

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

Активные соединения

Активные соединения

С версии 2019.2 маленький зеленый кружок на иконке источника данных означает, что соединение с ним активно.

Принудительное обновление

Принудительное обновление

Новое действие Force Refresh подгрузит информацию обо всех объектах базы, предварительно очистив кэш.

Фильтрация по источникам данных

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

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

То же работает при поиске кода в Find In Path.

Помощь при написании кода

Быстрое изменение размера страницы

Системные объекты

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

Объекты из этих каталогов часто используют в запросах, поэтому их нужно показывать в автодополнении и правильно подсвечивать: IDE не должна думать, что это какие-то неизвестные объекты.

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

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

Вот примеры некоторых системных схем:

  • PostgreSQL: pg_catalog, information_schema
  • SQL Server: INFORMATION_SCHEMA
  • Oracle: SYS, SYSTEM
  • MySQL: information_schema
  • DB2: SYSCAT, SYSFUN, SYSIBM, SYSIBMADM, SYSPROC, SYSPUBLIC, SYSSTAT, SYSTOOLS
Быстрое изменение размера страницы

Предупреждения и исправления

Теперь из окна предупреждения можно сразу решить проблему, о которой вам сообщили. Например, в окне об опечатке DataGrip предлагает ее исправить, а если IDE предупреждает о том, что нет псевдонима, вам тут же предлагается его завести. Для этого кликните действие слева внизу или нажмите Alt+Shift+Enter.

Alt+Enter по-прежнему работает и показывает список всех возможных действий в данном контексте.

Мы также добавили несколько новых инспекций.

Необязательный CASE

Если оператор CASE можно убрать и привести код к более читаемому виду, DataGrip предложит сделать это.

С использованием IF:

 

С использованием COALESCE:

Конвертация GROUP BY в DISTINCT

Конвертация GROUP BY в DISTINCT

Теперь вы можете конвертировать GROUP BY в DISTINCT, если все столбцы в предложении SELECT есть и в GROUP BY.

Возможная обрезка строки

Возможная обрезка строки

IDE предупредит, если записываемое значение строки длиннее предполагаемого.

Редактор SQL

Новые настройки для передвижения каретки

Новые настройки для передвижения каретки

Мы изменили поведение движения каретки по умолчанию. Теперь DataGrip передвигает каретку к концу текущего слова, если вы прыгаете по словам.

Это поведение настраивается в настройках: Editor | General.

Обычно это действие выполняется стрелками при нажатом Ctrl для Windows/Linux и нажатом Opt для MacOS. Поведение по умолчанию в разных операционных системах отличается: теперь в DataGrip это работает «как на Маке».

Раньше:

Теперь:

Конвертация GROUP BY в DISTINCT

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

Добавили новое действие: Select current statement. Его можно найти при помощи Find Action (Ctrl+Shift+A). Если используете действие часто, назначьте сочетание клавиш.

Возможная обрезка строки

Сворачивание чисел

Большие числа можно сворачивать при помощи Ctrl+Minus.

Другие изменения

  • DataGrip 2019.2 использует JetBrains Runtime 11, несертифицированный форк OpenJDK 11.
  • После включения View | Appearance | Descriptions in Tree Views комментарии к таблицам отобразятся в проводнике.
  • [Cassandra] Теперь можно редактировать столбцы таких типов: set, list, map, tuple, udt, inet, uuid, timeuuid.
  • Новые элементы в списке автодополнения: IS NULL и IS NOT NULL. Раньше сравнения с NULL надо было набирать по отдельности.
  • Настройка Jump outside closing bracket/quote with Tab включена по умолчанию. По клавише Tab курсор перемещается за границу блока кавычек и скобок.
  • Настройка Surround a selection with a quote or brace включена по умолчанию. Если при выделенном фрагменте кода набрать кавычку или скобку, фрагмент окажется внутри кавычек или скобок.
  • Действие Introduce alias (назначить псевдоним) стало частью меню Refactoring.
  • Наладили работу с PostgreSQL 12. Больше информации здесь: DBE-8384.
  • Добавили логичности в режим только для чтения. Раньше эта настройка включала сразу два режима: на уровне IDE (DataGrip анализирует, какие запросы изменяют данные) и на уровне драйвера (если он реализован). В IDE мы добавили возможность выполнить запрос после предупреждения, если очень надо. Но раньше режим только для чтения все равно блокировал такие запросы на уровне драйвера: DBE-8145. Теперь не блокирует.