Привет! Продолжаем серию постов о новых версиях IDE от JetBrains. Поговорим о том, что нового в DataGrip 2017.2.

— Поддержка Amazon Redshift и Microsoft Azure
Несколько баз данных для одного источника PostgreSQL
— Контроль транзакций
— Вычисление выражений
— Разделены вкладки DDL и Data для таблиц
— Интеграция с инструментами восстановления для PostgreSQL и MySQL
— Улучшения, связанные с запуском запросов
— Улучшения, связанные с написанием кода
и другое…


Поддержка Amazon Redshift и Microsoft Azure


Облачные технологии набирают обороты, и мы стараемся не отставать. Пользователи просили поддержать некоторые из них в нашем трекере, особенно Redshift.



Microsoft Azure похожа на SQL Server: мы добавили драйвер, интерфейс для создания источника данных, и улучшили получение информации об объектах. Этот процесс называется «интроспекция».

Интроспекция в Amazon Redshift стала инкрементальной: после операции DataGrip обращается за информацией только об измененных объектах.

Поддержали специфические части грамматики, которых нет в PostgreSQL. Например, UNLOAD подсвечивается корректно, а запрос в строке аргумента обрабатывается, как обычный SQL, — работает автодополнение и навигация.



Ещё пример: поддержали функции, которых нет в PostgreSQL.



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

Если вы подключались к Azure и Redshift через драйвера для SQL Server и PostgreSQL, пожалуйста, переключитесь на нужный драйвер из контекстного меню.



Несколько баз данных для одного источника PostgreSQL


Эту штуку долго ждали, и мы благодарим тех, кто дождался :)

Для этого мы переписали значительную часть ядра и до сих пор работаем на ней. Так что ваше мнение об использовании нескольких баз в PostgreSQL нам особенно важно.



Источники данных с несколькими базами теперь работают в Amazon Redshift, в Microsoft Azure и в других базах, к которым вы подсоединитесь через JDBC, если это поддерживает сам драйвер.

Контроль тразакций


Контроль транзакций (Transaction Control) заменил опцию Auto-commit.

Определяйте уровень контроля транзакций для каждого источника данных. В ручном режиме (Manual) транзакции надо фиксировать, выполняя COMMIT. В автоматическом режиме (Auto) — нет.



Уровень контроля транзакций можно определить и для каждой консоли в отдельности наряду с уровнем изоляции (Isolation level), если база данных его поддерживает.



В редакторе данных при ручном режиме добавили две кнопки: Commit и Rollback. Эти действия доступны и в контекстном меню.



Работает это так:

Автоматический и ручной режим.


Кнопка Submit или Ctrl/Cmd+Enter отправляет данные в базу: накатываются ваши локальные изменения, которые до этого момента были подсвечены и хранились внутри сессии DataGrip. Но эта транзакция не будет зафиксирована, если у вас выставлен ручной режим.

Revert Selected из контекстного меню или Ctrl/Cmd+Alt+Z на выделенных строках откатывает локальные изменения в этих строках. Раньше это вызывалось по Ctrl+Z, но обычно эта комбинация клавиш означает отменить, а не откатить.

Только в ручном режиме


Кнопка Commit или Shift+Ctrl+Alt+Enter фиксирует транзакцию. Если у вас висят локальные изменения, не отправленные в базу (напомню: подсвеченные), они автоматически отправятся в базу перед фиксированием.

Кнопка Rollback откатывает незафиксированную транзакцию.


Вычисление выражений


Это поможет быстро посмотреть данные без написания отдельного запроса.

Как и в других наших IDE, используйте комбинацию клавиш Ctrl+Alt+F8 для быстрого вычисления значения выражения. Под выражением в данном случае понимается значение объекта базы данных, например для таблицы — это сами данные.



Для столбца из запроса это — значения столбца в ожидаемом результате.



Если выполнить то же действие на ключевом слове в запросе (или подзапросе), его результат появится во всплывающем окне. Для этого работает и Alt+Click.



Alt+F8 вызывает отдельное окно для вычисления выражений. Как и в «быстром» варианте, для таблицы вы увидите данные.



Здесь можно вычислять выражения в классическом понимании этого.



DDL таблицы


Мы отделили данные таблиц от исходных кодов — больше нет вкладок DDL и Data.

Теперь по двойному клику на таблице открываются данные. Для просмотра DDL нажмите Edit Source на панели инструментов или Ctrl/Cmd+B на таблице.



Этот же DDL-редактор вы увидите, если нажмете Ctrl/Cmd+B на имени таблицы в SQL-скрипте. Ctrl/Cmd+click делает то же. В предыдущих версиях это действие выделяло объект в дереве баз данных. В 2017.2 для этого нажмите Alt+F1 и выберите Database view. Напишите нам, если стало неудобно: всё-таки, для такого действия раньше было одно нажатие, а теперь два.

А вот редактор данных для таблицы стало открыть легче — просто нажмите F4 в коде или в дереве.




Интеграция с инструментами восстановления для PostgreSQL и MySQL


В 2016.3 мы интегрировали в DataGrip mysqldump и pg_dump. Логично было интегрировать и инструменты восстановления для этих баз, об этом даже просили на Хабре в прошлый раз. Они появились в контекстном меню. Если в данном контексте доступен только один инструмент, например пункт меню называется ‘Restore with pg_restore’.



