DataGrip 2019.2: Управление соединениями, поиск по данным, фильтрация в навигации
Привет! Рассказываем о том, что мы сделали в 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.3: MongoDB, дебаггер, модный прогресс-бар, много новых инспекций
Привет! Как водится, три раза в году мы рассказываем о том, над чем работали. Это статья о том, что нового в DataGrip 2019.3, а значит и во всех IDE от JetBrains с поддержкой баз данных.
Поддержка MongoDB
Это будет наша первая публикация на Хабре, в комментариях к которой не спросят: «А когда планируется поддержка Монги?»
Встречайте! Что работает в этой версии:
Интроспекция: В проводнике базы данных отображаются коллекции и поля. Мы анализируем первые 10 документов из каждой коллекции, чтобы иметь представление о ее полях.
Если вы хотите увеличить это число, укажите его в JDBC-параметре fetch_documents_for_metainfo на вкладке Advanced в свойствах источника данных.
Просмотр данных: Просматривайте коллекции в табличном виде по страницам. Можно сортировать по значениям и использовать фильтр.
Древовидный просмотр: Специально для MongoDB мы сделали древовидный просмотр данных. Чтобы его включить, нажмите на шестеренку, затем View as… | Tree. Еще такой просмотр работает для массивов PostgreSQL, и мы планируем сделать так, чтобы в виде дерева можно было смотреть JSON- и XML-поля.
Консоль запросов: Сейчас нет поддержки при написании кода, но запросы работают. Для того чтобы запустить запрос, поставьте на него каретку и нажмите Ctrl/Cmd+Enter или кнопку Run на панели инструментов.
Если вы работаете в IDE с поддержкой JavaScript, запросы будут подсвечены. Подсветку в DataGrip добавим позже.
Отладчик PL/SQL для Oracle
Первая версия давно ожидаемого отладчика для Oracle. Сейчас он работает с процедурами, функциями, пакетами, триггерами и анонимными блоками.
Не забудьте, что объект должен быть скомпилирован для отладки. Чтобы это сделать, используйте контекстное меню: Database tools | Recompile.
Отметьте чекбокс With “debug”. Если процедура уже скомпилирована для отладки, на ее иконке есть зеленый жучок.
Чтобы запустить отладчик в консоли, нажмите кнопку Debug на панели инструментов.
Подробности об отладчике — у нас в документации (на английском). Мнения, комментарии, пожелания пишите, пожалуйста, сюда.
Работа с исходниками
Сравнение кода процедур
Две процедуры можно сравнить, выделив их и нажав Ctrl/Cmd+D. Раньше сравнивались только сигнатуры, теперь — и исходники.
Трехпанельное слияние
Когда вы обновляете исходный код объекта, DataGrip предупреждает, если за это время код изменился в базе. Теперь для решения конфликтов вам предложат слияние при помощи трех панелей: слева вы увидите вашу версию, справа — то, что пришло из базы, а в середине — результат их слияния.
Чтобы быть уверенным, что вы не перепишете чужой код, проверьте, что настройка Warn if editing outdated DDL включена в свойствах источника данных.
Помощь в написании кода
В исходном коде объектов теперь работает помощь при написании кода. Например, можно раскрыть звездочку.
Красивые исходники в PostgreSQL
Если настройка pretty-printed отключена, PostgreSQL отдает исходники с большим количеством избыточных скобок:
Мы решили включить ее по умолчанию. В нашем примере скобок не осталось 🙂
Но обратим внимание на то, что 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 предупредит, если вы:
… используете оператор COALESCE без надобности: например, если первый аргумент никогда не бывает NULL. Вам предложат удалить ненужный код.
… вставляете NULL в столбец, для которого это запрещено.
… не перечислили все столбцы в предложении INSERT.
… используете оператор «равно» для сравнения с NULL. Это сравнение ложно, потому что NULL это «неизвестно». Так как два значения, которые «неизвестны», сравнить нельзя, надо использовать специальный оператор IS NULL.
… используете предложение ORDER BY в подзапросе. Эта инспекция работает только в SQL Server.
… используете одновременно TOP и OFFSET. Это тоже инспекция для SQL Server.
Конвертация конструкций
Сравнение с AND можно конвертировать в BETWEEN, и наоборот.
JOIN ON можно конвертировать в JOIN USING, и наоборот.
Текстовый редактор
Новое действие: сортировка строк по алфавиту. Может быть полезно при работе в CSV-файлами или поиске дубликатов в списке значений. Напоминаем, что вызывать любое действие можно по Ctrl/Cmd+Shift+A.
Сделали поиск по выделенному фрагменту кода. Сначала выделите область для поиска, потом нажмите Ctrl/Cmd+F. Если хотите искать по всему файлу выделенный фрагмент, нажмите сочетание клавиш еще раз.
Фильтрация объектов
Если используете фильтр объектов для проводника, например такой:
…то объекты, которые скрыты из проводника, будут считаться неизвестными для редактора кода. То есть мы предполагаем, что, если вы скрыли объекты из проводника, то и работать из SQL вы с ними не хотите.
Генерация кода
В меню Generate, которое вызывается по Alt+Ins/Cmd+N, много новых объектов: материализованные представления, коллации, перечисления и не только.
Редактор данных
Теперь, если в результате есть столбцы с одинаковыми именами, мы показываем, из какой таблицы они взяты. Это удобно еще и потому, что эти имена используются при экспорте: например, если вы создаете новую таблицу из результата, у вас не будет конфликта имен.
Действие Modify Table работает из редактора данных. Например, если вы работаете с данными таблицы и решили добавить в нее столбец, теперь это сделать проще: нажмите Ctrl/Cmd+F6 и редактируйте таблицу.
И еще одна маленькая фича
Текст ошибки соединения можно погуглить, нажав на кнопку:
Как всегда, ждем комментариев о том, что понравилось, и о самых важных для вас тикетах в Ютреке 🙂
DataGrip 2021.2: Генерация источника на основе кода, поиск по истории изменений, управление списком автодополнения и др
Привет! Рассказываем о том, что мы сделали в DataGrip за четыре месяца. Если вы пользуетесь другими IDE от JetBrains и работаете в них с базами данных, то этот пост для вас тоже.
Источник данных на основе кода
Генерация из обычного источника данных
Источник данных на основе кода — это виртуальное отображение структуры базы данных на основе файлов с кодом. Теперь такой источник данных можно генерировать из обычного источника данных. Полученные файлы можно хранить под системой контроля версий. Таким образом, в дереве у вас всегда будет версия базы из репозитория, которую можно обновлять локально, генерируя файлы снова.
Сгенерировать источник данных на основе кода можно из контекстного меню: SQL Scripts | Dump to DDL data source.
В открывшемся окне выберите папку, в которой будут сгенерированы файлы.
На вкладке Generation выберите, как их сгенерировать.
После нажатия OK источник данных будет готов.
Папка с новыми файлами автоматически откроется в панели Files.
Создание объектов
Начиная с этой версии создавать объекты внутри DDL-источников данных можно из интерфейса. Соответствующие файлы будут созданы на диске.
Диаграммы
Давненько мы тут ничего не делали. А теперь:
видны комментарии к таблицам;
показываются цвета объектов;
появилась возможность слияния связей.
Редактор данных
Поиск по истории изменений
Теперь легче найти версию в истории изменений: работает текстовый поиск.
История изменений исходного кода объекта
Локальные изменения исходного кода объекта можно увидеть в истории изменений. Пригодится при работе с функциями и хранимыми процедурами.
Исходник каждого объекта DataGrip хранит в файле, поэтому все изменения отслеживаются. Более того, внешние изменения, которые «прилетают» с каждой новой интроспекцией, также отображаются в истории изменений.
Автодополнение
Управление набором объектов
Теперь можно определять, какие объекты будут попадать в список автодополнения.
Suggest only search path objects: в список попадут только объекты из схемы, указанной в переключателе в верхнем правом углу консоли. Для PostgreSQL это search path.
Suggest objects from current scope: эта опция стоит по умолчанию. В списке будут предложены объекты, которые могут быть использованы в текущем контексте без квалификатора схемой, то есть объекты из переключателя, запросов USE и схемы, выставленной по умолчанию в свойствах подключения.
Suggest objects from all available schemas: с этой опцией в список попадут объекты из всех возможных схем и баз данных.
Управлять списком на ходу можно при помощи умного автодополнения. Это когда вы нажимаете Ctrl+Space несколько раз.
Нажали один раз (или автодополнение вызывалось автоматически): работает опция, которую вы выбрали в настройках.
Нажали второй раз: в список добавятся все схемы, кроме включенных в свойствах источника данных.
Нажали в третий раз: в списке все объекты из всех доступных схем и баз.
[MongoDB] Автодополнение для полей и операторов
Полноценное автодополнение кода, с учетом полей и операторов, появилось в MongoDB. Большой пост на английском о том, что и как работает, — здесь.
[SQL Server] Автодополнение для синонимов объектов из других баз
Дополнение INSERT и вычисляемые столбцы
Теперь вычисляемые столбцы не включены в список сразу всех столбцов при дополнении запроса INSERT.
Подсветка кода
[Redshift] Поддержка рекурсивных табличных выражений
Мы не только правильно подсвечиваем код с рекурсивными табличными выражениями, но и показываем рекурсивность на панели слева.
[ClickHouse] Улучшенная поддержка табличных выражений
Раньше мы корректно подсвечивали запрос, только если имя табличного выражения шло после слова AS. Теперь все нормально, даже если перед.
Проводник баз данных
Отдельные ноды для функций и процедур
Если включить опцию Separate Procedures and Function в настройках, то функции и процедуры будут разделены в проводнике.
Для SQL Server скалярные и табличные функции также разделены. Для PostgreSQL появится узел для триггерных функций.
Отдельные узлы для триггеров, ключей и индексов
Еще одна настройка — Show Constraints and Triggers in the schema. Если ее включить, триггеры, ключи и индексы будут отражаться в отдельных узлах на корневом уровне схемы, а не внутри таблиц.
Почему это может быть полезно?
Легче найти объект быстрым поиском по дереву.
Если выключить Show Empty Groups, то внутри узла таблицы будут сразу открываться столбцы.
Интроспекция
[CockroachDB] Нативная интроспекция
Мы доделали поддержку CockroachDB. Интроспекция, то есть получение информации об объектах базы, теперь — наша работа, а не драйвера.
Помимо того что интроспекция стала быстрее, добавились новые объекты: роли, role, deftype и check constraint. Партиции пока не интроспектируем.
[PostgreSQL] Виртуальные ключи для pg_catalog
У нас есть механизм назначения виртуальных внешних ключей. Мы покрыли такими ключами pg_catalog. Вот что это дало:
Автодополнение для JOIN в запросах с системными таблицами.
Работает навигация по столбцам в этих таблицах.
Редактор данных
Контекстные шаблон из редактора данных
В прошлом релизе мы сделали контекстные шаблоны: код генерируется с использованием текущего объекта. Теперь эти шаблоны работают из редактора данных: если вы смотрите данные таблицы, очень легко сгенерировать любой запрос с ее использованием. Для этого вызовите окно SQL Scripts из Find Action (Cmd/Ctrl+Shift+A).
Настройка накапливаемой сортировки
Не всем понравилось, что накапливаемая сортировка теперь по Alt+Click на имени столбца. Чтобы вернуть все к прежнему состоянию, то есть просто по клику, используйте эту настройку:
[MongoDB] Добавление/удаление столбца
Теперь в MongoDB можно добавлять столбцы в коллекции из интерфейса. По сути, это добавление поля в документ.
Можно и удалять столбцы. В этом случае данные будут удалены не только в документах на видимой странице, а из всей коллекции.
Добавление/переименование столбцы в CSV-файле
Добавлять и переименовывать столбцы в CSV-файлах теперь можно из интерфейса редактора данных.
Все строчки при навигации по ключам
Навигация по ключам стала быстрее: DataGrip больше не предлагает перейти к первой попавшейся строчке, а показывает сразу все.
Навигация
Поведение панели навигации по Enter
Теперь все просто: Enter всегда открывает узел на панели навигации.
Что происходило раньше:
на таблицах открывались данные;
на источниках данных открывалась дефолтная консоль.
Теперь для навигации используйте классические сочетания клавиш:
открыть DDL: Ctrl/Cmd+B
открыть в проводнике: Alt/Opt+Shift+B
Общее
Новое месторасположение проектов
В DataGrip проекты теперь по умолчанию расположены в том же месте, что и во всех других IDE на основе платформы IntelliJ, — в домашней папке пользователя, во вложенной папке DataGripProjects.
Проект в DataGrip — это комплекс ваших источников данных, консолей и временных файлов, а также прикрепленных папок. Раньше они хранились в папке конфигурации, а это означает, что каждый раз, когда вы обновляли DataGrip, проекты копировались вместе с настройками IDE. Иногда это приводило к тому, что источники данных исчезали. Надеемся, что эта проблема решена.
Настройки
Кнопки «вперед» и «назад»
Навигироваться теперь легче, а потеряться в настройках сложнее.
Дополнительные настройки
Мы добавили в настройки новый раздел Advanced Settings. Большинство настроек перенесено сюда из реестра, но есть и новые.
Несколько важных настроек в этом разделе:
размер левого отступа в режиме Distraction free;
возможность настроить перемещение курсора после комментирования строки;
изменение поведения двойного щелчка по вкладке.
Поведение окна Services
Если запрос не возвращает данных, окно Services открываться не будет. А еще это теперь можно настроить:
Спасибо за внимание! Напомним, что у нас есть свой канал в Телеграме, там можно задавать вопросы и делиться опытом. Но если нашли баг, лучше сразу пишите в трекер, чтобы он не потерялся. Ну и сюда, конечно, тоже комментарии пишите 🙂
Добавлять и переименовывать столбцы в CSV-файлах теперь можно из интерфейса редактора данных



