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

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.

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


  1. Samouvazhektra
    05.04.2018 16:28

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


    1. moscas Автор
      05.04.2018 18:41

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


      1. Hixon10
        05.04.2018 21:01

        Скажите, пожалуйста, это связано с каким-то техническими трудностями, или с непонятным объемом рынка? Просто, помнится, что даже во времена 0xDBE все просили Монгу.


        1. moscas Автор
          06.04.2018 12:36

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


      1. Samouvazhektra
        06.04.2018 05:55

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


      1. Optik
        06.04.2018 09:26

        Может лучше с кассандры? У неё язык запросов близок к sql.


        1. OnYourLips
          06.04.2018 10:14

          Имхо лучше elasticsearch и redis.
          Потому что они более популярны, просто обычно не являются основной СУБД проекта.


          1. moscas Автор
            06.04.2018 12:38

            Да, redis нынче очень популярен. Будем думать.


          1. L0NGMAN
            06.04.2018 16:51

            +1000 for Redis and ElasticSearch


  1. kemsky
    05.04.2018 17:46

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


    1. moscas Автор
      05.04.2018 18:42

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


      1. kemsky
        05.04.2018 23:04

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


        1. moscas Автор
          06.04.2018 12:55

          Вообще, всё должно работать. У вас база, к которой вы обращаетесь, в дереве отображена? Если да, то скриншот поможет разобраться.


          1. kemsky
            06.04.2018 15:18

            1. После подключения https://clip2net.com/s/3TfUo0n
            2. После выбора базы справа в дропдауне https://clip2net.com/s/3TfUqTA
            3. После выбора в дереве https://clip2net.com/s/3TfUuC6

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


            1. moscas Автор
              06.04.2018 18:47

              Если база уже написана, то Alt+Enter на ее имени предложит добавить ее в дерево :)


            1. moscas Автор
              06.04.2018 18:51

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


              1. kemsky
                08.04.2018 02:55

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


  1. Sleuthhound
    05.04.2018 18:59

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


    1. Zuzik3500
      06.04.2018 11:32

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


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

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


      1. Sleuthhound
        06.04.2018 11:50

        Спасибо за ответ, поставлю DataGrip на 30 дней, а там уже будет видно.


      1. moscas Автор
        06.04.2018 13:03

        Спасибо за детальный фидбек. Отвечу на негативные пункты.

        интерфейс для создания таблиц, по крайней мере для 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. Тогда не будет никакого пейджинга.


        1. Zuzik3500
          06.04.2018 23:12

          По поводу типов — на тикет сегодня наткнулся.

          >Если речь о 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 строк… Причем без разделения на страницы. Вещь временами удобная, хотя честно говоря — очень временами.


  1. L0NGMAN
    06.04.2018 01:12

    Всёравно приходится открывать HeidiSQL, к тому же в wine :( Как то там функционала по больше и интерфейс понятнее. А хотелось бы всё иметь внутри Data Grip / PHPStorm


    1. moscas Автор
      06.04.2018 12:32

      А можно вас попросить раскрыть? Было бы круто узнать, чего вам не хватает и где интерфейс непонятный.


      1. Caravus
        06.04.2018 15:18

        Я тоже пользуюсь HeidiSQL (для mysql) время от времени, вкину пару копеек:
        1) В HeidiSQL есть просмотр «базы данных» и «таблицы», на которой отображается статистика по элементам. Например — очень удобно просматривать объём занимаемого места.
        2) Удобный просмотр процессов, статистики, состояния базы.
        3) Управление пользователями.

        Если хотите — пишите в ЛС, накидаю скринов с реальными данными.


        1. moscas Автор
          06.04.2018 16:30

          Спасибо, всё по делу.


      1. L0NGMAN
        06.04.2018 16:10

        На пример редактировать структуру таблици в DataGrip очен сложно, посмотрите как это реализовано в HeidiSQL. Посмотрите как легко добавить Foreign Key в HeidiSQL и т.д.


        1. moscas Автор
          06.04.2018 16:30

          Кажется, что почти то же самое, но у нас вместо чекбоксов автодополнение: youtu.be/GNKVpyknHhU


          1. L0NGMAN
            06.04.2018 16:48

            Дропдауны юзабельнее. Ещё на пример как мне изменить Table collation? Auto increment value? Row format? Это очен легко в HeidiSQL. Ещё редактировать неудобно в DataGrip из за автодополнении в типах в место дропдаунов. Ещё почти невазможно копировать таблицу с даннимы, часто бросается ошибка «Invalid default value for 'fieldname'», как такое вазможно? Я просто хочу создать клон таблицы с новым именем. HeidiSQL это делает без проблем


            1. moscas Автор
              06.04.2018 18:54

              1. По поводу дропдаунов, это концептуальное решение. DataGrip – клавиатурно-ориентированная среда и в нашем представлении автодополнение делает работу быстрее.
              2. Table collation, Auto increment value, Row format — над всем этим работаем. Это будет.
              3. Про Copy table нужен пример с DDL'ем. И опишите, пожалуйста, как вы копируете.


              1. L0NGMAN
                07.04.2018 15:52

                1. А что мешает сделать дропдауны с вводом текста и автодополнением?
                2. Там ещё много чего нужно, берите пример с HeidiSQL
                3. Только DDL не подойдёт, вам и данные нужны наверное. А вообше, если уже сушествует таблица с данными, хоть не валиднимы допустим, MySQL клиент не должен всёравно его копировать? HeidiSQL тык и делает

                В целом я бы сказал, мне очен нравится ваши продукты, но хочется вообше не выходить из них, по этому пожалуйста берите всё что удобно и хорошо сделано из других софтов, эта хорошая практика. И HeidiSQL хороший цель для этого


  1. robert_ayrapetyan
    06.04.2018 03:39

    Существует ли какой-то способ закрыть консоль? Я их насоздавал с момента внедрения этой фичи по нескольку десятков в каждой базе, и никак не могу закрыть ни одну…


    1. mors741
      06.04.2018 11:32

      Я пользуюсь таким способом:
      В открытой консоли прямо в окне с кодом вызываю контекстное меню (ПКМ) -> Show in Files.
      В других ОС может быть Show in что-то другое.
      Откроется папка с файлами, соответствующими консолям для данного соединения.
      Там их можно удалить.

      Кстати говоря, там же можно дать консолям более говорящие имена — у меня, например, всегда висит консоль со скриптом полного удаления схемы Oracle с названием drop_schema.sql


      1. robert_ayrapetyan
        06.04.2018 18:09

        Спасибо! В IntelliJ Idea получилось через «Copy Path» только обнаружить эту папку.


    1. moscas Автор
      06.04.2018 12:33

      Я бы вам ответил, но mors741 дал исчерпывающий ответ :)


  1. xtender
    06.04.2018 09:53

    Режим «только для чтения»
    В Oracle, SQL Server и некоторых других базах он вообще не работает :)
    Вот, что делает наш read-only
    В оракле можете просто добавить вызов set transaction read only;


    1. moscas Автор
      06.04.2018 18:55

      Кажется, что create и alter запускаются в этом режиме :)


  1. maxzh83
    06.04.2018 10:15

    Хочется иметь возможность из DataGrip делать бекапы


    1. moscas Автор
      06.04.2018 12:34

      У вас какая база? Для MySQL и PostgreSQL сделана интеграция с бэкап-тулами.


      1. maxzh83
        06.04.2018 13:47

        Oracle, но не знал про существующую интеграцию, спасибо


  1. ProgerMan
    06.04.2018 11:32

    Отлично! Спасибо. Вы — офигенные! Теперь можно ленивым джунам ставить.


    1. moscas Автор
      06.04.2018 12:34

      Спасибо!


    1. PavelMSTU
      06.04.2018 16:54

      У меня был один джун… Так привык к «New --> Table», что создание таблички «ручками» воспринимал как дичь ;))


  1. rolltin
    06.04.2018 13:27

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


    1. moscas Автор
      06.04.2018 14:45

  1. PavelMSTU
    06.04.2018 16:43

    Да, это NoSQL, но когда добавите поддержку Cassandra?
    Много проектов BigData «смежные». «Много данных» — в сassandra, «выжимка данных» для Data Science — в MySQL (postgresql и т.д.)

    Иметь два инструмента для работы не удобно :(
    + DataGrip красивый! Хочу кассандру в DataGrip!
    ___
    ваш постоянный клиент


    1. moscas Автор
      06.04.2018 16:45

      Пока, к сожалению, можем ответить только номером тикета: youtrack.jetbrains.com/issue/DBE-3515


      1. PavelMSTU
        06.04.2018 16:52

        Да, уже видел. Этот тикет висит с 2013 года. Сейчас 2018.
        19 апреля будет уже пять лет!
        Скоро юбилей ;)))

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

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


  1. devozerov
    06.04.2018 18:16

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


    1. moscas Автор
      06.04.2018 18:55

      Пока таких планов нет.