What's New in DataGrip 2021.2

What's New in DataGrip 2021.2

DataGrip 2021.2 is here! This is the second major update of 2021, and it’s packed with various

enhancements. Let’s take a look at what it has to offer!

DDL data source

DDL data source generation is another step in our long-term development of seamless

database versioning. With this feature, you can keep your DDL files under a VCS

system and regenerate them every time your database structure is updated.

It is now possible to generate a DDL data source based on a real one. The DDL

files are created locally and the new data source is based on them. This way

you’ll always be able to regenerate these files and refresh the DDL data source.

Let’s take a look at how this works.

  We’ve added a new menu item, Dump to DDL data source, to the SQL Scripts context menu.   When the dialog opens, you need to specify the folder where the newly created files will be stored.   On the Generation tab, specify how these DDL files should be generated.   Finally, click OK to create the DDL data source.   The folder with the new files is automatically attached to your project.   Creating objects   In v2021.2, you can create objects in a DDL data source via the UI. The corresponding files will be created locally.   Diagrams      The following important features have been added to diagrams: Table comments are now visible Table colors are displayed on the diagram You can turn off edge merges   Quality improvements:   DBE-: We have improved the algorithm that draws diagrams, so the names of the objects no longer overlap with relation lines.   DBE-: The notes are no longer lost on save.   Code editor      Search in Local History   If you are looking for a particular revision in Local History, you can use text search for help!   Local History for sources   DataGrip now tracks local changes for object source codes. It can be especially useful when working with procedures and functions.   Since every object's sources are stored in a file, all external changes are also considered as local changes. When you introspect your database, this file is refreshed.   You can use the Local History popup to keep track of any changes to a function or procedure. Note that all external changes are considered as one change if they happened within two runs of the introspection.   Long tab names are back   After receiving some feedback from users who didn’t like the shortened tab names, we introduced the option to change them back. If you prefer long tab names, uncheck the Shorten Tab Titles option. Shrinking selection   Maximize Editor / Normalize Splits action   For a long time we had the Hide All Tool Windows action, which could be called by double clicking on a tab or pressing Shift+Ctrl+F12. Many users treated it as a Maximize Editor action and it worked as such!   After we introduced the split mechanism, the situation became more complicated. Should this action hide the split tabs or not? So we did the following: The Hide All Tool Windows action no longer hides the split tabs. The new Maximize Editor / Normalize Splits action maximizes the current tab, but doesn’t hide the tool windows.   Code completion      Completion scope   Now it's possible to define which objects should be presented in the code completion list: objects only from the schema switcher (or the search path), from the current scope, or from all schemas. Suggest only search path objects: only objects from the schemas chosen in the schema switcher are suggested. Suggest objects from current scope (default setting): the list will be populated with the objects DataGrip can correctly resolve without qualification – the set of objects from the schema switcher, USE statements, and the default schema. Suggest objects from all available schemas: the list will contain all objects from all available schemas.   This can be also managed by smart completion. Smart completion is invoked when you press the completion hotkey (usually Ctrl+Space) several times. Pressed once or invoked automatically: as described above. Pressed twice: all schemas except those turned off for the introspection. Pressed three times: objects from all available schemas and databases.   Completion of fields and operators MongoDB   Fields and operators are now available in code completion for MongoDB. Read this post for more details.   Completion for cross-database synonyms SQL Server   Code completion for cross-database synonyms is now available.   INSERT completion and computed columns   Computed columns are taken into account when completing statements – they are not included in the suggested item.   Quality improvements   DBE-, DBE-2212: Objects from the schema of the current context have higher priority in the code completion list.   DBE-7781, DBE-: The automatic alias appears only when needed.   DBE-: Table qualification in completion works as expected.   DBE-: The priority of inside an clause has been increased.   DBE-: PostgreSQL Completion in statements works as expected.   Code highlighting      Support for recursive CTE Redshift   Queries that use recursive common table expressions are now properly highlighted and can be run without being selected.   Better CTE support ClickHouse   The common table expressions syntax, when the CTE name goes before the keyword, is now supported.   Quality improvements   DBE-3759, DBE-, DBE-: Inspections for aggregates work more precisely.   DBE-: ClickHouse No more false-positive alerts from the inspection that reports not-null arguments in .   DBE-: Oracle PL/SQL record type fields are resolved correctly.   DBE-: DB2 Table aliases are resolved correctly.   Database explorer      Separate folders for functions and procedures   If you turn on the Separate Procedures and Function option in the database explorer settings (the gear icon), it will immediately take effect.   For SQL Server there are dedicated nodes for scalar and table functions. For PostgreSQL there is a node for trigger functions.   Separate nodes for triggers, keys, and indices   A new database tree option, Show Constraints and Triggers in the Schema, assigns triggers, keys, and indices their own individual nodes in the database explorer.      Why is this useful? You can find an object inside one schema by using quick search. You can see the columns just under the table node. To do this, make sure the Show Empty Groups option is turned off.   Natural sort order for database objects   If you turn off the Sort Alphabetically option in the database explorer settings, natural sorting for objects will be applied.   Here’s what it looks like when Sort Alphabetically is off:   Here’s what it looks like when Sort Alphabetically is off:   ...and when Sort Alphabetically is on:   Introspection      Native introspection CockroachDB   CockroachDB will be fully supported in this release. DataGrip will no longer rely on JDBC-based introspection, but use the native one instead.      This is much faster than JDBC-based introspection. Also, role, deftype, and check constraint could not be introspected at all in the previous version. The full list of objects that are now introspected includes database, role, privilege, schema, sequence, deftype, table, view, mat view, index, column, and constraints. That partitions are not introspected yet is a known issue.   Virtual foreign keys for pg_catalog PostgreSQL   Some time ago, we announced a mechanism for creating virtual foreign keys. Now we’ve used this mechanism to cover pg_catalog with virtual foreign keys. This brings a couple of improvements.   First, completion helps you when querying system tables:   Second, you can navigate by data in system tables:   Tablespaces Oracle   We added support for tablespaces, data files, and temporary files. They are now introspected:      They are also included in DDL generation:   Linked Servers SQL Server   This isn’t full support yet, because metadata is not available for objects in linked servers. Linked servers are shown in the database explorer, and the DDL for their creation can be generated.   Data editor   Shrinking selection   Context live templates from the data editor   Introduced in the previous release, context live templates now work from the data editor. If you’re working with a table and you wish to query it, you can easily do so with the help of the SQL Scripts action.   Option for additive sorting   We recently introduced Alt+Click for additive sorting. But if you prefer using Click, you can customize this behavior: Shrinking selection   Add/delete column MongoDB   You can now add columns to MongoDB collections. This action lets you add a new field to any document of a collection.      Delete column will delete data not only on the page that is being displayed, but also throughout the whole collection. Shrinking selection   Adding/renaming columns in CSV files   With the help of the UI data editor, you can now add and remove columns in CSV files.   Copy query to console   When working in a data editor, you might sometimes use complicated clauses in and fields. If you want to continue working with the resulting query, use a new action, Copy Query to Console, under the gear icon. It opens the query in the default console. Shrinking selection   No more First row option in navigation by foreign keys   To make the navigation faster, we’ve removed the First row option. No popup will be displayed, and you will be navigated to the table that shows all referencing or referenced rows.   Qualification in navigation by foreign keys   If you have foreign keys pointing to objects in another schema and these objects have the same names, they will be displayed as qualified in the foreign keys navigation UI.   Quality improvements   DBE-: The size of the field is saved.   DBE-: The time zone is always shown for values with a time zone.   DBE-9814: Oracle type values don’t display time if no time is set.   DBE-: Oracle Filtering by the field is possible.   DBE-: DB2 Filtering by binary, blob, char for bit data, and varchar for bit data fields is possible.   Import/Export      Table link after import   When you finish an import, a link to the new table appears in the notifications.   Quality improvements   DBE-: Export of numeric fields no longer fails if there are non-numeric values.   DBE-, DBE-, DBE-: Importing became faster for PostgreSQL, Redshift, Exasol, Hive, Clickhouse, DB2, and HSQL.   Navigation      Behavior of the Enter key in the navigation bar   The behavior of the navigation bar is now more straightforward – the Enter key always expands the node.      Before, the Enter key opened data for tables and opened consoles for data sources.   If you want to navigate from the object in the navigation bar rather than opening its node, you can use these navigation shortcuts: Open DDL: Ctrl+B Open data: F4 Select in the database tree: Alt+Shift+B   Signatures in the Go To popup   Now, when you are searching for a function, procedure, or operator, DataGrip shows the signature in the Go To window. This helps when you use overloading heavily.   General      Localized UI   Starting from this version, you can enjoy the fully localized UI of DataGrip in Chinese, Korean and Japanese. Localization is available as non-bundled language pack plugins, which can be easily installed to DataGrip. More than 1.5 mln users started using the partially localized EAP version of our language packs. Now you can enjoy the full localization experience!   New location for projects   In DataGrip, projects are now located by default in the same place as they are in all other IntelliJ-based IDEs – in the user’s home folder, inside the DataGripProjects subfolder.      Your project in DataGrip is a complex of your data sources, console and scratch files, and attached folders. They were previously stored in the configuration folder, meaning that each time you updated your IDE, the projects were copied, along with IDE settings.   This sometimes caused the data source list to become empty. This problem has been solved, and now DataGrip behaves consistently with other IDEs.   Because of errors in project migration, those who used the first EAP build might have lost their Favorites, Bookmarks, Run Configurations, or data about virtual foreign keys. To restore them, please migrate from the previous version again. The details are described here: DBE-.   Settings    Back and forward buttons   These buttons make it easier to navigate in the Settings window and not get lost there. Advanced Settings   We’ve added Advanced Settings as a new node in Preferences/Settings. It contains some use-case-specific options conveniently grouped by IDE tool. Most of the settings have been transferred from the Registry, though some of them are new.   A couple of notable settings: Left-hand margin in Distraction-free mode. Ability to set the caret to move down after you use the Comment with Line Comment action. Customizing the behavior of double-clicking on a tab.   Show scratch files action   A new Show Scratch Files action (found via Find Action: Cmd+Shift+A) shows a list of scratches with snippets in a popup. It has the same UI as the Recent Locations popup with speed-search and deletion.   Managing the Services tool window popups   When a query returns no data, there’s no need for the Services tool window to appear if it was hidden already. Now you can define which operations make the Services tool window appear on your own.   Quality improvements   DBE-: PostgreSQL We’ve reworked the introspector. For you, the main effect of the new introspector is – no more object duplicates!   DBE-: No more freezing when typing statements along with using virtual foreign keys.   DBE-: Empty scratch files are now automatically removed.