DataGrip 2021.2 最新变化

DataGrip 2021.2 来了! 这是 2021 年的第二次重大更新,其中包含各种增强功能。 让我们看看它提供了什么新功能!

DDL 数据源

DDL 数据源生成是我们无缝数据库版本控制长期开发的又一步。 使用此功能,您可以将 DDL 文件保存在 VCS 系统下,并在每次更新数据库结构时重新生成这些文件。

现在可以基于真实数据源生成 DDL 数据源。 DDL 文件会在本地创建,新数据源将以其为基础。 这样,您将始终能够重新生成这些文件并刷新 DDL 数据源。

让我们看看这是如何实现的。

我们在 SQL Scripts 上下文菜单中添加了一个新的菜单项 Dump to DDL data source

当对话框打开时,您需要指定将存储新创建文件的文件夹。

Generation 标签页上,指定应如何生成这些 DDL 文件。

最后,点击 OK 来创建 DDL 数据源。

包含新文件的文件夹会自动附加到您的项目。

创建对象

在 v2021.2 中,您可以通过 UI 在 DDL 数据源中创建对象。 相应的文件将在本地创建。

图表

图表中已添加以下重要功能:

  • 表注释现在可见
  • 表颜色显示在图表上
  • 您可以关闭边缘合并

质量改进:

DBE-13057:我们改进了绘制图表的算法,对象的名称不再与关系线重叠。

DBE-13264:备注在保存时不再丢失。

代码编辑器

在 Local History 中搜索

如果您在 Local History 中查找特定修订,可以使用文本搜索!

源代码的本地历史

DataGrip 现在可以跟踪对象源代码的本地更改。 这在处理过程和函数时特别有用。

由于每个对象的源代码都存储在文件中,因此所有外部更改也会被视为本地更改。 当您内省数据库时,会刷新此文件。

您可以使用 Local History 弹出窗口来跟踪对函数或过程的任何更改。 请注意,如果所有外部更改都发生在内省的两次运行内,则这些更改会被视为一次更改。

长标签页名称又回来了

在收到不喜欢缩短的标签页名称的用户的一些反馈后,我们引入了将它们更改回来的选项。 如果您更喜欢长标签页名称,请取消选中 Shorten Tab Titles 选项。

缩减选择

Maximize Editor / Normalize Splits 操作

很长一段时间以来,我们都有 Hide All Tool Windows 操作,可以通过双击标签页或按 Shift+Ctrl+F12 来调用该操作。 许多用户将其视为 Maximize Editor 操作,并且它就是这样工作的!

在我们引入拆分机制后,情况变得更加复杂。 此操作是否应隐藏拆分的标签页? 所以我们做了以下事情:

  • Hide All Tool Windows 操作不再隐藏拆分的标签页。
  • 新的 Maximize Editor / Normalize Splits 操作可将当前标签页最大化,但不会隐藏工具窗口。

代码补全

补全范围

现在可以定义哪些对象应当出现在代码补全列表中:仅来自架构切换器(或搜索路径)、当前范围或所有架构。

  • Suggest only search path objects:仅建议来自架构切换器中所选架构的对象。
  • Suggest objects from current scope(默认设置):此列表将填充 DataGrip 无需限定条件即可正确解析的对象 - 来自架构切换器、USE 语句和默认架构的对象集。
  • Suggest objects from all available schemas:此列表将包含来自所有可用架构的所有对象。

这也可以通过智能补全来管理。 当您多次按补全热键(通常为 Ctrl+Space)时,会调用智能补全。

  • 一次或自动调用:如上所述。
  • 两次:除了为内省而关闭的架构之外的所有架构。
  • 三次:来自所有可用架构和数据库的对象。

字段和运算符的补全 MongoDB

现在,可以在 MongoDB 的代码补全中使用字段和运算符。 阅读这篇博文了解更多详细信息。

跨数据库同义词的补全 SQL Server

现已提供跨数据库同义词的代码补全。

INSERT 补全和计算的列

补全 INSERT 语句时会考虑计算的列 – 它们不包含在建议项中。

质量改进

DBE-10515DBE-2212:来自当前上下文架构的对象在代码补全列表中具有更高的优先级。

