Привет! Этот пост о том, что нового в DataGrip 2018.2. C этой версии поддержка баз данных есть в CLion и AppCode. В WebStorm её можно включить, если вы параллельно используете DataGrip.

image

— Лог всех запросов
— Новый форматер кода
— Запуск хранимых процедур
— Миграция исходников
— План запроса в виде диаграммы
— Редактирование SQL
— Редактор данных
— Улучшения в пользовательском интерфейсе


Лог всех запросов


Все запросы, которые запускает DataGrip теперь отображаются в панели Output каждой консоли. Сюда попадают и пользовательские запросы, и внутренние.

image

Всё, что запускается в DataGrip, попадает в отдельный лог-файл.

image

Чтобы его открыть, используйте Help -> Show SQL log.

image

Новый форматер кода


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

image

В DataGrip можно создавать несколько стилей кода.

image

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

image

Запуск хранимых процедур


Эту штуку долго ждали хардкорные энтерпрайзники с процедурами на триста аргументов :) Сейчас это работает для Oracle, PostgreSQL а для SQL Server только в DataGrip, но в версии 2018.2.1 другие IDE подтянутся.
Чтобы запустить процедуру, выберите Execute из контекстного меню.

image

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

image

В этом примере для Oracle мы отображаем вывод через jbdc-драйвер. Поэтому нам нужен этот код с вопросиками.
В более классическом случае никакого вывода нет, тогда часто достаточно простого кода. Это пример для PostgreSQL.

image

Процедуру еще можно запустить, нажав на зеленую стрелку в панели инструментов редактора исходника.

Миграция исходников


Не думайте про CREATE OR REPLACE и так далее, просто меняйте в исходниках то, что вам нужно. Слева на панели отображаются сделанные изменения, можно посмотреть разницу с серверной версией. Чтобы отправить изменения в базу, нажмите Submit.

image

Будет сгенерирован код. Нажмите OK, чтобы выполнить его.

image

План запроса в виде диаграммы


Кому-то так удобнее, чем дерево. Мы сделали :)

image

Чтобы открыть диаграмму, найдите на панели инструментов кнопку Show Visualization, после того, как запустили Explain Plan.

image

Редактирование SQL


Информация о контексте


Когда имеешь дело с исходником большой процедуры, полезно напомнить себе о контексте — внутри чего находится курсор: какой процедуры или какого пакета. Используйте для этого Alt+Q (Shift+Ctrl+Q for OSX), сверху отобразится контекст.

image

Прыгнуть за скобки или кавычки, нажав Tab.


Это пришло из других IDE: когда вводите параметры функции, нажатие Tab отправляет курсор за кавычки или скобки.

image

Включается это здесь: Settings/Preferences | Editor | General | Smart keys | Select Jump outside closing brackets/quote with Tab.

image

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


Комментарии к колонкам в подсказках


Объяснять тут нечего :)

image

Количество выделенных строк


Раньше внизу отображалось только количество выделенных полей. Добавили строки.

image

Улучшения в интерфейсе


Поддержка сенсорной панели


У обладателей Mac Book Pro с сенсорной панелью на ней появится кнопка Execute.

image

Но можно добавить любое действие. Для этого идите в Preferences > Appearance & Behavior > Menus and Toolbars > Touch Bar.

image

Источник данных на основе драйвера


Такие источники стало легче создавать: в выпадающем списке для создания источника есть пункт Driver and Data Source.

image

Назначение шортката из Find Action


Эта штука есть давно, но она не работала для некоторых раскладок и схем горячих. Теперь работает везде :) Итак, на любом действии можно нажать Alt+Enter и назначить сочетание клавиш.

image

Запустить скрипт на схеме


Раньше надо было так: находите скрипт-файл и запускаете на нужной базе. Теперь можно наоборот: в контекстном меню схемы появился пункт Run SQL script.

image

Диалект и прикреплённая консоль в панели инструментов


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

image

Тёмные шапки окон


Чтобы это сделать для macOS, включите Preferences | Appearance & Behavior | Appearance | Use dark window headers.

image

Будем рады вопросам в комментариях и не забудьте заглянуть в Features, вдруг чего-то не знали?

