DataGrip 2020.2: редактор больших значений, предпросмотр SQL при редактировании, новое отображение ячеек bool и другое

Привет! За последние четыре месяца мы выпускали фичи и между релизами, поэтому в этой статье о том, что нового появилось в DataGrip за это время. Она приурочена к нашему новому релизу: 2020.2. Получилось длинно, но, надеемся, полезно.

93rem2_w74iyceofzs4i0cs6w7c.png

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


Редактор больших значений

Мы приделали полноценный редактор к ячейкам. Если в ячейке длинное значение, например XML или JSON, его удобно открыть в отдельной панели. Для этого нажмите
Maximize в контекстном меню.

0afq8-l1mesaxzjq656c7ukqgj4.png

Предпросмотр запроса при редактировании

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

tgbk1ta0m5yztglhidm2-k74etk.png

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

1f6ms6lqmxkzcb2oicqbx49npci.png

Новое отображение логических ячеек

Раньше для отображения ячеек с типом boolean мы использовали чекбокс. Это было неудобно: не все понимали, как отличать null от false, а default, computed и null и вовсе отображались одинаково. Мы решили не мудрить и писать значение текстом.

psjph1ief0hs4n_msax9gsoo-oq.png

У чекбокса был один плюс: легко визуально находить значения true. В новом интерфейсе эту задачу выполняет точка.

Нам повезло: в английском языке все возможные значения начинаются с разных букв. Поэтому для редактирования достаточно нажать первую букву нужного вам значения: f, t, d, n, g или c. Если напечатать что-то другое, покажем выпадающий список. А пробел переключает между доступными значениями.

Автоматический редактор данных для CSV файлов

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

5iwrzllexgilcpkh4wkuaubq4c4.gif

Новые строки при вставке значений

Если вы вставляете данные в таблицу из буфера обмена, то мы автоматически создадим нужное количество новых строк.

vkeqhqvqcv4nkbizzoxvydos7g0.gif

Новый интерфейс для недогруженных данных

Иногда DataGrip не может загрузить все данные в ячейку, если они занимают много памяти. Это определяется настройкой Database | Data views | Max LOB length. Раньше мы вставляли текст об этом прямо в значение ячейки, и это неудобно. Сейчас это маленькая отдельная плашка:

es_bgy4u5tf761v3w9of-cf0iia.png

Экспорт в буфер обмена из контекстного меню

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

_oagyjommiqsdeqfp-izt-ietvc.png

Напомним, что это действие копирует весь результат или таблицу. А Ctrl/Cmd+C или действие
Copy копирует только выделенный фрагмент.

Улучшения фильтрации для MongoDB

Помимо ObjectId и ISODate, теперь можно фильтровать по UUID, NumberDecimal, NumberLong, и
BinData. Также, если у вас в буфере обмена подходящее значение для UUID/ObjectId/ISODate, DataGrip предложит использовать его для фильтрации.

q6kx0qkchxxudrzyunehn4xwhio.png

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

9kputjw2uevnnjyd3imgk2hhw30.png

Редактор SQL


Новый виджет с инспекциями

Справа от редактора появилась маленькая панель — она расскажет, сколько в скрипте ошибок, а сколько мест вызывает подозрение. Оттуда можно навигироваться или выбирать — что подсвечивать, а что нет. Сочетание клавиш F2 всё еще работает для того же самого.

3c1qxrt36j3jvxljqxrn2thczhm.png

Предложение переименовать

Это появилось во многих наших IDE: если вы переименовали что-нибудь не при помощи встроенного рефакторинга, а поменяли имя в коде, вам предложат сделать рефакторинг и переименовать и все использования. Вот, например, как это работает с алиасами:

pvqenz4b6rmoxg1gsaaeafsdepo.gif

Автодополнение JOIN стало лучше

Раньше, чтобы мы предложили условие для JOIN полностью, нужно было набрать это ключевое слово. Теперь понимаем, что нужно, как только вы набрали 'J'.

q_qjjrczlca4hwippvjpzgbxodi.png

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

ii7dr5fgkhl2hgdo328iaxlcx00.png

Обновить информацию о базе

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

yigj7r58j1dm3xppm6g-ddrcwdy.png

Выделить переменную

Этот рефакторинг раньше работал не для всех баз, теперь работает в SQL Server, Db2, Exasol, HSQL, Redshift и Sybase.

9agexvlc6-us4jx9tloniqmdyzq.gif

Подсветка Google BigQuery

В списке диалектов пополнение: Google BigQuery. Пока это не полноценная поддержка базы, а только правильная подсветка кода. Соответственно, для запуска запросов не надо выделять код, мы сами определим, что запустить.

maecwa2kmjbdmnm0h9qw01ip2lc.png

Подсветка TextMate

