Привет! Рассказываем о том, что мы сделали в 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
открыть данные: F4
открыть в проводнике: Alt/Opt+Shift+B
Общее
Новое месторасположение проектов
В DataGrip проекты теперь по умолчанию расположены в том же месте, что и во всех других IDE на основе платформы IntelliJ, — в домашней папке пользователя, во вложенной папке DataGripProjects.

Проект в DataGrip — это комплекс ваших источников данных, консолей и временных файлов, а также прикрепленных папок. Раньше они хранились в папке конфигурации, а это означает, что каждый раз, когда вы обновляли DataGrip, проекты копировались вместе с настройками IDE. Иногда это приводило к тому, что источники данных исчезали. Надеемся, что эта проблема решена.
Настройки
Кнопки «вперед» и «назад»
Навигироваться теперь легче, а потеряться в настройках сложнее.

Дополнительные настройки
Мы добавили в настройки новый раздел Advanced Settings. Большинство настроек перенесено сюда из реестра, но есть и новые.
Несколько важных настроек в этом разделе:
размер левого отступа в режиме Distraction free;
возможность настроить перемещение курсора после комментирования строки;
изменение поведения двойного щелчка по вкладке.

Поведение окна Services
Если запрос не возвращает данных, окно Services открываться не будет. А еще это теперь можно настроить:

Спасибо за внимание! Напомним, что у нас есть свой канал в Телеграме, там можно задавать вопросы и делиться опытом. Но если нашли баг, лучше сразу пишите в трекер, чтобы он не потерялся. Ну и сюда, конечно, тоже комментарии пишите :)
На этом всё!
Команда DataGrip
Добавлять и переименовывать столбцы в CSV-файлах теперь можно из интерфейса редактора данных