From 5a37f1b3eea29e705156bd8995d84d153a99787e Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Mon, 25 Jan 2021 09:31:48 +0100 Subject: [PATCH] [jOOQ/jOOQ#11299] SQLite's DSL.extract() emulation should render an explicit CAST(STRFTIME(...) AS INT) --- jOOQ/src/main/java/org/jooq/impl/Extract.java | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/impl/Extract.java b/jOOQ/src/main/java/org/jooq/impl/Extract.java index 10e2db7c12..ade6d1bced 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Extract.java +++ b/jOOQ/src/main/java/org/jooq/impl/Extract.java @@ -101,36 +101,36 @@ final class Extract extends AbstractField { case SQLITE: switch (datePart) { case YEAR: - ctx.visit(N_STRFTIME).sql("('%Y', ").visit(field).sql(')'); + ctx.visit(function(N_STRFTIME, VARCHAR, inline("%Y"), field).cast(INTEGER)); return; case MONTH: - ctx.visit(N_STRFTIME).sql("('%m', ").visit(field).sql(')'); + ctx.visit(function(N_STRFTIME, VARCHAR, inline("%m"), field).cast(INTEGER)); return; case DAY: - ctx.visit(N_STRFTIME).sql("('%d', ").visit(field).sql(')'); + ctx.visit(function(N_STRFTIME, VARCHAR, inline("%d"), field).cast(INTEGER)); return; case HOUR: - ctx.visit(N_STRFTIME).sql("('%H', ").visit(field).sql(')'); + ctx.visit(function(N_STRFTIME, VARCHAR, inline("%H"), field).cast(INTEGER)); return; case MINUTE: - ctx.visit(N_STRFTIME).sql("('%M', ").visit(field).sql(')'); + ctx.visit(function(N_STRFTIME, VARCHAR, inline("%M"), field).cast(INTEGER)); return; case SECOND: - ctx.visit(N_STRFTIME).sql("('%S', ").visit(field).sql(')'); + ctx.visit(function(N_STRFTIME, VARCHAR, inline("%S"), field).cast(INTEGER)); return; // See: https://www.sqlite.org/lang_datefunc.html case EPOCH: - ctx.visit(N_STRFTIME).sql("('%s', ").visit(field).sql(')'); + ctx.visit(function(N_STRFTIME, VARCHAR, inline("%s"), field).cast(INTEGER)); return; case ISO_DAY_OF_WEEK: - ctx.visit(dowSun0ToISO(function("strftime", INTEGER, inline("%w"), field))); + ctx.visit(dowSun0ToISO(function("strftime", INTEGER, inline("%w"), field).cast(INTEGER))); return; case DAY_OF_WEEK: - ctx.visit(N_STRFTIME).sql("('%w', ").visit(field).sql(") + ").visit(one()); + ctx.visit(function(N_STRFTIME, VARCHAR, inline("%w"), field).cast(INTEGER).plus(one())); return; case DAY_OF_YEAR: - ctx.visit(N_STRFTIME).sql("('%j', ").visit(field).sql(')'); + ctx.visit(function(N_STRFTIME, VARCHAR, inline("%j"), field).cast(INTEGER)); return; } break;