DBE-7781DBE-10650:自动别名仅在需要时出现。

DBE-12018JOIN 补全中的表限定条件按预期运行。

DBE-12479ORDER BY 子句中的 ASC/DESC 的优先级已提高。

DBE-13341PostgreSQL GRANT/REVOKE 语句中的补全按预期运行。

代码高亮显示

支持递归 CTE Redshift

使用递归通用表表达式的查询现在会正确高亮显示,无需选择即可运行。

更好的 CTE 支持 ClickHouse

当 CTE 名称位于 AS 关键字之前时,现在支持通用表表达式语法。

质量改进

DBE-3759DBE-13364DBE-13365:聚合的检查更精确地运行。

DBE-10782ClickHouseCOALESCE 中报告非空参数的检查中不再出现误报警报。

DBE-13188Oracle PL/SQL 记录类型字段已正确解析。

DBE-10550DB2 表别名已正确解析。

数据库资源管理器

用于功能和过程的单独文件夹

如果您在数据库资源管理器设置(齿轮图标)中打开 Separate Procedures and Function 选项,它将立即生效。

对于 SQL Server,有标量和表函数的专用节点。 对于 PostgreSQL,有触发函数的节点。

用于触发器、键和索引的单独节点

新的数据库树选项 Show Constraints and Triggers in the Schema 可在数据库资源管理器中为触发器、键和索引分配它们自己的个别节点。

 

为什么这很有用?

  • 您可以使用快速搜索在一个架构中找到对象。
  • 您可以看到表节点下的列。 为此,请确保关闭 Show Empty Groups 选项。

数据库对象的自然排序顺序

如果关闭数据库资源管理器设置中的 Sort Alphabetically 选项,将应用对象的自然排序。

下面是 Sort Alphabetically 关闭时的样子:

下面是 Sort Alphabetically 关闭时的样子:

…以及 Sort Alphabetically 打开时的样子:

内省

原生内省 CockroachDB

此版本将完全支持 CockroachDB。 DataGrip 将不再依赖基于 JDBC 的内省,而是使用原生内省。

 

这比基于 JDBC 的内省要快得多。 此外,roledeftypecheck constraint 在上一个版本中根本无法内省。 现在,内省的完整对象列表包括 databaseroleprivilegeschemasequencedeftypetableviewmat viewindexcolumnconstraintspartitions 尚不会内省,这是一个已知问题。

pg_catalog 的虚拟外键 PostgreSQL

不久前,我们推出了一种创建虚拟外键的机制。 现在,我们已经使用这种机制来覆盖带有虚拟外键的 pg_catalog。 这带来了几项改进。

首先,JOIN 补全可在查询系统表时提供帮助:

其次,您可以按数据在系统表中导航:

表空间 Oracle

我们添加了对表空间、数据文件和临时文件的支持。 它们现在会内省:

 

它们也包含在 DDL 生成中:

链接的服务器 SQL Server

这还不是完全支持,因为元数据不可用于链接服务器中的对象。 链接服务器显示在数据库资源管理器中,并且可以生成用于创建它们的 DDL。

数据编辑器

缩减选择

来自数据编辑器的上下文实时模板

在上一个版本中引入的上下文实时模板现在可以在数据编辑器中使用。 如果您正在处理表并希望查询它,则可以借助 SQL Scripts 操作轻松实现此目的。

加法排序选项

我们最近为加法排序引入了 Alt+Click。 但是,如果您更喜欢使用点击,则可以自定义此行为:

缩减选择

添加/删除列 MongoDB

您现在可以将列添加到 MongoDB 集合。 此操作允许您向集合的任何文档中添加新字段。

 

Delete column 不仅会删除正在显示的页面上的数据,还会删除整个集合中的数据。

缩减选择

在 CSV 文件中添加/重命名列

借助 UI 数据编辑器,您现在可以在 CSV 文件中添加和移除列。

将查询复制到控制台

在数据编辑器中工作时,您有时可能会在 WHEREORDER BY 字段中使用复杂的子句。 如果您想继续处理生成的查询,可使用齿轮图标下的新操作 Copy Query to Console。 它会在默认控制台中打开查询。

缩减选择

