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

в 16:27, , рубрики: intellij, intellij idea, jetbrains, mongodb, mysql, oracle, phpstorm, postgresql, pycharm, sql, базы данных, Блог компании JetBrains, дебаггер, запросы

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

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

Поддержка MongoDB

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Но обратим внимание на то, что 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.

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

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

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

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

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

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

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

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

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

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

Инспекции

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

На этом всё!

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

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

Команда DataGrip

Автор: Максим Соболевский

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js