From 9816dd8c4381cc0c328c8790b65cf9c64f1cb7cd Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Wed, 23 Sep 2020 13:59:09 +0200 Subject: [PATCH] [jOOQ/jOOQ#10669] Parser should parse DATE - DATE to dateDiff() and TIMESTAMP - TIMESTAMP to timestampDiff() --- jOOQ/src/main/java/org/jooq/impl/ParserImpl.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java b/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java index 26ea3042ae..60af8f2f4e 100644 --- a/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java @@ -6401,7 +6401,7 @@ final class ParserImpl implements Parser { } private static final Field parseSumRightOperand(ParserContext ctx, Type type, FieldOrRow r, boolean add) { - Field f = (Field) parseFactor(ctx, type); + Field rhs = (Field) parseFactor(ctx, type); DatePart part; if ((parseKeywordIf(ctx, "YEAR") || parseKeywordIf(ctx, "YEARS")) && ctx.requireProEdition()) @@ -6419,6 +6419,8 @@ final class ParserImpl implements Parser { else part = null; + Field lhs = (Field) r; + @@ -6428,9 +6430,13 @@ final class ParserImpl implements Parser { if (add) - return ((Field) r).add(f); + return lhs.add(rhs); + else if (lhs.getDataType().isDate() && rhs.getDataType().isDate()) + return DSL.dateDiff(lhs, rhs); + else if (lhs.getDataType().isTimestamp() && rhs.getDataType().isTimestamp()) + return DSL.timestampDiff(lhs, rhs); else - return ((Field) r).sub(f); + return lhs.sub(rhs); } private static final FieldOrRow parseFactor(ParserContext ctx, Type type) {