— Лог всех запросов
— Новый форматер кода
— Запуск хранимых процедур
— Миграция исходников
— План запроса в виде диаграммы
— Редактирование SQL
— Редактор данных
— Улучшения в пользовательском интерфейсе
Лог всех запросов
Все запросы, которые запускает DataGrip теперь отображаются в панели Output каждой консоли. Сюда попадают и пользовательские запросы, и внутренние.
Всё, что запускается в DataGrip, попадает в отдельный лог-файл.
Чтобы его открыть, используйте Help -> Show SQL log.
Новый форматер кода
Спасибо всем, кто делился идеями о стилях в SQL, мы постарались учесть ваши пожелания. Нам много есть чего добавить, так что будем рады, если поделитесь стилями, которые мы не покрыли.
В DataGrip можно создавать несколько стилей кода.
Теперь можно к каждому источнику данных прикрепить стиль.
Запуск хранимых процедур
Эту штуку долго ждали хардкорные энтерпрайзники с процедурами на триста аргументов :) Сейчас это работает для Oracle, PostgreSQL а для SQL Server только в DataGrip, но в версии 2018.2.1 другие IDE подтянутся.
Чтобы запустить процедуру, выберите Execute из контекстного меню.
Вставьте значения нужных параметров в сгенерированный код.
В этом примере для Oracle мы отображаем вывод через jbdc-драйвер. Поэтому нам нужен этот код с вопросиками.
В более классическом случае никакого вывода нет, тогда часто достаточно простого кода. Это пример для PostgreSQL.
Процедуру еще можно запустить, нажав на зеленую стрелку в панели инструментов редактора исходника.
Миграция исходников
Не думайте про CREATE OR REPLACE и так далее, просто меняйте в исходниках то, что вам нужно. Слева на панели отображаются сделанные изменения, можно посмотреть разницу с серверной версией. Чтобы отправить изменения в базу, нажмите Submit.
Будет сгенерирован код. Нажмите OK, чтобы выполнить его.
План запроса в виде диаграммы
Кому-то так удобнее, чем дерево. Мы сделали :)
Чтобы открыть диаграмму, найдите на панели инструментов кнопку Show Visualization, после того, как запустили Explain Plan.
Редактирование SQL
Информация о контексте
Когда имеешь дело с исходником большой процедуры, полезно напомнить себе о контексте — внутри чего находится курсор: какой процедуры или какого пакета. Используйте для этого Alt+Q (Shift+Ctrl+Q for OSX), сверху отобразится контекст.
Прыгнуть за скобки или кавычки, нажав Tab.
Это пришло из других IDE: когда вводите параметры функции, нажатие Tab отправляет курсор за кавычки или скобки.
Включается это здесь: Settings/Preferences | Editor | General | Smart keys | Select Jump outside closing brackets/quote with Tab.
Редактор данных
Комментарии к колонкам в подсказках
Объяснять тут нечего :)
Количество выделенных строк
Раньше внизу отображалось только количество выделенных полей. Добавили строки.
Улучшения в интерфейсе
Поддержка сенсорной панели
У обладателей Mac Book Pro с сенсорной панелью на ней появится кнопка Execute.
Но можно добавить любое действие. Для этого идите в Preferences > Appearance & Behavior > Menus and Toolbars > Touch Bar.
Источник данных на основе драйвера
Такие источники стало легче создавать: в выпадающем списке для создания источника есть пункт Driver and Data Source.
Назначение шортката из Find Action
Эта штука есть давно, но она не работала для некоторых раскладок и схем горячих. Теперь работает везде :) Итак, на любом действии можно нажать Alt+Enter и назначить сочетание клавиш.
Запустить скрипт на схеме
Раньше надо было так: находите скрипт-файл и запускаете на нужной базе. Теперь можно наоборот: в контекстном меню схемы появился пункт Run SQL script.
Диалект и прикреплённая консоль в панели инструментов
Работать с файлами стало легче: на панели инструментов выбирайте нужный диалект и прикрепляйте консоль.
Тёмные шапки окон
Чтобы это сделать для macOS, включите Preferences | Appearance & Behavior | Appearance | Use dark window headers.
Будем рады вопросам в комментариях и не забудьте заглянуть в Features, вдруг чего-то не знали?
Команда DataGrip.
Комментарии (27)
werklop
26.07.2018 20:23А предполагается подобное для NoSQL СУБД?
moscas Автор
26.07.2018 22:47Да, но не в ближайшем будущим. Я наизусть помню номер тикета в нашем трекере: 41 :) Мы знаем, что это надо делать.
werklop
26.07.2018 23:09А можете пояснить, почему не в ближайшем будущем, какие проблемы с этим связаны и как вообще компания смотрит на реализацию этого функционала? Если конечно, это не коммерческая тайна
rjhdby
27.07.2018 11:30+1Наверное потому, что NoSQL. Это же не фич добавить и не поддержку еще одной реляционной, где только со схемой разобраться, а все остальное по готовым шаблонам. Тут под каждую БД отдельный уникальный адаптер разрабатывать надо.
moscas Автор
27.07.2018 11:49rjhdby ответил по делу :) Чтобы делать поддержку одной из NoSQL баз, нужны большие ресурсы. Чтобы их выделить, нужно сначала стать зрелым инструментом для реляционных баз: мы к этому идём, но всё еще не дошли: дебаггер, управление коннекциями, проектная модель, удобная интеграция базы и VCS — всё это ещё предстоит сделать.
Впрочем, если завтра нам напишет человек, который скажет: «хочу делать NoSQL», мы его с удовольствием возьмём.
gudvinr
27.07.2018 01:04У datagrip большая беда с фильтрами схем. По крайней мере, для postgresql.
Он зачем-то выводит кучу служебных таблицpg_toast_%
/pg_temp_%
, которых на production-серверах может быть ощутимое количество.
Плюсом к этому сам фильтр жутко неудобный. Если хочется выбрать вручную схемы для синхронизации — нужно кликать по каждой вручную. Пользуясь в течение полугода и EAP и стабильными ревизиями можно было наблюдать эволюцию этого фильтра. Сначала сделали хорошо и добавили возможность выделить схемы, затем включив нажатием пробела, а потом вернули как было.moscas Автор
27.07.2018 12:19Не очень понятно.
1. Вы имеет в виду таблицы или схемы? Вы же сами выбираете, что добавлять в дерево.
2. Про эволюцию фильтра непонятно. «затем включив нажатием пробела» — что это значит?) Можете подробно рассказать? Мы хотим сделать удобно :)gudvinr
27.07.2018 16:291.Я имею в виду схемы. постгрес во время работы создает много схем с названиями
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+ЛКМ выделить схемы, потом нажать пробел и у них всех бы поменялся чекбокс.
rjhdby
27.07.2018 11:27Будет ли поддержка Informix?
moscas Автор
27.07.2018 11:47Мы по-тихоньку добавляем новые диалекты. С большей вероятностью те, где сами вендоры помогают нам с файлами грамматики и запросами. Так например произошло с Яндексом — следующей базой в нашем спсикке буедт ClickHouse. Для Информаикса есть тикет, все новости будут там: youtrack.jetbrains.com/issue/DBE-435
rjhdby
27.07.2018 11:56А можно попробовать вам в этом помочь? Если да, то как?
Ну я не знаю там… схему системных таблиц описать, какой нибудь код написать (какой и где?), еще что-то не очевидное, чтобы очередной диалект поднялся выше в очереди?moscas Автор
27.07.2018 12:23Если вы java-программист, то приходите к нам на работу :) spb.hh.ru/vacancy/18636558
rjhdby
27.07.2018 12:27Да в принципе засылал резюме, ответа не пришло. Видимо фиговый программист. :)
moscas Автор
27.07.2018 12:26Но если речь, например, об Информиксе, то помочь со стороны ещё как можно: например, прислать запросы для интроспекции или добыть файлы с грамматикой. Общий алгоритм у нас описан тут: www.jetbrains.com/datagrip/new_dbms
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 освоить не очень просто, но потом там все очень логично и удобно ).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 пока ничего не отбила, я пока надеюсь, что они приведут инструмент к крутому виду.
nApoBo3
28.07.2018 13:24Голая SSMS вообщем не предназначена для серьезной разработки, она скорее для dba. В одной точке оперирование данными, схемами, логами, настройками.
Для разработки безусловно луче VS, при этом она вообщем прозрачна после SSMS.
Там и гит, и тесты, и скрипты развертывания и все что хочешь, правда только, если не ошибаюсь, в utimate.
Сам ищу инструмент который может VS или SSMS заменить для PG, но пока такого не нашел.
Мучаюсь в PGadmin, консолью и DG.speshuric
28.07.2018 14:01она скорее для dba
Ну автокомплит ключевых слов, git и переход к определению DBA точно не помешает.
если не ошибаюсь, в utimate
Ошибаетесь: git точно есть в community. Скрипты развертывания в целом есть, кажется в любом SSDT (даже в stand-alone). А вот с тестами — только с professional.
Раз уж упомянули, а есть реальный опыт разработки не крошечных проектов с SSDT и юнит тестами SQL?
dmitry_dvm
27.07.2018 13:18Немного не в тему, но может кто знает — как в SSMS включить автодополнение операторов, чтобы из sel получить SELECT? И почему это не работает из коробки?
speshuric
28.07.2018 01:42А его нет из коробки. Решение только поставить сторонние плагины. По сути другого пути нет.
Из популярного можно отметить:
- SSMSBoost
- ApexSQL
- RedGate
- dbForge Studio — но это прям глубокая переделка, по сути только движок VS чуть-чуть используется
Все хотят денег (чаще много), у всех какие-то кусочки есть и бесплатно. Автокомплит бесплатный есть у ApexSQL, но какой-то глючноватый и тормознутый.
GoldJee
Крутые функции, как всегда. На мой вкус, IDE от JB самые удобные. Жаль, для этого продукта Community Edition не завезли.
moscas Автор
Спасибо!
Tantrido
Согласен! Ещё хорошо, что на степике лицензии к ним дают :)