What's New in DataGrip 2019.1

New DBMS support

In this release cycle, we focused a lot on supporting several new databases.

Greenplum is an analytics database based on PostgreSQL. It is currently developed by Pivotal and the open source community.

Vertica is column-oriented storage designed to handle large volumes of data.

Apache Hive is a data warehouse built on top of Apache Hadoop for providing data query and analysis.

Snowflake is a cloud-based data-warehouse. In 2019.1 DataGrip supports only SQL dialect, the introspection support comes later.

Connection dialog

General

We’ve re-arranged the fields here to make the connection process more user-friendly.

The Connection type field is what used to be URL type. It determines the whole UI of this dialog, which is why it’s now on top along with the driver chooser.

The Database field goes after the credentials because sometimes credentials are needed to provide the database list. The list should be invoked by Ctrl+Space

Password saving is now implemented via a drop-down. It has four options: Never, Until restart, For session, and Forever. For Session is probably the only option that requires some explanation: it will save your password until you disconnect from the data source.

Also, the empty password now can be set via the UI; use the context menu to do that.

Test connection results are now inline and can be copied to the clipboard via a small dedicated button. The link to the troubleshooting page is also added.

Starting with 2019.1, the Test Connection button will not be disabled if there are no downloaded drivers. When you click Test Connection, DataGrip will offer you to download JDBC drivers.

Options

We’ve moved Read-only, Auto-Sync, and Transaction control settings here, from the General tab.

Newly introduced settings:
Run keep-alive query each N seconds will help you keep the connection alive. You can define the custom query in the driver settings for unsupported databases.
Auto-disconnect after N seconds. Pretty self-explanatory.
Startup script is an SQL query which will be run each time you establish a connection. Remember that if Single connection mode is unchecked, each new console creates a new connection.

Renamed setting:
Warn if editing an outdated DDL is the new name for what used to be Notify when the outdated object is opened.

Schemas

Object filter has been transferred here from the Options tab.

Data source list

A small enhancement: DDL data sources now have their own group in the data source list inside the connection dialog.

Search and navigation

Recent Locations

There’s a new Recent Locations popup that lists your recently visited/changed code locations. It presents them as code snippets with a couple of lines before and after the location.

This popup was inspired by Recent Files, but with an ability to search by visited code locations. This should come in handy when you remember what the code was about but can’t recall where it’s located. Especially if you work with several query consoles: they usually have similar names!

Press Delete/Backspace to remove locations from the popup.

The default shortcut for this popup is Ctrl+Shift+E.

If you’re used to pressing Ctrl+Shift+E to call up Recently changed files, please use double Ctrl+E for that instead.

Find in path

DataGrip can search in source codes of the objects. This was available only if you chose the All Places scope. We’ve cleaned up this UI a little bit and removed the Module and Project tabs.

A new scope, Attached Directories, is available. Use it if you want to search through files in the Files tool window.

Go-to popup

All navigation actions now work from here.

For instance, if you’re searching for a table, see what you can open from right here:
Table’s DDL: Ctrl+B.
Table’s data: F4 (Enter does the same for tables).
Modify Table dialog: Ctrl+F6.
Locate in… popup: Alt+F1 (Use it to see the object in the database tree view).
Quick doc popup: Ctrl+Q.
SQL generator: Ctrl+Alt+G.

There are many more actions related to the objects you see here!

Also, don’t forget about Navigation settings in Database | General. Feel free to create your own flow, as DataGrip now probably covers all possible use cases.

Code insight

Combined items in completion

We’ve added some combined options to the completion list for CREATE and DROP statements. For example, when you start typing CREATE, you can select CREATE TABLE.

One more benefit is that you can use abbreviations!

New inspections

Usages of GOTO statements and Named arguments should be used inspections are turned off by default as only some developers want these things to be reported.

Usages of GOTO statements inspection has three options:
- Report all GOTO statements;
- Report uses of GOTO statements to exit a loop;
- Report backward GOTO statements;

Named arguments should be used. Some developers prefer that because it makes code more readable.

DataGrip will also warn you if the cursor you use is not opened when inside a procedure or function.

Working with files

Now there is a Default Directory option in Settings/Preferences | Appearance & Behavior | System Settings. It will define where your new project will be created by default.

The Save as… action for the console file:
1. Offers the default project directory.
2. Keeps the last chosen folder.

A new action, Detach directory, is available for folders in the Files tool window. Use it from the context menu or assign a shortcut.

You can format files from the context menu without opening them.

Database tree view

We’ve improved database introspection for IBM DB2. You should now see the following new objects in the database tree: trigger, method, module, data type, variable, condition, sequence, check constraint, role, and global temporary table.

The tree now saves the context by itself, so you’ll always see the data source name at the top.

We’ve also added icons for some databases we don’t support yet. Before, if you had many data sources of unsupported databases, they could all make a mess in the Database tool window. We hope it looks a little bit better now.

You can use any of our new custom icons for all the rest. Choose the icon on the Options tab of the driver’s settings.

Other

Customizable themes

This release adds the possibility to fully customize the appearance of the IDE as now you’ll have the power to design your own theme from scratch. We’ve created a few brand new themes to get you started. They can be downloaded as plugins.

You can literally change the color of anything. Create your own theme plugin using the DevKit and modify the IDE appearance via a JSON file. Here are some links that you may find useful:

Detailed tutorial about how to create your own custom theme.

Blog post about creating custom themes for the IntelliJ Platform.

Cyan theme

Dark purple theme

Data editor

The filter is now a little nicer as it offers to use values from the clipboard.

Definer support

We’ve added support for the DEFINER attribute in MySQL and MariaDB.

First, you can choose whether the SQL Generator should add a DEFINER attribute to the generated code.

Second, you may ignore DEFINER attributes during migration.

Bug fixes

  • Schemas not chosen for introspection are not used in comparison now. DBE-7604
  • Schema qualifier is no longer missed when creating the foreign key. DBE-4993
  • Foreign key's referenced column is no longer omitted in the Modify Table dialog. DBE-7560
  • Fixed false positives while detecting unreachable code detection. DBE-7554
  • [MySQL] We’ve finally fixed the problem with NULL instead of the empty date for all connectors. DBE-69
  • [MariaDB] Fixed error during introspection. DBE-7743
  • [SQL Server] No more wrong COUNT() results. The driver problem isn't fixed yet, so we’ve made changes on our side. DBE-2114
  • [SQL Server] Tables were duplicated sometimes. No more. DBE-7297
  • [Oracle] The Enable DBMS_OUTPUT button is back. DBE-4702
  • [Oracle] Fixed the problem with temporary segments in. DBE-7443
  • [Oracle] The source code of packages and functions is introspected properly. DBE-6768