Как и другие наши IDE, DataGrip теперь умеет подсвечивать код при помощи плагина TextMate. Может пригодиться, если у вас есть скрипты на Python, lua, javascript. Полный список языков есть в Settings/Preferences | Editor | TextMate bundles.

hawzdg6d6shibq7xdupmw2auyum.png

SQL 2016 в качестве диалекта

Если работаете с базой, которую мы не поддерживаем, запросы парсятся и подсвечиваются диалектом <Generic>. Раньше это был SQL 92, теперь SQL 2016. Самое важное — теперь мы корректно обрабатываем запросы с блоком WITH, соответственно они не только правильно подсвечены, но и запускать их можно без выделения кода.

ibyzzoimzgvlgpbjmjsdkrenoei.png

Регистр имён объектов в форматировании

В настройках форматирования были три настройки для имён объектов базы данных — прописными, строчными или не менять. Но оказалось, что есть и четвертый случай: пользователи хотят использовать тот регистр, который был использован при создании объекта в скрипте. Мы это поддержали.

vwbitjsiyasvoxozcaq0ebegx_w.png

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

uwr38mdhuvpxcg-9pojeiacf6yu.gif

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

Несколько кареток в выделенном фрагменте

Теперь вы можете выделить фрагмент кода и поставить каретку в каждую его строчку. Используйте для этого действие Add Carets to Ends of Selected Lines или сочетание клавиш Shift+Alt+G

goq0rnc9kzx98o73qv-6pwfpj-m.gif

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


Все базы и схемы в дереве

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

Однако многие привыкли к инструментам, которые всегда показывают все объекты, и люди, которые не знакомы с нашей концепцией могут терять из виду базы и схемы. Поэтому мы сделали настройку Show All Namespaces, и когда она включена, в дереве будут показаны все базы и схемы, даже если информация об их объектах не загружена. Такие схемы и базы отмечены серым шрифтом.

tcicgtry7tyhnpfwemfbnkme2mk.png

Интерфейс для создания представлений

Мы обычно говорим, что функция генерации кода в редакторе (Alt+Ins или Cmd+N) покрывает многие потребности разработчика по созданию объектов, но иногда это всё же менее удобно. Поэтому мы начали добавлять интерфейсы для создания объектов: в новой версии можно создавать представления.

dj86c2xsiv-skonnibpskqqc83g.png

Файлы скриптов в панели Files

Если вы создали источник данных на основе DDL, эти файлы автоматически попадут в панель
Files. Так вам будет удобно их просматривать и редактировать.

qopi9emg8txrwmufrgongtslq1m.png

Простая поддержка ссылок на базы данных в Oracle

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

nql1epm6vxpsvp7kkdyjukelrs0.png

Общее


Больше никаких длинных имён вкладок

Вы часто жаловались, что вкладки неконтролируемо разрастаются.

udaa1eewvg3adlfxzgqupkgge-4.png

Отныне:

— Настройка Database | General | Always show qualified names for database objects выключена по умолчанию, то есть имена объектов будут квалифицированы схемой, только если открыто два объекта с одним именем из разных схем.

— Если имя источника данных больше 20 символов, мы его подрежем.

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

— Если имя объекта со всеми его классификаторами — более 36 символов, его мы тоже подрежем.

Поддержка MongoDB shell

Месяц назад мы обновили драйвер, который используем для подключения к MongoDB и он стал поддерживать MongoDB shell. Это означает, что заработали новые команды и методы, например help, db.getCollectionInfos (), db.getCollectionNames (), db.collection.remove () и другие. Подробная статья на английском о поддержке MongoDB shell здесь.

ohchewgxifzjxax-mud4w3hqegy.png

Нативные библиотеки в настройках драйвера

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

iebicgimm-fency-firid_vquju.png

  • В SQL Server вы можете указать путь к mssql-jdbc_auth--.dll для аутентификации по SSO, если вы настраиваете драйвер вручную. По умолчанию, аутентификация по SSO работает из коробки.
  • В базе данных Oracle вы можете указать библиотеку ocijdbc, чтобы использовать OCI драйвер.
  • В SQLite, можно указать расширения, загружаемые в
    рантайме, чтобы потом было легко использовать их при написании запросов, не указывая каждый раз полный путь.

Конфигурации запуска для файлов *.js

Теперь конфигурации запуска работают и для скриптов базы MongoDB.

swegaghu4cra1dp8jwtg0-9jmnk.png

Интеграция с Git и Github работает из коробки

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

s-sa2vue2u0aax5g9bjga6u-z8m.png

Спасибо за внимание! Напомним, что у нас есть свой канал в Телеграме, там можно задавать вопросы и делиться опытом. Но если нашли баг, лучше сразу пишите в трекер, чтобы он не потерялся. Ну и сюда, конечно, тоже комментарии пишите:)

На этом всё!

Команда DataGrip

© Habrahabr.ru