扩展 jooq 的行值查询

expanding jooq's row value query

使用 jooq 为 MySQL 生成查询并检查它生成的行值子句是否可以扩展,因为 mysql 无法在行值查询中正确使用索引

例如

DSLContext context = new DefaultDSLContext(SQLDialect.MYSQL);
SelectQuery<Record> select = context.selectQuery();
select.addSelect(field("Col1"));
select.addFrom(table("Table1").as("T1"));
select.addOrderBy(field("Name"), field("Sid"));
select.addSeekAfter(param("p2", "John"), param("p3","123"));
String generated = select.getSQL(ParamType.NAMED);

生成以下查询

where (1 = 1 and (Name, Id) > (:p2, :p3)) order by Name asc, Id asc

但想成为

where Name > :p2 or (Name = :p2 and Id > :p3) order by Name asc, Id asc

目前(jOOQ 3.9,参见 #6230)无法覆盖此行为。您必须添加一个您希望的形式的显式谓词。