company_banner

Что нового в DataGrip 2018.1

    Привет! В этом релизном цикле некоторые улучшения появились ещё в минорных обновлениях. Но, так как о них на Хабре мы не пишем, я расскажу в этом посте обо всём новом с момента предыдущего релиза.

    image


    Редактор данных


    Мы добавили журнал запросов, которые редактор данных отправляет в базу. ProgerMan просил в комментариях пару релизов назад :)

    image

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


    Режим «только для чтения»


    У нас есть флажок «Read-only» в свойствах источника данных. Он включал этот режим на уровне jdbc-драйвера. Но read-only реализован в разных драйверах с оговорками:

    — В SQLite его нельзя переключать для уже созданной коннекции.
    — В MySQL он не позволяет запускать запросы, которые начинаются не с символа «S».
    — В Oracle, SQL Server и некоторых других базах он вообще не работает :)

    image

    Поэтому мы сделали собственный read-only режим. Он включается вместе с тем, что реализован на уровне драйвера. Для MySQL и SQLite режим на уровне драйвера мы не включаем.

    Вот, что делает наш read-only:

    Он подсвечивает DDL и DML запросы, предупреждая об их небезопасности.

    image

    Если вы всё-таки запустили этот запрос, появится предупреждение. Для особо настойчивых мы показываем кнопку Execute в правой части предупреждения.

    image

    Ещё мы строим дерево вызовов функций и процедур, и на каком бы уровне вложенности ваша функция ни вела к модификациям, предупредим об этом.

    image

    В сочетании с раскраской источников данных перепутать тестовую базу с живой теперь сложно :) С 2018.1 в цвет источника данных красятся ещё и файлы, которые с ним ассоциированы.

    image

    Запуск скриптов


    Маленькое приятное улучшение: источник данных, на котором был запущен скрипт из контекстного меню, запоминается и устанавливается по умолчанию для последующих запусков других скриптов.

    image

    Общие улучшения


    Переключение схем


    Укажите, как DataGrip будет переключать схемы.

    image

    Automatic. Среда сама будет переключать схемы, если это потребуется для определения правильного контекста. Скажем, если вы переименовываете объект не в текущей схеме, мы переключим схему для внутренней операции.
    Manual. Схемы переключает только пользователь, в правом верхнем углу консоли.
    Disabled. Переключатель вверху не будет работать. Будет полезно для дополнительной защиты при использовании pg_bouncer.

    Переименование объектов


    С этого релиза мы официально поддерживаем переименование всех объектов, которые интроспектируем. Переименовывайте триггеры в PostgreSQL, события в MySQL, последовательности в Oracle и многие другие объекты, нажав на них Sift+F6 в дереве или в SQL-скрипте.

    image

    Навигация


    Появилась новая настройка: Prefer data editor over DDL editor. Она влияет на:

    — Навигацию к таблице или представлению по Ctrl+N/Сmd+O
    — Навигацию к столбцу по Shift+Ctrl+Alt+N/Shift+Cmd+Alt+O
    — Двойной щелчок по таблице или столбцу в дереве базы данных.
    Если флажок отмечен, в этих случаях вы увидите редактор данных. Если нет — исходный код объекта.

    image

    Navigate references to DDL editor переименован в Prefer database view instead of DDL editor. Эта опция влияет на действие Navigate to declaration (Ctrl+B или Ctrl+Клик) из SQL.

    Если флажок отмечен, объект подсветится в дереве базы данных. Если нет — откроется исходный код объекта.

    Мы объединили два действия — Go to table и Go to class (Ctrl+N/Сmd+O).

    image

    — В DataGrip можно указать имя класса, если вы используете другие поддерживаемые языки.
    — В других IDE на платформе IntelliJ с поддержкой баз данных можно указать имя объекта базы и перейти к нему.

    Документация для файлов


    Это удивительно, но раньше а наших IDE нельзя было быстро узнать размер файла. Поэтому мы добавили основные атрибуты файла в документацию — вызывайте её по Ctrl+Q или F1.

    image

    Изображения в фоне


    Для изображений в фоне (Preferences/Settings → Appearance → Background images) добавили настройки выравнивания и растягивания.

    image

    Дерево базы данных


    Поддержали MariaDB.

    image

    Добавили события для MySQL.

    image

    Поддержали внешние схемы в Redshift и виртуальные схемы в Exasol.

    image

    Для PostgreSQL 10 поддержали секционированные таблицы.

    image

    SQL-редактор


    Переходите к следующему и предыдущему использованию объекта в скрипте по Alt+Колесо мышки. Или введите ‘highlighted element usage’ в Find Action (Ctrl+Shift+A).

    image

    Ещё одно новое действие: Move element left or right. Работает в разных списках, например, полей в INSERT или столбцов в SELECT. Даже если вы любите, когда столбцы написаны один за другим, эта штука пригодится, потому что не будет проблем с запятой. А если использовать Move Line — будут.

    image

    Для Oracle и Exasol теперь работает автодополнение для имён файлов.

    image

    Поддержали CTE в MySQL.

    image

    Свернутый код теперь подсвечивается: например, если содержит ошибки или результаты текстового поиска.

    image

    А этот фикс вдохновлён комментарием на Хабре: малоизвестное действие Duplicate Entire Lines теперь работает и в конце файла.

    image

    Всякое


    — Команды SQLite отныне не портят подсветку кода.
    — Поддержали следующие типы в PostgreSQL: point, polygon, line, lseg, box, path, circle, pg_lsn, tsquery, tsvector.
    — Форматирование кода не меняет регистр ключевых слов по умолчанию.
    — Встроенный SSH-executable поддерживает криптографические алгоритмы.
    — DataGrip, как и другие наши IDE, теперь доступен в виде snap-пакета.
    — В диалоге Replace in Path поддержали предпросмотр результатов регулярных выражений.
    — Плагин The REST client доступен для установки.

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

    Спасибо!

    Команда DataGrip и JetBrains.
    JetBrains 317,90
    Делаем эффективные инструменты для разработчиков
    Поделиться публикацией
    Похожие публикации
    Комментарии 61
      +2

      А насчёт поддержки NoSql (редис\монга) хотябы отдаленные планы есть? Удобно когда все в одном месте

        0
        Пожалуй, ответ на этот вопрос надо включать в конец каждого поста :)
        Он такой: мы думаем об этом, знаем, что это важно. Но в ближайших планах пока нет. Если начнем, скорее всего с Монги. youtrack.jetbrains.com/issue/DBE-41
          +1
          Скажите, пожалуйста, это связано с каким-то техническими трудностями, или с непонятным объемом рынка? Просто, помнится, что даже во времена 0xDBE все просили Монгу.
            +1
            NoSQL базы не очевидно ложатся на нашу архитектуру. То есть за недельку это сделать не получится :) Нужны ресурсы, которых пока нет. Если этот комментарий прочитает человек, который хотел бы заняться поддержкой NoSQL-баз, мы с радостью пригласим его с нами пообщаться.
            0

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

              0
              Может лучше с кассандры? У неё язык запросов близок к sql.
                +1
                Имхо лучше elasticsearch и redis.
                Потому что они более популярны, просто обычно не являются основной СУБД проекта.
          0

          Последний раз когда я пробовал датагрип, он не умел нормально несколько подключений к MS SQL. Эта проблема решена?

            +1
            Хочется ответить «Сейчас стало нормально» :) Но если честно, не понятно, о какой конкретно проблеме речь.
              +1

              Ну вот попробуйте, подключитесь локально к SQL Server, не указывая базу в подключении, автокомплит работает по-умолчанию на мастер базе, потом как ни выбирай, где не переключай текущую базу на другую, автокомплит работать не начнет. Тоже самое если указать базу при подключении, дальше ее переключить невозможно, автокомплит не понимает, хотя если руками написать запрос то все работает на выбранной базе.

                0
                Вообще, всё должно работать. У вас база, к которой вы обращаетесь, в дереве отображена? Если да, то скриншот поможет разобраться.
                  0
                  1. После подключения https://clip2net.com/s/3TfUo0n
                  2. После выбора базы справа в дропдауне https://clip2net.com/s/3TfUqTA
                  3. После выбора в дереве https://clip2net.com/s/3TfUuC6

                  Похоже надо обязательно выбирать схему, но интерфейс не слишком на это намекает.

                    0
                    Если база уже написана, то Alt+Enter на ее имени предложит добавить ее в дерево :)
                      0
                      Но мы согласны, что когда базу выбрали в дропдауне, надо предлагать добавить ее в дерево, потому что очевидно, что пользователь с ней работает. Я открыл тикет: youtrack.jetbrains.com/issue/DBE-6197
                        0

                        Проблема в том, что если схема не выбрана — нет автокомплита. Можно и в дереве выбрать и в дропдауне, только вот работать ничего не будет пока не развернешь дерево до уровня схем и там не выберешь схему (dbo например). Если вы хотя бы раз попробуете сами так сделать все сразу станет ясно.

                          0
                          Я понял, я на это и отвечал.
              0
              А кто-нибудь сравнивал сей продукт с DBeaver? Пользуюсь последним последние 6 месяцев для работы с mysql, pg и oracle — все классно. Но хотелось бы сравнения функционала в табличном виде.
                0

                Пересел с dbeaver на него (не совсем на него, на пичарм). Используемые бд — аналогичны вашим. Нужно сравнение — думаю вам будет проще написать список того, что нужно вам, а тут уже думаю люди подскажут, поддерживает ли данный продукт необходимые вам функции.
                Из личных впечатлений:


                • автодополнение в разы лучше
                • эспорт/импорт данных — я бы сказал datagrip немного лучше
                • интеграция с системой контроля версий которое я в dbeaver не видел (не искал сильно, честно говоря, но из коробки его вроде там нет).
                • интерфейс для создания таблиц, по крайней мере для pg — dbeaver значительно больше типов предлагает.
                • информация таблице/схеме, разрешения — в datagrip этих данных либо нет, либо представлены в значительно меньшем объеме (пользуюсь пичармом, так что есть небольшая вероятность ошибки).
                • был один случай когда datagrip показал неверный ddl для таблицы — была весьма спорная ситуация со значениями по умолчанию в mysql, которую dbeaver обработал правильнее, подробности помню плохо.
                • wrapped пакеты процедур и функций dbeaver переваривает значительно лучше
                • dbeaver позволяет прокручивать весь список результатов запроса, в datagrip насколько я понимаю только постранично.
                • разные мелкие косячки/неудобства у обоих

                Все что вспомнил навскидку. Сам, как уже сказал выше, dbeaver оставил в стороне, возвращаюсь к нему только в очень редких случаях. О переходе на datagrip/pycharm не жалею, но базы данных — не основное мое занятие. Было бы основное — скорее всего также использовал бы datagrip. По поводу описанных выше недочетов — в багтрекер не писал, и не просматривал его на этот счет.

                  0
                  Спасибо за ответ, поставлю DataGrip на 30 дней, а там уже будет видно.
                    0
                    Спасибо за детальный фидбек. Отвечу на негативные пункты.

                    интерфейс для создания таблиц, по крайней мере для pg — dbeaver значительно больше типов предлагает.

                    Мы предлагаем все типы. Единственное, они должны быть в дереве базы данных, то есть, речь, скорее всего, о pg_catalog. Есть мысль сделать так, чтобы пользователь не заботился об этом, но пока нужно явно добавлять схемы в дерево. Новости будут здесь: youtrack.jetbrains.com/issue/DBE-4573

                    информация таблице/схеме, разрешения — в datagrip этих данных либо нет, либо представлены в значительно меньшем объеме (пользуюсь пичармом, так что есть небольшая вероятность ошибки).

                    Если речь о grants, то мы действительно их пока не достаём :( Если еще о чем-то, пишите.

                    был один случай когда datagrip показал неверный ddl для таблицы — была весьма спорная ситуация со значениями по умолчанию в mysql, которую dbeaver обработал правильнее, подробности помню плохо.

                    Здесь сложно что-то предположить, но есть вероятность того, что исходник поменялся со времен выгрузки его Датагрипом. Если да, то мы планируем сообщать о такой ситуации: youtrack.jetbrains.com/issue/DBE-6185

                    wrapped пакеты процедур и функций dbeaver переваривает значительно лучше

                    А что значит лучше?

                    dbeaver позволяет прокручивать весь список результатов запроса, в datagrip насколько я понимаю только постранично.

                    Можно и весь сразу результат увидеть, для этого в настройку Page Size надо поставить -1. Тогда не будет никакого пейджинга.
                      0
                      По поводу типов — на тикет сегодня наткнулся.

                      >Если речь о grants, то мы действительно их пока не достаём :( Если еще о чем-то, пишите.

                      Да, в принципе про них. youtrack.jetbrains.com/issue/DBE-6187.

                      > wrapped пакеты процедур и функций dbeaver переваривает значительно лучше
                      >А что значит лучше?

                      В dbeaver в таких случаях идет CREATE OR REPLACE PACKAGE BODY… wrapped и далее само тело, в wrapped виде, которое можно скопировать и преобразовать в читаемый вид.
                      У вас — -- auto-generated definition
                      — No source text available
                      Немного по теме — youtrack.jetbrains.com/issue/DBE-2310, может если решат его, то и моя проблема исчезнет?

                      > Можно и весь сразу результат увидеть, для этого в настройку Page Size надо поставить -1. Тогда не будет никакого пейджинга.
                      У вас либо только по страницам, либо сразу все. У dbeaver — выполнил запрос, 1000 строк. Список из 1000 строк. Просмотрел, подгрузил данные еще — список уже содержит 2000 строк, 3000 строк… Причем без разделения на страницы. Вещь временами удобная, хотя честно говоря — очень временами.

                      0
                      Про пейджинг — речь о «бесконечном скроллинге»
                  0
                  Всёравно приходится открывать HeidiSQL, к тому же в wine :( Как то там функционала по больше и интерфейс понятнее. А хотелось бы всё иметь внутри Data Grip / PHPStorm
                    0
                    А можно вас попросить раскрыть? Было бы круто узнать, чего вам не хватает и где интерфейс непонятный.
                      +1
                      Я тоже пользуюсь HeidiSQL (для mysql) время от времени, вкину пару копеек:
                      1) В HeidiSQL есть просмотр «базы данных» и «таблицы», на которой отображается статистика по элементам. Например — очень удобно просматривать объём занимаемого места.
                      2) Удобный просмотр процессов, статистики, состояния базы.
                      3) Управление пользователями.

                      Если хотите — пишите в ЛС, накидаю скринов с реальными данными.
                        0
                        Спасибо, всё по делу.
                        +1
                        На пример редактировать структуру таблици в DataGrip очен сложно, посмотрите как это реализовано в HeidiSQL. Посмотрите как легко добавить Foreign Key в HeidiSQL и т.д.
                          +1
                          Кажется, что почти то же самое, но у нас вместо чекбоксов автодополнение: youtu.be/GNKVpyknHhU
                            0
                            Дропдауны юзабельнее. Ещё на пример как мне изменить Table collation? Auto increment value? Row format? Это очен легко в HeidiSQL. Ещё редактировать неудобно в DataGrip из за автодополнении в типах в место дропдаунов. Ещё почти невазможно копировать таблицу с даннимы, часто бросается ошибка «Invalid default value for 'fieldname'», как такое вазможно? Я просто хочу создать клон таблицы с новым именем. HeidiSQL это делает без проблем
                              +1
                              1. По поводу дропдаунов, это концептуальное решение. DataGrip – клавиатурно-ориентированная среда и в нашем представлении автодополнение делает работу быстрее.
                              2. Table collation, Auto increment value, Row format — над всем этим работаем. Это будет.
                              3. Про Copy table нужен пример с DDL'ем. И опишите, пожалуйста, как вы копируете.
                                0
                                1. А что мешает сделать дропдауны с вводом текста и автодополнением?
                                2. Там ещё много чего нужно, берите пример с HeidiSQL
                                3. Только DDL не подойдёт, вам и данные нужны наверное. А вообше, если уже сушествует таблица с данными, хоть не валиднимы допустим, MySQL клиент не должен всёравно его копировать? HeidiSQL тык и делает

                                В целом я бы сказал, мне очен нравится ваши продукты, но хочется вообше не выходить из них, по этому пожалуйста берите всё что удобно и хорошо сделано из других софтов, эта хорошая практика. И HeidiSQL хороший цель для этого
                                  0
                                  1. Есть идея показывать автодополнение сразу, по наведению мышкой. Почему вы так цепляетесь за дропдаун, я, честно, не понимаю. Вам нравится все делать мышкой? Окей, но если значений в списке очень много, вам все равно придется фильтровать (или вы честно хотите скроллить в поисках нужного?). А если мало, то, что я описал в начале этого коммента, должно помочь.
                                  3. Что такое невалидные данные? Короче, было бы круто разобрать на примере.
                      0
                      Существует ли какой-то способ закрыть консоль? Я их насоздавал с момента внедрения этой фичи по нескольку десятков в каждой базе, и никак не могу закрыть ни одну…
                        0
                        Я пользуюсь таким способом:
                        В открытой консоли прямо в окне с кодом вызываю контекстное меню (ПКМ) -> Show in Files.
                        В других ОС может быть Show in что-то другое.
                        Откроется папка с файлами, соответствующими консолям для данного соединения.
                        Там их можно удалить.

                        Кстати говоря, там же можно дать консолям более говорящие имена — у меня, например, всегда висит консоль со скриптом полного удаления схемы Oracle с названием drop_schema.sql
                          0
                          Спасибо! В IntelliJ Idea получилось через «Copy Path» только обнаружить эту папку.
                          0
                          Я бы вам ответил, но mors741 дал исчерпывающий ответ :)
                          0
                          Режим «только для чтения»
                          В Oracle, SQL Server и некоторых других базах он вообще не работает :)
                          Вот, что делает наш read-only
                          В оракле можете просто добавить вызов set transaction read only;

                            0
                            Кажется, что create и alter запускаются в этом режиме :)
                            0
                            Хочется иметь возможность из DataGrip делать бекапы
                              0
                              У вас какая база? Для MySQL и PostgreSQL сделана интеграция с бэкап-тулами.
                                0
                                Oracle, но не знал про существующую интеграцию, спасибо
                              +1
                              Отлично! Спасибо. Вы — офигенные! Теперь можно ленивым джунам ставить.
                                0
                                Спасибо!
                                  0
                                  У меня был один джун… Так привык к «New --> Table», что создание таблички «ручками» воспринимал как дичь ;))
                                    0
                                    Как награду джуну, дошедшему до миддла :)
                                  0
                                  Сделайте пожалуйста, чтобы при генерации DDL из PostgreSQL указывался OWNER
                                  0
                                  Да, это NoSQL, но когда добавите поддержку Cassandra?
                                  Много проектов BigData «смежные». «Много данных» — в сassandra, «выжимка данных» для Data Science — в MySQL (postgresql и т.д.)

                                  Иметь два инструмента для работы не удобно :(
                                  + DataGrip красивый! Хочу кассандру в DataGrip!
                                  ___
                                  ваш постоянный клиент
                                    0
                                    Пока, к сожалению, можем ответить только номером тикета: youtrack.jetbrains.com/issue/DBE-3515
                                      0
                                      Да, уже видел. Этот тикет висит с 2013 года. Сейчас 2018.
                                      19 апреля будет уже пять лет!
                                      Скоро юбилей ;)))

                                      Не отвечаю за всех, но мне хотя бы select-ы делать к кассандре — и будет достаточно. Думаю для 80% датасаентистов так же… Проведите исследование — я не один, кому это надо. CQL на порядок примитивнее SQL.

                                      Реально — боль.
                                    0

                                    Apache Ignite не хотите поддержать?

                                      0
                                      Пока таких планов нет.
                                      0
                                      Как насчёт функции describe по правому клику на имени таблицы в SQL-запросе?
                                        0
                                        А какая информация вам нужна? В Quick doc (Ctrl+Q на винде, F1 на маке) нет того, что вам нужно?
                                          0
                                          о существовании комбинации Ctrl-Q ещё нужно догадаться, до вашего ответа я не знал.
                                          нажать правый клик удобнее. нужна информация об именах и типах полей аналогично PL/SQL Developer, там всё доступно и наглядно.
                                            0
                                            Так там же есть весь DDL, там и имена полей, и типы.
                                        0
                                        Когда я пользовался datagrip на триале, мне очень не хватало отладки хранимых процедур для MySQL. Планируется ли реализация? Если да, то было бы интересно узнать ориентировочные сроки.
                                          0
                                          Планируется, даже начали кое-какую работу. Но это не на ближайший релиз точно.

                                        Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                        Самое читаемое