我们 2022 年的第一个主要更新 DataGrip 2022.1 现已正式发布。 它包含多项实用增强和改进。 让我们看看都有些什么。
这是此版本的一大亮点。 您现在可以选择多个表并将其复制到另一个架构。
选择要复制的表,然后按 F5 打开导出对话框。
与导出单个表一样,您可以映射列以及查看和更改新表的 DDL。
如您所知,DataGrip 支持跨 DBMS 导出,这意味着目标架构可以属于您项目中的任何数据库。 将所有表从 PostgreSQL 数据库复制到 SQL Server 非常简单。
您还可以指定现有表而不是新表作为目标。 这样操作后,源表的数据将被添加到目标表。
我们添加了一个新设置 Automatically detect binary values(自动检测二进制值),它有两个选项:UUID 和 Text(文本)。 现在可以禁用 UUID 检测。
您现在可以直接从控制台中编辑 对MongoDB 集合的查询的结果。 即使 .find() 后面是 sort() 或 limit() 之类的方法,这也可以运行。
在 Transact SQL 中同时运行多条语句时,它们以批处理方式执行。 此前,这使得各个查询难以显示编辑器内结果,但现在 DataGrip 可以正确处理这种情况。
另外,DataGrip 现在会在以批处理模式运行查询时移除所有 SQLCMD 语句(请参阅 DBE-14920,了解详细信息)。
DEFAULT
值的表的更新查询现在可以正确生成。 有时,内省需要被授予特殊用户的特殊权限。 现在可以使用专用凭据进行内省。 为此,首先在 Options(选项)标签页中创建一个专用会话模板。
然后,在 Introspection(内省)部分的 Use session template(使用会话模板)字段中选择其名称,使用此模板进行内省。
您现在可以独立于数据库中的所有其他对象刷新对象。
这对于新的 Introspection levels(内省级别)功能格外适用。 如果只需要查看单个对象的源代码,点击数据库资源管理器中的 Refresh Object(刷新对象)按钮即可。
此外,打开对象的源编辑器时,DataGrip 将提供内省所选对象的选项。
我们增加了对 H2 版本 2.x 的支持。 以下是更改列表:
ARRAY
和 ROW
有关。 我们为 YugabyteDB 发布了 JDBC 驱动程序,您可以一键创建 YugabyteDB 数据源。
我们正在稍微重做 Modify Table(修改表)窗口。 新版本将具有基于内省属性的完全生成的 UI,这将允许其带有各种特定于数据库的参数。
目前我们只发布了一小部分更新,但这部分更新已经非常实用。 新的 Modify Table(修改表)窗口可以添加和编辑列检查约束,此前这样的操作是无法完成的。 此外,您现在可以编辑由 DataGrip 内省的表和列的所有属性。
我们认为您会特别喜欢列的新 UI,因为新 UI 不再有让许多用户感到困惑的收起或展开。
我们新增了一个按钮,可供在比较对象或架构时交换源和目标。
我们引入了一个方便的新意图,Convert To Subquery(转换为子查询)。 您不再需要使用包围实时模板转换子查询。 事实上,您甚至都不必费心选择查询。 只要按下 Alt+Enter | Convert To Subquery(转换为子查询)即可。
PostgreSQL 14 中引入了多范围类型,我们增加了对内置类型的支持。
未来将支持自定义多范围类型。
ROWS FROM
语法的支持。 JSONB
语法注入错误的问题。 BEGIN ATOMIC
的支持。 ALTER MATERIALIZED VIEW
的支持。 USING INDEX ENABLE
语法的支持。 CREATE MATERIALIZED VIEW LOG
语句中的列解析。 CREATE STAGE
语句中添加了对 WITH TAG
选项的支持。 EXECUTE
语句的支持。 JSON
现在会在语句中正确高亮显示。 QUALIFY
。 UNNEST
列。 UNION DISTINCT
。 此前,多次点击 Cancel statement(取消语句)按钮后,虽然查询看似已经终止,但请求实际上还在数据库中继续执行。
这种行为背后的逻辑颇为棘手。 第一次点击时,DataGrip 向数据库发送取消请求,第二次点击时,它会取消 JDBC 驱动程序进程,终止与数据源的所有连接(我们将此称为数据源停用)。 结果,因为连接丢失,而不是因为取消实际完成,DataGrip 收到的是第二个取消请求的错误。
我们已经让取消逻辑更加简单。 希望现在更清楚的是,被取消的是请求:
我们不会在没有警告的情况下停用数据源,因为这对于同时发生的某些进程可能具有潜在危险。 因此,如果您再次点击 Cancel(取消)图标,DataGrip 会询问您是要终止远程进程还是要继续等待。 如果选择停用数据源,则 DataGrip 的查询将停止,但会继续在数据库中执行。
空闲取消 10 秒后,可以选择停用数据源。
取消查询后,左侧会出现显示禁止符号的装订区域图标。
此前,在创建连接期间尝试中止请求时,数据源会被停用。
现在,您不仅可以中断请求的执行,还可以中断连接的创建。 这与控制台中的第一个查询特别相关,它也创建了一个连接。
您现在可以在不停用数据源的情况下停止连接创建:如果在创建连接时点击了 Cancel(取消)按钮,创建将被停止并显示 Connection canceled(连接已取消)消息。
这不仅仅与来自查询控制台的查询有关。 例如,如果您在开始内省前创建连接,则中断内省将取消连接的创建,而不会停用数据源。
Database(数据库)部分中 Preferences(偏好设置)设置的结构从 DataGrip 的第一个版本起没有改变过。 我们认为是时候更新结构来提高这一部分的实用性了。 这是我们的想法:
Track databases/schemas creation and deletion(跟踪数据库/架构创建和删除)设置已从 General(常规)部分移至 Data Source Properties | Options(数据源属性 | 选项),并且现在指向特定数据源。 此设置会确定在查询控制台中创建或删除架构后是否需要更新架构列表。
其他设置仍然是全局的,但现在位于更合适的部分中。
请注意,这些设置将在此更新后重置为其默认值:
您现在可以在编辑器标签页之间分配工作空间,使其具有相同的宽度。 为此,请转到 Settings / Preferences | Advanced Settings | Editor Tabs | Equalize proportions in nested splits(设置 / 偏好设置 | 高级设置 | 编辑器标签页 | 在嵌套拆分中平衡比例)。
图表现在可以导出为 yEd .graphml、JGraph .drawio、Graphviz .dot、带有位置的 Graphviz .dot、Mermaid .md、Plantuml 和 IDEA .uml 文件,从而与第三方工具兼容。