jOOQ是否支持PostgreSQL的C风格转义字符串?

时间:2017-10-13 13:40:29

标签: postgresql jooq

在jOOQ中是否支持PostgreSQL的C风格转义字符串?

我查询了我的分页(限制和偏移样式)并通过解析EXPLAIN的输出来返回总计数,这是推荐使用PostgreSQL维基进行快速计算估算的方法之一( https://wiki.postgresql.org/wiki/Count_estimate)。当我最初实现这个函数时,我使用PG的C风格转义逃脱了函数(https://www.postgresql.org/docs/9.5/static/sql-syntax-lexical.html的4.1.2.2节)。以下是根据PG的有效查询,但是当尝试在jOOQ中呈现它时Tools#renderAndBind(Context<?>, String, List<QueryPart>)抛出ArrayIndexOutOfBoundsException,因为它在搜索词中选取双引号作为标识符的开头并运行数组的末尾寻找另一个。

select 
  (
    select count_estimate(E'select 1
    from "public"."foo"
    where (
        "public"."foo"."name" = \'"\'
    )')
  ) as "total", 
  (
    select array_to_json(coalesce(
      array_agg("alias_95585617"."data" order by 
        "alias_95585617"."name" asc nulls last
      ), 
      cast('{}' as jsonb[])
    ))
    from (
      select
          "public"."foo"."name",
          row(
              "public"."foo"."id",
              "public"."foo"."name"
          ) as "data"
      from "public"."foo"
      where (
        "public"."foo"."name" = '"'
      )
      order by 
        "public"."foo"."name" asc nulls last
      limit 30
      offset 120
    ) as "alias_95585617"
  ) as "data"

使用双美元报价在jOOQ中重新实现此功能可按预期工作。我打算将此作为一个错误提交,但我想我会检查这是jOOQ打算首先支持PG的一个功能。

使用(Oracle JDK 1.8.0_144,jOOQ 3.8.3,PG 9.5.5,PGJDBC 42.1.4)

1 个答案:

答案 0 :(得分:0)

不,这在jOOQ 3.10中尚未得到支持。但这当然有道理。我在路线图中添加了一个问题:https://github.com/jOOQ/jOOQ/issues/6704