DataGrip 2019.1 EAP is started

For those eager to try the newest things, we invite you to join our Early Access Program for DataGrip 2019.1. As you may know, these builds don’t require a license – we just want everybody to try the new features out before the official release. Let’s go!

yCCKAB58

New databases: Greenplum, Vertica, and Apache Hive

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

ThreeGraces

Greenplum is an analytics database based on PostgreSQL. It is currently developed by Pivotal and the open source community. For now, we have only SQL support for Greenplum; native database introspection will come later.

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.

Connectivity enhancements

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.

TestConnection

We’ve also reworked the way passwords are stored, so now there are two options for Remember password:

Forever: Pretty self-explanatory. You will not be requested to enter the password again, period. Note the password will be stored separately (i.e. not within DataGrip).

For session: The password is saved until DataGrip is closed. Every time you re-open DataGrip, you’ll be requested to enter your password. Note this was the behavior when Remember was not selected, before v2019.1.

If you unselect Remember in 2019.1, entering the password will be required for every new connection. By default, every new console or data editor requires the new connection, unless you use Single Connection Mode.

Database tree view

We’ve improved database introspection for IBM DB2. You should now see these new objects in the database tree: module, data type, variable, condition, and global temporary table.

DB2

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

TreeContext

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. Now we hope it looks a little bit better.

CustomLogos

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.

CompletionCreate

One more benefit is that you can use abbreviations!

CompletionCaf

For MariaDB, DataGrip now highlights statements when running Oracle mode.

MariaOracle

For as long as we can remember, the Ctrl+Y shortcut has been assigned to Delete Line in the default Windows keymap. This seems to confuse many of our users because in many text editors, the Ctrl+Y shortcut is assigned to Redo. So, starting with 2019.1, when you first use the Ctrl/Cmd+Y keystroke, you will be prompted to assign the shortcut either to Delete Line or Redo. If you change your mind later, you can always customize the shortcut in Settings | Keymap.

Redo

Other

The filter in the data editor is now a little nicer: it offers you to use values from the clipboard.

FilterClipboard

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 into the generated code.

SkipDefiner

Second, you may ignore DEFINER attributes during migration.

IgnoreDefiner

Bug fixes:

DBE-7640: Now you can set the default folder for a project.
DBE-7297: Tables in SQL Server were duplicated sometimes. No more.
DBE-7604: Schemas not chosen for introspection are not used in comparison now.
DBE-4993: Schema qualifier is no longer missed when creating the foreign key.
DBE-7560: Foreign key’s referenced column is no longer omitted in the Modify Table dialog.
DBE-4702: The Enable DBMS_OUTPUT button used in Oracle is back.
DBE-7443: Fixed the problem with temporary segments in Oracle.
DBE-6768: The source code of packages and functions is introspected properly.
DBE-7554: Fixed false positives while detecting unreachable code detection.

That’s all for today. Your feedback is welcome in our twitter or forum. By the way, this version introduces a handy feedback method: just click Help -> Report problem… to raise a new issue in our issue tracker!
The DataGrip Team

This entry was posted in EAP, Features and tagged . Bookmark the permalink.

