DataGrip 2019.2: Управление соединениями, поиск по данным, фильтрация в навигации +25


Привет! Рассказываем о том, что мы сделали в DataGrip за четыре месяца. Если вы используете поддержку баз данных в других наших IDE, этот пост для вас тоже.



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


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



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

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



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


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

Docker


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



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

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


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



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



Результаты выглядят так:



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



Детали:
– В PostgreSQL, MySQL и MariaDB можно искать только по проиндексированным столбцам. Для этого выберите ‘Only columns with full-text search indexes’ в списке ‘Search in’.
В PostgreSQL будет такой запрос:where col @@ plainto_tsquery('query')
В MySQL и MariaDB такой:where match(col) against ('query' in natural language mode)
– В Oracle, DataGrip будет использовать индексы context, ctxrule, ctxcat, если они есть.
– В SQL Server, если построены полнотекстовые индексы, DataGrip генерирует запрос с предложением `WHERE CONTAINS(col, N'text')`.
– Поиск ищет в столбцах, для которых не поддерживается LIKE. Например, JSON-столбцы будут предварительно сконвертированы в строку.
– Для Cassandra DataGrip запускает несколько запросов для одной таблицы, потому что оператор OR не поддерживается.

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


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


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



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


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



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



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


Быстрый бэкап таблицы


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



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


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



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


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



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


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



Комментарии к таблицам


После включения View | Appearance | Descriptions in Tree Views комментарии к таблицам отобразятся в проводнике.



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


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



То же работает при поиске кода в 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:



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

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



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

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



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


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


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



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



Теперь:



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


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



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


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



Еще


  • DataGrip 2019.2 использует JetBrains Runtime 11, несертифицированный форк OpenJDK 11.
  • [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. Теперь не блокирует.

Вот и всё!


Команда DataGrip




К сожалению, не доступен сервер mySQL