Если база — PostgreSQL, то использовать можно pg_dump или psql: выбирайте вверху диалога.



А так окно выглядит для MySQL:



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


Добавили новое действие — Attach console. Вызывается, как всегда, из поиска действий по Ctrl+Shift+A или контекстного меню файла. Цель — запустить файл в контексте конкретной консоли, которую вы к нему прикрепите.

Таким образом можно выполнить скрипт на нескольких источниках данных последовательно.



Это просили: нотификация о завершении длинных запросов. Сейчас запрос, время выполнения которого больше 20 секунд, бросит такую нотификацию внутри DataGrip. Нотификацию можно выключить: имя нотификации “Database queries that took much time”.



Ещё одна вещь, которую просили: теперь, если вы переключаете консоли, переключается и результат, полученный из неё.



И наоборот: при переключении вкладок с результатами переключаются консоли.



Это поведение теперь по умолчанию — чтобы его отключить, ищите опции “Autoscroll ..” в меню настроек по иконке с шестеренкой.



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



Починили переключатель схем для read-only соединений в MySQL.



Написание кода


Автодополнение теперь работает для функций, возвращающих таблицы.



Ссылки NEW и OLD корректно обрабатываются для триггеров в PostgreSQL.



Добавили поддержку для предложений MERGE.



Поддержали последовательности в скриптах.



Остальное


Добавили:


— Объекты базы можно добавлять в закладки (Bookmarks).
— Индексирование файла можно остановить и продолжить в любой момент.
— Результаты поиска в Find in Path с одних и тех же строк объединяются в один результат.
— Поддержка ALTER FOREIGN TABLE в PostgreSQL.
— Поддержка функции ‘json_table’ в Oracle.
— Отображаются все атрибуты в сгенерированных DDL для Redshift.

Исправили:


DBE-4600, переименованная схема теперь сразу отображается в скрипте и в дереве.
DBE-1288, переименование последовательностей в PostgreSQL не ломает запрос.
DBE-4507, теперь можно создать составной первичный ключ.
DBE-4637, запросы с GROUP BY больше не сообщают об ошибке, которой нет.
— Прокрутка в редакторе данных стала быстрее.

И как всегда: скачать здесь, о багах сообщать сюда, а ещё мы отвечаем на форуме, в Твиттере и здесь, в комментариях.

Спасибо!
JetBrains.

Комментарии (17)


  1. denismaster
    03.08.2017 15:16
    +1

    Всегда приятно видеть развитие таких замечательных продуктов! Все хочу спросить, будут ли в ближайшей перспективе новости о Rider?)


    1. moscas Автор
      03.08.2017 15:22

      Должны быть в самой наибилжайшей :)


  1. ProgerMan
    03.08.2017 16:37

    Для молодняка не хватает запросов в Event Log на изменение таблиц, когда ручками правят. Лень им update/insert/delete-запросы писать, а изменения сохранить в скрипте надо. И это пока единственное, что мешает им уйти с MySQL Workbench.


    1. deinlandel
      04.08.2017 10:55

      Это не только для скриптов полезно. Например, возможность отредактировать данные в Workbench и посмотреть, какие же в точности запросы будут выполнены ПЕРЕД их выполнением — это очень полезно.


    1. moscas Автор
      04.08.2017 11:01

      Спасибо! Мы часто говорим о том, что это нужно. Так что эту штуку мы планируем :) Но когда точно, пока неясно. https://youtrack.jetbrains.com/issue/DBE-3501


  1. maratische
    03.08.2017 17:43

    в Идее в таблице после всех столбцов появились все триггеры и прочие рутины с возможностью провалиться и посмотреть исходный код

    спасибо, так облегчили работу


  1. zelenin
    03.08.2017 21:50

    поддержка nosql, в частности mongo, планируется?


    1. moscas Автор
      04.08.2017 11:02

      Планируется, но не в ближайшем будущем. https://youtrack.jetbrains.com/issue/DBE-41


  1. rolltin
    04.08.2017 14:07

    Когда уже сделаете, чтобы при генерации DDL из PostgreSQL указывался OWNER и права на данный объект БД?


  1. Chaak
    05.08.2017 21:41

    После обновления до PHP Storm 2017.2 сломался экспорт данных в CSV из запроса.
    Если раньше можно было, выполнив SQL запрос, а затем выделив несколько строк результата, нажать кнопочку To File..., то теперь эта кнопка заблокирована:

    Скриншот
    image


    1. moscas Автор
      08.08.2017 14:25

      Спасибо! Починили, будет в багфиксе.


    1. moscas Автор
      10.08.2017 17:36

      Проверяйте :)


    1. moscas Автор
      10.08.2017 17:36

      Кнопку, кстати, тоже добавили. Спасибо.


  1. Vicking
    08.08.2017 14:25

    Спасибо за отличный инструмент. MySQL Workbench уже не помню когда открывал. SSMS тоже откріваю в основном для администрирования.
    Есть вопрос по лицензии: если у меня есть подписка, могу я использовать DG на 2х ПК (домашний десктоп и ноутбук)?


    1. moscas Автор
      08.08.2017 14:26

      Можете, главное чтобы были залогинены в систему под одним и тем же именем.


      1. Vicking
        12.08.2017 20:44

        Я так понимаю это для одновременного запуска 2х экземпляров? А один можно запускать не важно под каким пользователем, так?