【问题标题】:Jooq not generating index info for postgres expression indexJooq 没有为 postgres 表达式索引生成索引信息
【发布时间】:2022-10-25 15:10:20
【问题描述】:

我注意到 jooq 不会为这样的表达式索引生成 Index 条目(既不在 Indexes.java 也不在 TableName::getIndexes 中):

CREATE UNIQUE INDEX idx_table_client_id_type ON table(client_id, (payload->>'type'));

显然,索引存在于数据库中。它将用于 jooq 生成的查询,当通过client_id 过滤时,与索引中的表达式相同:

private static final Field<String> TYPE = field("{0}->>'type'", String.class, TABLE_NAME.PAYLOAD);

但是我想问一下,这种不匹配的含义是什么?是否存在缺少此信息会导致 jooq 生成性能不佳的查询的情况?

【问题讨论】:

    标签: java postgresql indexing jooq


    【解决方案1】:

    代码生成器使用解析器来检测索引定义中的列表达式,这些表达式可以被引用、强制转换或以其他方式转换为表达式。但这意味着解析器必须能够识别索引定义中使用的语法。

    在您的情况下,索引可能由于解析器错误而被跳过,您应该在代码生成日志中看到,请参阅 #11047#11977a-&gt;&gt;'b' 语法将仅受 jOOQ 3.18 解析器支持,请参阅 #10018

    生成的代码中缺少此元数据没有任何影响,除非您将此元数据用于任何目的,包括例如在新机器上创建模式等。

    【讨论】:

      猜你喜欢
      • 2020-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多