Команда DataGrip.

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


  1. GoldJee
    26.07.2018 17:17

    Крутые функции, как всегда. На мой вкус, IDE от JB самые удобные. Жаль, для этого продукта Community Edition не завезли.


    1. moscas Автор
      26.07.2018 17:17

      Спасибо!


    1. Tantrido
      26.07.2018 17:24

      На мой вкус, IDE от JB самые удобные.

      Согласен! Ещё хорошо, что на степике лицензии к ним дают :)


  1. werklop
    26.07.2018 20:23

    А предполагается подобное для NoSQL СУБД?


    1. moscas Автор
      26.07.2018 22:47

      Да, но не в ближайшем будущим. Я наизусть помню номер тикета в нашем трекере: 41 :) Мы знаем, что это надо делать.


      1. werklop
        26.07.2018 23:09

        А можете пояснить, почему не в ближайшем будущем, какие проблемы с этим связаны и как вообще компания смотрит на реализацию этого функционала? Если конечно, это не коммерческая тайна


        1. rjhdby
          27.07.2018 11:30
          +1

          Наверное потому, что NoSQL. Это же не фич добавить и не поддержку еще одной реляционной, где только со схемой разобраться, а все остальное по готовым шаблонам. Тут под каждую БД отдельный уникальный адаптер разрабатывать надо.


        1. moscas Автор
          27.07.2018 11:49

          rjhdby ответил по делу :) Чтобы делать поддержку одной из NoSQL баз, нужны большие ресурсы. Чтобы их выделить, нужно сначала стать зрелым инструментом для реляционных баз: мы к этому идём, но всё еще не дошли: дебаггер, управление коннекциями, проектная модель, удобная интеграция базы и VCS — всё это ещё предстоит сделать.
          Впрочем, если завтра нам напишет человек, который скажет: «хочу делать NoSQL», мы его с удовольствием возьмём.


          1. rjhdby
            27.07.2018 11:57

            Эм… Можно ловить на слове? :D


            1. moscas Автор
              27.07.2018 12:00

              Можно, хотя я не понимаю о каком вы слове)


              1. Borz
                27.07.2018 14:47

                об "с удовольствием" видимо :)


      1. moscas Автор
        27.07.2018 12:50
        +1

        Ох, теперь это «будущим» навсегда вписано в моё личное дело :(


  1. gudvinr
    27.07.2018 01:04

    У datagrip большая беда с фильтрами схем. По крайней мере, для postgresql.
    Он зачем-то выводит кучу служебных таблиц pg_toast_%/pg_temp_%, которых на production-серверах может быть ощутимое количество.
    Плюсом к этому сам фильтр жутко неудобный. Если хочется выбрать вручную схемы для синхронизации — нужно кликать по каждой вручную. Пользуясь в течение полугода и EAP и стабильными ревизиями можно было наблюдать эволюцию этого фильтра. Сначала сделали хорошо и добавили возможность выделить схемы, затем включив нажатием пробела, а потом вернули как было.


    1. moscas Автор
      27.07.2018 12:19

      Не очень понятно.
      1. Вы имеет в виду таблицы или схемы? Вы же сами выбираете, что добавлять в дерево.
      2. Про эволюцию фильтра непонятно. «затем включив нажатием пробела» — что это значит?) Можете подробно рассказать? Мы хотим сделать удобно :)


      1. gudvinr
        27.07.2018 16:29

        1.Я имею в виду схемы. постгрес во время работы создает много схем с названиями pg_temp_1, pg_temp_2, ..., pg_temp_100500 и pg_toast_temp_1, ...


        Да, схемы можно выбрать. Но когда у вас десятки серверов в data sources, в каждом из которых по несколько баз с десятками-сотнями пользовательских схем, выбирать схемы для показа мягко скажем, неудобно.


        Если же оставить галочку 'All schemas', в дереве будут сотни служебных схем, которые там только для того, чтобы мешать просмотру.


        При этом пункт селектора 'Load sources for: All excl. system schemas' не влияет ни на что.
        И паттерн в фильтре схем не может быть эксклюзивным, только инклюзивный.


        2.Какое-то время назад в фильтре схем была возможность через Ctrl+ЛКМ выделить схемы, потом нажать пробел и у них всех бы поменялся чекбокс.


        В трекере есть как минимум три задачи, связанные с этим.


  1. rjhdby
    27.07.2018 11:27

    Будет ли поддержка Informix?


    1. moscas Автор
      27.07.2018 11:47

      Мы по-тихоньку добавляем новые диалекты. С большей вероятностью те, где сами вендоры помогают нам с файлами грамматики и запросами. Так например произошло с Яндексом — следующей базой в нашем спсикке буедт ClickHouse. Для Информаикса есть тикет, все новости будут там: youtrack.jetbrains.com/issue/DBE-435


      1. rjhdby
        27.07.2018 11:56

        А можно попробовать вам в этом помочь? Если да, то как?
        Ну я не знаю там… схему системных таблиц описать, какой нибудь код написать (какой и где?), еще что-то не очевидное, чтобы очередной диалект поднялся выше в очереди?


        1. moscas Автор
          27.07.2018 12:23

          Если вы java-программист, то приходите к нам на работу :) spb.hh.ru/vacancy/18636558


          1. rjhdby
            27.07.2018 12:27

            Да в принципе засылал резюме, ответа не пришло. Видимо фиговый программист. :)


        1. moscas Автор
          27.07.2018 12:26

          Но если речь, например, об Информиксе, то помочь со стороны ещё как можно: например, прислать запросы для интроспекции или добыть файлы с грамматикой. Общий алгоритм у нас описан тут: www.jetbrains.com/datagrip/new_dbms


  1. nApoBo3
    27.07.2018 13:09
    +1

    Не знаю в чем именно секрет MS, но ничего удобнее для работы именно с живыми данными чем Managment Studio не встречал. Везде вроде и функционал может быть шире. но не удобно с данными работать и все.
    Если говорить конкретно по DataGrip, сразу приходи на ум несколько не удобных момент:
    1) Не явность синхронизации схемы с сервером и не интуитивность того с чем ты сейчас работаешь.
    Например в VS ты явно создаешь новый проект, загружаешь в него схему и работаешь с ней, при нажатии синхронизации, ты выбираешь с кем синхронизироваться( т.е. у тебя нет в заголовке конкретного сервера у тебя есть проект базы ), он тебе выдает Diff, ты явно комитишь нужные изменения, они генерируют SQL скрип который можно посмотреть.
    В DataGrip смешиваются понятия подключения к базе и схемы базы.
    2) Если в подключении не сохранить данные для входа, то настройку подключения нужно «переделать», т.е. войти в настройки еще раз и войти от туда на сервер. Если этого не сделать данные для входа при нажатии кнопки синхронизировать не будут запрошены, получишь ошибку.
    3) Консоли некоторые позволяют обновлять данные, некоторые нет, я так понял обновлять данные позволяет только первая, но не уверен.
    4) Концепция консолей вообще путанная, не очень понятно к какой конкретно базе какая консоль, только к какому серверу.

    ИМХО мне мешает именно путаница между схемой и подключением полюс консоли, которые можно открыть, а можно jump, в какую jump ясно. Если есть лог запросов, я бы вообще сразу убивал консоли когда они явным образом закрыты и все.

    Плюс вывод данных, но это опять таки к консоли. Он «отсоединен» от консоли и не понятно данные от какого запроса в каком output, плюс нельзя в одном окне выполнить сразу несколько запросов, чтобы получить несколько output( только по очереди и явно выбирая какой, при этом если запросы похожие, их не выбрать поскольку их сокращение может быть одинаковым, только смотреть порядок ).

    И вот везде, во всех инструментах куча таких мелких неудобств, что отбивает всякое желание ими пользоваться после MS инструментов( хотя разработку баз из VS освоить не очень просто, но потом там все очень логично и удобно ).


    1. speshuric
      28.07.2018 01:18

      Голая SSMS хороша в основном тем, что есть везде, где есть SQL Server.
      SSMS в целом неплоха и растет, например, если сравнить SSMS 2008 и 2017, то очень многое улучшено в мелочах (а уж 2005 хуже даже не в мелочах, и конечно SSMS стопудово лучше, чем Query Analyzer + Enterpise Manager, но давайте не увлекаться археологией).
      Но голая SSMS многого не умеет:


      • с гитом всё еще не умеет работать (ха-ха, но DG с ним пока до сих пор неочевидно работает)
      • "перейти к определению" нет.
      • рефакторингов даже типа safe rename нет
      • автокомплит на ключевых словах отсутствует

      Это только то что вот прямо сходу вспомнил, если внимательнее посмотреть, то там много недостатков. Часть недостатков (в частности все, что перечислены выше) решены в SSDT и VS, но это не SSMS! А SSMS с плагинами (Apex, RedGate, dbForge и т.п.) это по цене заметно дороже DataGrip.


      Но я присоединяюсь к тому, что DG (особенно из-за упомянутого смешения) концептуально ни для DBA (которые живыми базами оперируют), ни для dev, которые оперируют репозиторием, кодом, миграцией с версии на версию.


      ЗЫ: у меня DG пока ничего не отбила, я пока надеюсь, что они приведут инструмент к крутому виду.


      1. nApoBo3
        28.07.2018 13:24

        Голая SSMS вообщем не предназначена для серьезной разработки, она скорее для dba. В одной точке оперирование данными, схемами, логами, настройками.
        Для разработки безусловно луче VS, при этом она вообщем прозрачна после SSMS.
        Там и гит, и тесты, и скрипты развертывания и все что хочешь, правда только, если не ошибаюсь, в utimate.
        Сам ищу инструмент который может VS или SSMS заменить для PG, но пока такого не нашел.
        Мучаюсь в PGadmin, консолью и DG.


        1. speshuric
          28.07.2018 14:01

          она скорее для dba

          Ну автокомплит ключевых слов, git и переход к определению DBA точно не помешает.


          если не ошибаюсь, в utimate

          Ошибаетесь: git точно есть в community. Скрипты развертывания в целом есть, кажется в любом SSDT (даже в stand-alone). А вот с тестами — только с professional.


          Раз уж упомянули, а есть реальный опыт разработки не крошечных проектов с SSDT и юнит тестами SQL?


  1. dmitry_dvm
    27.07.2018 13:18

    Немного не в тему, но может кто знает — как в SSMS включить автодополнение операторов, чтобы из sel получить SELECT? И почему это не работает из коробки?


    1. speshuric
      28.07.2018 01:42

      А его нет из коробки. Решение только поставить сторонние плагины. По сути другого пути нет.
      Из популярного можно отметить:


      • SSMSBoost
      • ApexSQL
      • RedGate
      • dbForge Studio — но это прям глубокая переделка, по сути только движок VS чуть-чуть используется

      Все хотят денег (чаще много), у всех какие-то кусочки есть и бесплатно. Автокомплит бесплатный есть у ApexSQL, но какой-то глючноватый и тормознутый.