Привет! Рассказываем о том, что мы сделали в 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 открываться не будет. А еще это теперь можно настроить: Спасибо за внимание! Напомним, что у нас есть свой канал в Телеграме, там можно задавать вопросы и делиться опытом. Но если нашли баг, лучше сразу пишите в трекер, чтобы он не потерялся. Ну и сюда, конечно, тоже комментарии пишите :) На этом всё! Команда DataGrip  Добавлять и переименовывать столбцы в CSV-файлах теперь можно из интерфейса редактора данных Marketing manager