[jooq] Add DELETE LIMIT emulation via subquery
@Naifff ya está trabajando en esto.
Desde el 9/10/2026.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 55/100
Línea de trabajo
Comienza con YdbDSLContextImpl.deleteQuery() y el patrón existente de UpsertReplaceQueryImpl en org.jooq.impl, y luego ejecuta el reproducer proporcionado delete(...).limit(n). Usa table.getPrimaryKey().getFields() para cubrir claves simples y compuestas, y verifica que el YQL generado utilice una subconsulta de clave; la ausencia de claves primarias debería producir un error descriptivo.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Problem
When using jOOQ's delete(...).limit(n) with the YDB dialect, the generated SQL is:
DELETE FROM `test` LIMIT $jp1
YQL does not support the LIMIT clause on DELETE statements, so this fails with:
Status{code = GENERIC_ERROR(code=400080), issues = [19:3 - 19:3: extraneous input 'limit' expecting {<EOF>, ';'} (S_ERROR)]}
Reproducer
dsl.delete(TEST).limit(10).execute();
// → DELETE FROM `test` LIMIT $jp1 (GENERIC_ERROR)
Expected behavior
The dialect should emulate DELETE LIMIT n by rewriting it as a subquery using the table's primary key:
DELETE FROM `test` WHERE `key` IN (SELECT `key` FROM `test` LIMIT $jp1)
For composite PKs:
DELETE FROM `episodes`
WHERE (`series_id`, `season_id`, `episode_id`) IN (
SELECT `series_id`, `season_id`, `episode_id`
FROM `episodes`
LIMIT $jp1
)
Implementation notes
jOOQ already has a similar emulation tracked in jOOQ/jOOQ#7839 for other databases that lack native DELETE LIMIT support.
For this dialect the natural place is a custom DeleteQuery implementation in org.jooq.impl (mirroring the existing UpsertReplaceQueryImpl pattern), wired in via YdbDSLContextImpl.deleteQuery(). The PK fields are available through table.getPrimaryKey().getFields() when the table is code-generated. When PK is unavailable the implementation should throw a descriptive error.
Environment
jooq-ydb-dialectversion: 1.2.1- jOOQ: 3.19.x
- YQL does not support
DELETE ... LIMIT(confirmed)
- Lenguaje dominante
- Java
- Estrellas
- 78
- Forks
- 24
- Merge medio
- 5 h 45 min
- PR fusionados (30 d)
- 3
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de ydb-platform/ydb-java-dialects
-
[BUG]: #hibernate-v6 UnsupportedOperationException: YDB does not support FOR UPDATE statementQuizá libre de nuevo @KirillKurdyukov la tomó hace 404 días y no hay ningún pull request abierto. Abiertobug
ydb-platform/ydb-java-dialects#194 · 1 comentario · 1 reacción · 1 asignado ·
-
feat: Support adding @YdbType annotation to method parametersPosiblemente ocupada @KirillKurdyukov la tomó hace 615 días. Abiertopending-design
ydb-platform/ydb-java-dialects#173 · 10 comentarios · 1 reacción · 1 asignado ·
-
feat: Spring YDB Topics moduleAbiertostudent-projects
Dificultad 5/5 Más de una semana Aptitud para principiantes 15/100
ydb-platform/ydb-java-dialects#170 · 2 comentarios ·
-
feat: Jimmer ORMPosiblemente ocupada @Rinoyt la tomó hace 169 días. Abiertostudent-projects
Dificultad 5/5 Más de una semana Aptitud para principiantes 20/100
-
feat: SLO HibernateQuizá libre de nuevo @KirillKurdyukov la tomó hace 783 días y no hay ningún pull request abierto. Abierto
ydb-platform/ydb-java-dialects#147 · 1 asignado ·
Todos los issues de ydb-platform/ydb-java-dialects
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
apache/rocketmq-dashboard#7302 ·
Los mantenedores suelen responder en 3 días
-
area: android good first issue help wanted testing
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
Gautam-aman/ResQNet#56 ·
Los mantenedores suelen responder en 1 día
-
documentation hermes-queue
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
chrisalunlloyd2-sudo/mindpalace#294 ·
Los mantenedores suelen responder en 1 día
-
better night vision compatAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
QuicksilverMC/Argentum#31 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 66/100
avniproject/avni-server#1098 · 2 comentarios ·