company_banner

Жаркий, летний DataGrip 2018.2

    Привет! Этот пост о том, что нового в 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.
    JetBrains
    Делаем эффективные инструменты для разработчиков

    Comments 38

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

          Согласен! Ещё хорошо, что на степике лицензии к ним дают :)
          +1
          А предполагается подобное для NoSQL СУБД?
            0
            Да, но не в ближайшем будущим. Я наизусть помню номер тикета в нашем трекере: 41 :) Мы знаем, что это надо делать.
              +1
              А можете пояснить, почему не в ближайшем будущем, какие проблемы с этим связаны и как вообще компания смотрит на реализацию этого функционала? Если конечно, это не коммерческая тайна
                +1
                Наверное потому, что NoSQL. Это же не фич добавить и не поддержку еще одной реляционной, где только со схемой разобраться, а все остальное по готовым шаблонам. Тут под каждую БД отдельный уникальный адаптер разрабатывать надо.
                  0
                  rjhdby ответил по делу :) Чтобы делать поддержку одной из NoSQL баз, нужны большие ресурсы. Чтобы их выделить, нужно сначала стать зрелым инструментом для реляционных баз: мы к этому идём, но всё еще не дошли: дебаггер, управление коннекциями, проектная модель, удобная интеграция базы и VCS — всё это ещё предстоит сделать.
                  Впрочем, если завтра нам напишет человек, который скажет: «хочу делать NoSQL», мы его с удовольствием возьмём.
                    0
                    Эм… Можно ловить на слове? :D
                      0
                      Можно, хотя я не понимаю о каком вы слове)
                        0

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

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

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

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

                    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
                      1. Такая проблема есть, займемся. В качестве пока простого решения сделаем так, чтобы фильтр объектов работали на схемах.
                      2. Это баг. Починили, спасибо. Сейчас, кстати, работает, если вызывать фильтр через Alt+Enter :)
                  0
                  Будет ли поддержка Informix?
                    0
                    Мы по-тихоньку добавляем новые диалекты. С большей вероятностью те, где сами вендоры помогают нам с файлами грамматики и запросами. Так например произошло с Яндексом — следующей базой в нашем спсикке буедт ClickHouse. Для Информаикса есть тикет, все новости будут там: youtrack.jetbrains.com/issue/DBE-435
                      0
                      А можно попробовать вам в этом помочь? Если да, то как?
                      Ну я не знаю там… схему системных таблиц описать, какой нибудь код написать (какой и где?), еще что-то не очевидное, чтобы очередной диалект поднялся выше в очереди?
                        0
                        Если вы java-программист, то приходите к нам на работу :) spb.hh.ru/vacancy/18636558
                          0
                          Да в принципе засылал резюме, ответа не пришло. Видимо фиговый программист. :)
                          0
                          Но если речь, например, об Информиксе, то помочь со стороны ещё как можно: например, прислать запросы для интроспекции или добыть файлы с грамматикой. Общий алгоритм у нас описан тут: www.jetbrains.com/datagrip/new_dbms
                      +1
                      Не знаю в чем именно секрет MS, но ничего удобнее для работы именно с живыми данными чем Managment Studio не встречал. Везде вроде и функционал может быть шире. но не удобно с данными работать и все.
                      Если говорить конкретно по DataGrip, сразу приходи на ум несколько не удобных момент:
                      1) Не явность синхронизации схемы с сервером и не интуитивность того с чем ты сейчас работаешь.
                      Например в VS ты явно создаешь новый проект, загружаешь в него схему и работаешь с ней, при нажатии синхронизации, ты выбираешь с кем синхронизироваться( т.е. у тебя нет в заголовке конкретного сервера у тебя есть проект базы ), он тебе выдает Diff, ты явно комитишь нужные изменения, они генерируют SQL скрип который можно посмотреть.
                      В DataGrip смешиваются понятия подключения к базе и схемы базы.
                      2) Если в подключении не сохранить данные для входа, то настройку подключения нужно «переделать», т.е. войти в настройки еще раз и войти от туда на сервер. Если этого не сделать данные для входа при нажатии кнопки синхронизировать не будут запрошены, получишь ошибку.
                      3) Консоли некоторые позволяют обновлять данные, некоторые нет, я так понял обновлять данные позволяет только первая, но не уверен.
                      4) Концепция консолей вообще путанная, не очень понятно к какой конкретно базе какая консоль, только к какому серверу.

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

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

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

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

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


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

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


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

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

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


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

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

                            0
                            Спасибо за развернутый ответ, буду смотреть. Что интересно — в vscode есть расширение для mssql м там работает автодополнение операторов, но при этом не работает автодополнение имен таблиц и колонок бд, идиотизм.
                          0
                          обновил, слетел ключ регистрации. ввел ключ регистрации, исчезли все коннекты ко всем проектам. спасибо, блин, большое

                          ваш платящий пользователь
                            0
                            Наверное вы не импортировали настройки. Попробуйте следующее: удалите конфиг папку (https://www.jetbrains.com/help/datagrip/2018.1/moving-your-data-sources-onto-another-computer.html#project_locations), а потом еще раз запустите IDE
                              0

                              Чтобы импортировать в 2018.2, видимо, надо было их сначала экспортировать в 2018.1, но я об этом ничего не знал.
                              просто подменить папку projects помогает частично. частично — проекты видны, но подсвечены красным и подклбчится нельзя из-за экскпшена.
                              вопрос — могу ли я где-то скачать 2018.1, забекапмтся и импортнуть в 2018.2?

                                0
                                Не надо экспортировать, он сам должен предложить импортнуть :)
                                А что за эксепшен? Вообще, датасорсы могут быть красными изза того что драйвера не скачаны.
                                  0

                                  не предложил :)
                                  пользуюсь начиная с версии 2017.1 — ни единого разрыва! а тут такое :)


                                  заменил папку, скачал драйвер, все стало ок

                                    0
                                    Супер!
                                    0

                                    но че-то это нифига не юзерфрендли. и первый раз такой квест прилетает с обновлением

                                      0
                                      Согласен, но вообще должно предлагать перетаскивать настройки из предыдущей версии. Если не предложил, это баг.
                              0
                              del

                              Only users with full accounts can post comments. Log in, please.