根据外键导航时不再有 First row 选项

为加快导航速度,我们移除了 First row 选项。 不会显示弹出窗口,您将被导航到显示所有引用或引用的行的表。

根据外键导航时的限定条件

如果您有指向另一个架构中的对象的外键,并且这些对象具有相同的名称,则它们将在外键导航 UI 中显示为限定状态。

质量改进

DBE-12545ORDER BY 字段的大小会保存。

DBE-13055:对于带有时区的值,始终显示时区。

DBE-9814Oracle 如果没有设置时间,DATE 类型的值不显示时间。

DBE-12679Oracle 可以按 DATE 字段筛选。

DBE-12716DB2 可以按 binaryblobchar for bit datavarchar for bit data 字段筛选。

导入/导出

导入后的表链接

完成导入时,通知中会出现一个指向新表的链接。

质量改进

DBE-13259:如果存在非数字值,数字字段的导出不再失败。

DBE-11370DBE-13139DBE-12536:PostgreSQL、Redshift、Exasol、Hive、Clickhouse、DB2 和 HSQL 的导入速度变得更快。

导航

导航栏中 Enter 键的行为

导航栏的行为现在更直观 - Enter 键始终展开节点。

 

之前,按 Enter 键可为表打开数据,为数据源打开控制台。

如果要从导航栏中的对象导航而不是打开其节点,可以使用以下导航快捷键:

  • 打开 DDL:Ctrl+B
  • 打开数据:F4
  • 在数据库树中选择:Alt+Shift+B

Go To 弹出窗口中的签名

现在,当您搜索函数、过程或运算符时,DataGrip 会在 Go To 窗口中显示签名。 当您大量使用重载时,这会提供很大帮助。

常规

本地化 UI

从此版本开始,您可以体验到 DataGrip 完全本地化的中文韩语日语 UI。 本地化以非捆绑式语言包插件提供,可以轻松安装到您的 DataGrip。 超过 150 万用户已开始使用我们语言包的部分本地化 EAP 版本。 现在您可以享受完整的本地化体验!

项目的新位置

在 DataGrip 中,项目现在默认位于与所有其他基于 IntelliJ 的 IDE 中相同的位置 - 在用户主文件夹的 DataGripProjects 子文件夹内。

 

DataGrip 中的项目是数据源、控制台和临时文件以及附加文件夹的复合体。 它们以前存储在配置文件夹中,这意味着每次更新 IDE 时,都会复制项目以及 IDE 设置。

这有时会导致数据源列表变空。 此问题已解决,现在 DataGrip 的行为与其他 IDE 一致。

由于项目迁移中的错误,使用第一个 EAP 构建的用户可能会丢失他们的收藏夹、书签、运行配置或有关虚拟外键的数据。 要恢复这些数据,请从上一个版本重新迁移。 此处描述了详细信息:DBE-13410

设置

后退和前进按钮

这些按钮让用户可以更轻松地在 Settings 窗口中导航,而不会迷失。

高级设置

我们在 Preferences/Settings 中添加了 Advanced Settings 作为新节点。 它包含一些用例特定的选项,并按 IDE 工具方便地进行了分组。 大多数设置从注册表转移而来,但其中一些是新设置。

几个值得注意的设置:

  • Distraction-free 模式下的左侧边距。
  • 在使用 Comment with Line Comment 操作后,能够将文本光标设置为向下移动。
  • 自定义双击标签页的行为。

Show scratch files 操作

新的 Show Scratch Files 操作(通过 Find Action 找到:Cmd+Shift+A)会在弹出窗口中显示带代码段的临时文件列表。 它与 Recent Locations 弹出窗口具有相同的 UI,包括快速搜索和删除功能。

管理 Services 工具窗口弹出窗口

当查询未返回任何数据时,Services 工具窗口如果已经隐藏则无需出现。 现在,您可以自己定义哪些操作可使 Services 工具窗口显示。

质量改进

DBE-12079PostgreSQL 我们重新设计了内省程序。 对于您,新内省程序的主要效果是不再有对象重复!

DBE-13164:输入 JOIN 语句并使用虚拟外键时不再停止响应。

DBE-194931:现在会自动移除空的临时文件。