22 Responses to DataGrip 2019.1 EAP is started

  1. Artem says:

    Can I update through the Toolbox app or it may take some time?
    Thanks!

  2. Juraj says:

    Hi,
    Thank you very much for Greenplum support. My current team is using it and I will promote Datagrip in our team once native introspection is implemented, as that might fix my pain-points with it (was using it until now as dbms=”postgress” with GP driver)

    • Maksim Sobolevskiy says:

      If you describe these pain-points, perhaps, we can fix them earlier :)

      • Juraj says:

        Hi, here is my personal list:

        Major (With GreenPlum official driver) :

        1. When double clicking table, it runs without limit unlike postgres which limits for 501 (I think its based on result limit ?). Best option (personally) would be to have have separate limit e.g 500 for table/view exploring, and page size only affect user queries.
        2. When we refresh/synchronize db, it limits itself to selected schemas( which is really good) , but in selected schemas, it individually is requesting keys and indices per each table. This is very slow in Greenplum. Not sure about the best approach, but either it should load them together on per schema basis or we should have option to not load them at all, most users in Greemplum specifically don’t really care about them and usually its not even good practice.
        PS: Official driver makes huge impact on performance.

        Minor:

        Greemplum direct driver link: probably not your fault, I really hate when companies put their open source stuff behind registration. (props to JetBrains)

  3. Artem says:

    In this version no longer hangs when indexing. In previous version the user interface was blocked for 20-30 seconds. This makes me happy! Great!

  4. long says:

    I got below error on my macos mojave

    Internal error. Please report to http://jb.gg/ide/critical-startup-errors

    kotlin.KotlinNullPointerException
    at com.intellij.ide.ui.UISettings$Companion.getInstance(UISettings.kt:361)
    at com.intellij.ide.ui.UISettings.getInstance(UISettings.kt)
    at com.intellij.openapi.actionSystem.Presentation.setText(Presentation.java:179)
    at com.intellij.openapi.actionSystem.Presentation.setText(Presentation.java:195)
    at com.intellij.ui.mac.touchbar.TBItemAnActionButton.updateAnAction(TBItemAnActionButton.java:72)
    at com.intellij.ui.mac.touchbar.TouchBar.lambda$updateActionItems$6(TouchBar.java:250)
    at com.intellij.ui.mac.touchbar.ItemsContainer.lambda$forEachDeep$2(ItemsContainer.java:144)
    at java.util.ArrayList.forEach(ArrayList.java:1257)
    at com.intellij.ui.mac.touchbar.ItemsContainer.forEachDeep(ItemsContainer.java:139)
    at com.intellij.ui.mac.touchbar.ItemsContainer.lambda$forEachDeep$2(ItemsContainer.java:141)
    at java.util.ArrayList.forEach(ArrayList.java:1257)
    at com.intellij.ui.mac.touchbar.ItemsContainer.forEachDeep(ItemsContainer.java:139)
    at com.intellij.ui.mac.touchbar.TouchBar.forEachDeep(TouchBar.java:236)
    at com.intellij.ui.mac.touchbar.TouchBar.updateActionItems(TouchBar.java:245)
    at com.intellij.ui.mac.touchbar.TouchBar.onBeforeShow(TouchBar.java:229)
    at com.intellij.ui.mac.touchbar.StackTouchBars$TouchBarHolder._setNextTouchBar(StackTouchBars.java:165)
    at com.intellij.ui.mac.touchbar.StackTouchBars$TouchBarHolder.lambda$setTouchBar$0(StackTouchBars.java:150)
    at javax.swing.Timer.fireActionPerformed(Timer.java:313)
    at javax.swing.Timer$DoPostEvent.run(Timer.java:245)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:764)
    at java.awt.EventQueue.access$500(EventQueue.java:98)
    at java.awt.EventQueue$3.run(EventQueue.java:715)
    at java.awt.EventQueue$3.run(EventQueue.java:709)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:734)
    at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:346)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:109)
    at java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:190)
    at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:235)
    at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:233)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:233)
    at java.awt.Dialog.show(Dialog.java:1077)
    at com.intellij.openapi.ui.impl.DialogWrapperPeerImpl$MyDialog.show(DialogWrapperPeerImpl.java:695)
    at com.intellij.openapi.ui.impl.DialogWrapperPeerImpl.show(DialogWrapperPeerImpl.java:427)
    at com.intellij.openapi.ui.DialogWrapper.invokeShow(DialogWrapper.java:1683)
    at com.intellij.openapi.ui.DialogWrapper.show(DialogWrapper.java:1632)
    at com.intellij.ui.AppUIUtil.showEndUserAgreementText(AppUIUtil.java:389)
    at com.intellij.ui.AppUIUtil.lambda$showUserAgreementAndConsentsIfNeeded$2(AppUIUtil.java:266)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:301)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:764)
    at java.awt.EventQueue.access$500(EventQueue.java:98)
    at java.awt.EventQueue$3.run(EventQueue.java:715)
    at java.awt.EventQueue$3.run(EventQueue.java:709)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:734)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

  5. Karthik says:

    Thank you for the Greenplum support. This is great to have.

    I observed, both Postgres and Greenplum use the same Postgres driver while setting up DataSources.

    Question:
    Are there any significant differences in performance while using the Greenplum connection over Postgres (to connect to a Greenplum Database)?

    • Maksim Sobolevskiy says:

      As we know, differences are not significant at all.

    • Juraj says:

      Hey Karthik,

      I have done some testing on this in our company database and I see small performance gain mostly on smaller queries. Usually around 2 sec turnaround difference.

      Not sure if that is significant, but please keep in mind that you may see much larger difference in ODBC connections. DataGrip’s JDBC seem to be fine.

      Also, you probably want to use Postgress drivers anyway, as they are so far only supported by Datagrip, otherwise you lose features like capping table previews to 500 limit and more.

  6. long says:

    Any plan to support impala dialect?

  7. Gunter says:

    Possibility to add ssh-tunnels natively?

  8. Pingback: PhpStorm 2019.1: Отладка шаблонов Twig и Blade, поиск мертвого кода, улучшенное автодополнение, и многое другое – CHEPA website

  9. Pingback: PhpStorm 2019.1: Отладка шаблонов Twig и Blade, поиск мертвого кода, улучшенное автодополнение, и многое другое | Основы РЕМОНТА

Leave a Reply to Gunter Cancel reply

Your email address will not be published. Required fields are marked *