Привет! Рассказываем о том, что мы сделали в DataGrip за четыре месяца. Если вы пользуетесь другими IDE от JetBrains и работаете в них с базами данных, то этот пост для вас тоже.
![](https://habrastorage.org/getpro/habr/upload_files/534/840/26b/53484026b577a01940bea743e45d2551.png)
Источник данных на основе кода
Генерация из обычного источника данных
Источник данных на основе кода — это виртуальное отображение структуры базы данных на основе файлов с кодом. Теперь такой источник данных можно генерировать из обычного источника данных. Полученные файлы можно хранить под системой контроля версий. Таким образом, в дереве у вас всегда будет версия базы из репозитория, которую можно обновлять локально, генерируя файлы снова.
Сгенерировать источник данных на основе кода можно из контекстного меню: SQL Scripts | Dump to DDL data source.
![](https://habrastorage.org/getpro/habr/upload_files/4fa/673/1b2/4fa6731b257dfecb774195715790ac37.png)
В открывшемся окне выберите папку, в которой будут сгенерированы файлы.
![](https://habrastorage.org/getpro/habr/upload_files/a1e/ce4/478/a1ece4478f02c9250b97f0dd7d0bc18d.png)
На вкладке Generation выберите, как их сгенерировать.
![](https://habrastorage.org/getpro/habr/upload_files/05a/346/8cc/05a3468ccc8eb1d81863c549066bc35c.png)
После нажатия OK источник данных будет готов.
![](https://habrastorage.org/getpro/habr/upload_files/2e4/a98/dbf/2e4a98dbfbaf1e94a08c8c124b9037f6.png)
Папка с новыми файлами автоматически откроется в панели Files.
![](https://habrastorage.org/getpro/habr/upload_files/0f0/de3/5ae/0f0de35ae78c3f450a9f8848533c4dd8.png)
Создание объектов
Начиная с этой версии создавать объекты внутри DDL-источников данных можно из интерфейса. Соответствующие файлы будут созданы на диске.
![](https://habrastorage.org/getpro/habr/upload_files/ffd/95d/17f/ffd95d17fd5b265d5fd5617055f5984b.png)
Диаграммы
Давненько мы тут ничего не делали. А теперь:
видны комментарии к таблицам;
показываются цвета объектов;
появилась возможность слияния связей.
![](https://habrastorage.org/getpro/habr/upload_files/47e/bdc/f4a/47ebdcf4a59d22bfcd22d710baf9fe1d.png)
Редактор данных
Поиск по истории изменений
Теперь легче найти версию в истории изменений: работает текстовый поиск.
![](https://habrastorage.org/getpro/habr/upload_files/29b/a9d/a3d/29ba9da3d510e925f00e9fdfc8824dca.png)
История изменений исходного кода объекта
Локальные изменения исходного кода объекта можно увидеть в истории изменений. Пригодится при работе с функциями и хранимыми процедурами.
![](https://habrastorage.org/getpro/habr/upload_files/357/749/3d4/3577493d42f2cdddfe88d37127ce6794.png)
Исходник каждого объекта DataGrip хранит в файле, поэтому все изменения отслеживаются. Более того, внешние изменения, которые «прилетают» с каждой новой интроспекцией, также отображаются в истории изменений.
Автодополнение
Управление набором объектов
Теперь можно определять, какие объекты будут попадать в список автодополнения.
![](https://habrastorage.org/getpro/habr/upload_files/597/5e8/61a/5975e861af4815eb8cbfaa069981218d.png)
Есть три варианта:
Suggest only search path objects: в список попадут только объекты из схемы, указанной в переключателе в верхнем правом углу консоли. Для PostgreSQL это search path.
Suggest objects from current scope: эта опция стоит по умолчанию. В списке будут предложены объекты, которые могут быть использованы в текущем контексте без квалификатора схемой, то есть объекты из переключателя, запросов USE и схемы, выставленной по умолчанию в свойствах подключения.
Suggest objects from all available schemas: с этой опцией в список попадут объекты из всех возможных схем и баз данных.
Управлять списком на ходу можно при помощи умного автодополнения. Это когда вы нажимаете Ctrl+Space несколько раз.
Нажали один раз (или автодополнение вызывалось автоматически): работает опция, которую вы выбрали в настройках.
Нажали второй раз: в список добавятся все схемы, кроме включенных в свойствах источника данных.
Нажали в третий раз: в списке все объекты из всех доступных схем и баз.
[MongoDB] Автодополнение для полей и операторов
Полноценное автодополнение кода, с учетом полей и операторов, появилось в MongoDB. Большой пост на английском о том, что и как работает, — здесь.
![](https://habrastorage.org/getpro/habr/upload_files/24e/a2f/bfc/24ea2fbfc62e3eed9afeac9de9988ccf.png)
[SQL Server] Автодополнение для синонимов объектов из других баз
Теперь работает :)
![](https://habrastorage.org/getpro/habr/upload_files/2de/67a/0db/2de67a0db051b034e2611d997ee53aab.png)
Дополнение INSERT и вычисляемые столбцы
Теперь вычисляемые столбцы не включены в список сразу всех столбцов при дополнении запроса INSERT.
![](https://habrastorage.org/getpro/habr/upload_files/432/c2a/4d9/432c2a4d9d1c6aaffbde5905d57d4a3a.png)
Подсветка кода
[Redshift] Поддержка рекурсивных табличных выражений
Мы не только правильно подсвечиваем код с рекурсивными табличными выражениями, но и показываем рекурсивность на панели слева.
![](https://habrastorage.org/getpro/habr/upload_files/6e5/b11/756/6e5b11756bb870300695309a4b6d9d18.png)
[ClickHouse] Улучшенная поддержка табличных выражений
Раньше мы корректно подсвечивали запрос, только если имя табличного выражения шло после слова AS. Теперь все нормально, даже если перед.
![](https://habrastorage.org/getpro/habr/upload_files/466/b1e/418/466b1e4183d522b04d66f055123348cc.png)
Проводник баз данных
Отдельные ноды для функций и процедур
Если включить опцию Separate Procedures and Function в настройках, то функции и процедуры будут разделены в проводнике.
Для SQL Server скалярные и табличные функции также разделены. Для PostgreSQL появится узел для триггерных функций.
![](https://habrastorage.org/getpro/habr/upload_files/4f5/dac/d6b/4f5dacd6bd6c5d54039d22b7fae010ec.png)
Отдельные узлы для триггеров, ключей и индексов
Еще одна настройка — Show Constraints and Triggers in the schema. Если ее включить, триггеры, ключи и индексы будут отражаться в отдельных узлах на корневом уровне схемы, а не внутри таблиц.
![](https://habrastorage.org/getpro/habr/upload_files/bc2/867/52b/bc286752b7c764410ea5ba68deb5f35c.png)
Почему это может быть полезно?
Легче найти объект быстрым поиском по дереву.
Если выключить Show Empty Groups, то внутри узла таблицы будут сразу открываться столбцы.
Интроспекция
[CockroachDB] Нативная интроспекция
Мы доделали поддержку CockroachDB. Интроспекция, то есть получение информации об объектах базы, теперь — наша работа, а не драйвера.
![](https://habrastorage.org/getpro/habr/upload_files/a4a/340/78a/a4a34078a04245f71a03fba230bf1b8d.png)
Помимо того что интроспекция стала быстрее, добавились новые объекты: роли, role, deftype и check constraint. Партиции пока не интроспектируем.
[PostgreSQL] Виртуальные ключи для pg_catalog
У нас есть механизм назначения виртуальных внешних ключей. Мы покрыли такими ключами pg_catalog. Вот что это дало:
Автодополнение для JOIN в запросах с системными таблицами.
![](https://habrastorage.org/getpro/habr/upload_files/314/eb9/b8f/314eb9b8f3117d662dd3efaf65135d04.png)
Работает навигация по столбцам в этих таблицах.
![](https://habrastorage.org/getpro/habr/upload_files/d2b/27d/6db/d2b27d6db1125e386f2b5fd257cf926d.png)
Редактор данных
Контекстные шаблон из редактора данных
В прошлом релизе мы сделали контекстные шаблоны: код генерируется с использованием текущего объекта. Теперь эти шаблоны работают из редактора данных: если вы смотрите данные таблицы, очень легко сгенерировать любой запрос с ее использованием. Для этого вызовите окно SQL Scripts из Find Action (Cmd/Ctrl+Shift+A).
![](https://habrastorage.org/getpro/habr/upload_files/987/74e/ff7/98774eff731c443d27d1c26391360945.gif)
Настройка накапливаемой сортировки
Не всем понравилось, что накапливаемая сортировка теперь по Alt+Click на имени столбца. Чтобы вернуть все к прежнему состоянию, то есть просто по клику, используйте эту настройку:
![](https://habrastorage.org/getpro/habr/upload_files/d96/7aa/c69/d967aac69680a50757817b2b3414101c.png)
[MongoDB] Добавление/удаление столбца
Теперь в MongoDB можно добавлять столбцы в коллекции из интерфейса. По сути, это добавление поля в документ.
![](https://habrastorage.org/getpro/habr/upload_files/07c/8bb/410/07c8bb410c9758abca658a5990e1d111.gif)
Можно и удалять столбцы. В этом случае данные будут удалены не только в документах на видимой странице, а из всей коллекции.
Добавление/переименование столбцы в CSV-файле
Добавлять и переименовывать столбцы в CSV-файлах теперь можно из интерфейса редактора данных.
![](https://habrastorage.org/getpro/habr/upload_files/7f5/f97/8dc/7f5f978dc654cb52842eb557e8c5eb30.gif)
Все строчки при навигации по ключам
Навигация по ключам стала быстрее: DataGrip больше не предлагает перейти к первой попавшейся строчке, а показывает сразу все.
![](https://habrastorage.org/getpro/habr/upload_files/e78/564/2ca/e785642ca56330dde624eca2aef7eaff.gif)
Навигация
Поведение панели навигации по Enter
Теперь все просто: Enter всегда открывает узел на панели навигации.
![](https://habrastorage.org/getpro/habr/upload_files/258/0fb/16a/2580fb16af815b73b83d26d8aaf26dc8.png)
Что происходило раньше:
на таблицах открывались данные;
на источниках данных открывалась дефолтная консоль.
Теперь для навигации используйте классические сочетания клавиш:
открыть DDL: Ctrl/Cmd+B
открыть данные: F4
открыть в проводнике: Alt/Opt+Shift+B
Общее
Новое месторасположение проектов
В DataGrip проекты теперь по умолчанию расположены в том же месте, что и во всех других IDE на основе платформы IntelliJ, — в домашней папке пользователя, во вложенной папке DataGripProjects.
![](https://habrastorage.org/getpro/habr/upload_files/d29/4c7/91d/d294c791ddb68ebbba2485439a7b4c23.png)
Проект в DataGrip — это комплекс ваших источников данных, консолей и временных файлов, а также прикрепленных папок. Раньше они хранились в папке конфигурации, а это означает, что каждый раз, когда вы обновляли DataGrip, проекты копировались вместе с настройками IDE. Иногда это приводило к тому, что источники данных исчезали. Надеемся, что эта проблема решена.
Настройки
Кнопки «вперед» и «назад»
Навигироваться теперь легче, а потеряться в настройках сложнее.
![](https://habrastorage.org/getpro/habr/upload_files/e64/171/006/e64171006bfa222cb452ad61a5c83649.png)
Дополнительные настройки
Мы добавили в настройки новый раздел Advanced Settings. Большинство настроек перенесено сюда из реестра, но есть и новые.
Несколько важных настроек в этом разделе:
размер левого отступа в режиме Distraction free;
возможность настроить перемещение курсора после комментирования строки;
изменение поведения двойного щелчка по вкладке.
![](https://habrastorage.org/getpro/habr/upload_files/415/0d7/e18/4150d7e1894d4f1de105d49203d4325b.png)
Поведение окна Services
Если запрос не возвращает данных, окно Services открываться не будет. А еще это теперь можно настроить:
![](https://habrastorage.org/getpro/habr/upload_files/3ed/621/283/3ed62128385ed3239a38035462da6fde.png)
Спасибо за внимание! Напомним, что у нас есть свой канал в Телеграме, там можно задавать вопросы и делиться опытом. Но если нашли баг, лучше сразу пишите в трекер, чтобы он не потерялся. Ну и сюда, конечно, тоже комментарии пишите :)
На этом всё!
Команда DataGrip
Добавлять и переименовывать столбцы в CSV-файлах теперь можно из интерфейса редактора данных