DataGrip 2019.3: MongoDB, дебаггер, модный прогресс-бар, много новых инспекций

Привет! Как водится, три раза в году мы рассказываем о том, над чем работали. Это статья о том, что нового в DataGrip 2019.3, а значит и во всех IDE от JetBrains с поддержкой баз данных.

7zyekglfv0k-p0a37bc3w4fjpre.png

Поддержка MongoDB


Это будет наша первая публикация на Хабре, в комментариях к которой не спросят: «А когда планируется поддержка Монги?»

Встречайте! Что работает в этой версии:

Интроспекция: В проводнике базы данных отображаются коллекции и поля. Мы анализируем первые 10 документов из каждой коллекции, чтобы иметь представление о ее полях.

Если вы хотите увеличить это число, укажите его в JDBC-параметре fetch_documents_for_metainfo на вкладке Advanced в свойствах источника данных.

n9aottnugtnunvhx-ebb7yjxwu4.png

Просмотр данных: Просматривайте коллекции в табличном виде по страницам. Можно сортировать по значениям и использовать фильтр.

2qds1litr15ixmcyqacpqtf_4rq.png

Древовидный просмотр: Специально для MongoDB мы сделали древовидный просмотр данных. Чтобы его включить, нажмите на шестеренку, затем View as… | Tree. Еще такой просмотр работает для массивов PostgreSQL, и мы планируем сделать так, чтобы в виде дерева можно было смотреть JSON- и XML-поля.

yvsls8iu83udmcz29rs2ovl29hw.png

Консоль запросов: Сейчас нет поддержки при написании кода, но запросы работают. Для того чтобы запустить запрос, поставьте на него каретку и нажмите Ctrl/Cmd+Enter или кнопку Run на панели инструментов.

Если вы работаете в IDE с поддержкой JavaScript, запросы будут подсвечены. Подсветку в DataGrip добавим позже.

qh9mg2xbowuz8ifc7lxi-awawhs.png

Отладчик PL/SQL для Oracle


Первая версия давно ожидаемого отладчика для Oracle. Сейчас он работает с процедурами, функциями, пакетами, триггерами и анонимными блоками.

Не забудьте, что объект должен быть скомпилирован для отладки. Чтобы это сделать, используйте контекстное меню: Database tools | Recompile.

b15a-w3udxubriker-wmfimulms.png

Отметьте чекбокс With «debug». Если процедура уже скомпилирована для отладки, на ее иконке есть зеленый жучок.

29m3dhldylgc8vlgwyrruhshmte.png

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

8t8qy-gxcdqpbromu-afeaahae4.gif

Подробности об отладчике — у нас в документации (на английском). Мнения, комментарии, пожелания пишите, пожалуйста, сюда.

Работа с исходниками


Сравнение кода процедур


Две процедуры можно сравнить, выделив их и нажав Ctrl/Cmd+D. Раньше сравнивались только сигнатуры, теперь — и исходники.

twpq3cmcvu74xpkrxcj86yx9_b0.png

Трехпанельное слияние


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

is6ck4nht7irz_sxs9awkqdzhjg.png

Чтобы быть уверенным, что вы не перепишете чужой код, проверьте, что настройка Warn if editing outdated DDL включена в свойствах источника данных.

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


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

uqplcpy3-pvuhplsk5wjv_pjy3w.png

Красивые исходники в PostgreSQL


Если настройка pretty-printed отключена, PostgreSQL отдает исходники с большим количеством избыточных скобок:

trprq6ukpittz41aof7j3eipte4.png

Мы решили включить ее по умолчанию. В нашем примере скобок не осталось :)

qsmcvjobrlr7ghna8yys8mbwrwq.png

Но обратим внимание на то, что PostgreSQL пишет в своей документации:

Код в формате pretty-printed лучше читается, но формат по умолчанию, скорее всего, будет лучше понят будущими версиями PostgreSQL. Поэтому мы советуем не использовать pretty-printed код для дампов.

The pretty-printed format is more readable, but the default format is more likely to be interpreted the same way by future versions of PostgreSQL; avoid using pretty-printed output for dump purposes.

Запуск запросов


Прогресс выполнения в редакторе


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

geova3nhpntc3cmv7rw-cqtuwqa.gif

Флейм-чарт для планировщика


Это новый тип визуализации данных от планировщика. Чтобы открыть флейм-чарт (или флейм-граф, кому как нравится), нажмите кнопку слева:

mjfy6xnroo8q6bcudhzyv7woi8i.png

Выглядит так:

jzbclyuoc6ul9rib3aimwlqa5o4.png

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


Инспекции

DataGrip предупредит, если вы:

… используете оператор COALESCE без надобности: например, если первый аргумент никогда не бывает NULL. Вам предложат удалить ненужный код.

vsyasocmkwij1bpdoc6kfzwq1fi.png

… вставляете NULL в столбец, для которого это запрещено.

7om-ftdribo9pef2cjwexd0qyxc.png

… не перечислили все столбцы в предложении INSERT.

fglj4bzwa59znp8pli1omqo1858.png

… используете оператор «равно» для сравнения с NULL. Это сравнение ложно, потому что NULL это «неизвестно». Так как два значения, которые «неизвестны», сравнить нельзя, надо использовать специальный оператор IS NULL.

hyf0xwxmjj3k9hxhw2itc-ijrbo.png

… используете предложение ORDER BY в подзапросе. Эта инспекция работает только в SQL Server.

uxo8upgouwhequomduxldjtbaqc.png

… используете одновременно TOP и OFFSET. Это тоже инспекция для SQL Server.

phh2r2r49am-nbedrd4gnnmpqik.png

Конвертация конструкций

Сравнение с AND можно конвертировать в BETWEEN, и наоборот.

fpn9euhg-yvzyt2nf_3-44rofis.png

JOIN ON можно конвертировать в JOIN USING, и наоборот.

sp6eabtcmbdywbua32n4guwvagg.png

Текстовый редактор

Новое действие: сортировка строк по алфавиту. Может быть полезно при работе в CSV-файлами или поиске дубликатов в списке значений. Напоминаем, что вызывать любое действие можно по Ctrl/Cmd+Shift+A.

c13gqcy5orbbd25yfw_vvhczv3c.gif

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

rnxg8l-9neaimtweooqyg-x0tro.gif

Фильтрация объектов

Если используете фильтр объектов для проводника, например такой:

sc7bmvdba5xisqd-yr74gr7puhu.png

…то объекты, которые скрыты из проводника, будут считаться неизвестными для редактора кода. То есть мы предполагаем, что, если вы скрыли объекты из проводника, то и работать из SQL вы с ними не хотите.

ckhauugs5-8swkff86arwrg3hdy.png

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

В меню Generate, которое вызывается по Alt+Ins/Cmd+N, много новых объектов: материализованные представления, коллации, перечисления и не только.

pcbkdgghf2hhb4uar8nagtl6t-w.gif

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


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

kbpmg-u1tsveqdlifvojxjzqu10.png

Действие Modify Table работает из редактора данных. Например, если вы работаете с данными таблицы и решили добавить в нее столбец, теперь это сделать проще: нажмите Ctrl/Cmd+F6 и редактируйте таблицу.

d4anhq2w87qzlezwddmmrp_rqzi.png

И еще одна маленькая фича


Текст ошибки соединения можно погуглить, нажав на кнопку:

sohwv1xgh1n56_6fomlby1az1-i.png

На этом всё!

— Скачать триал на месяц
— Твитер, который мы читаем
— Почта, которую мы читаем: datagrip@jetbrains.com

Как всегда, ждем комментариев о том, что понравилось, и о самых важных для вас тикетов в Ютреке:)

Команда DataGrip

© Habrahabr.ru