From 6ad62ad5b793c07b8dbab25657ccb50e44a2d467 Mon Sep 17 00:00:00 2001 From: lukaseder Date: Mon, 29 Apr 2019 10:24:24 +0200 Subject: [PATCH] [#7518] [#8572] Add parser support for RATIO_TO_REPORT --- jOOQ/src/main/java/org/jooq/impl/ParserImpl.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java b/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java index 25e99e87fe..bd45a10504 100644 --- a/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java @@ -200,6 +200,7 @@ import static org.jooq.impl.DSL.rangePreceding; import static org.jooq.impl.DSL.rangeUnboundedFollowing; import static org.jooq.impl.DSL.rangeUnboundedPreceding; import static org.jooq.impl.DSL.rank; +import static org.jooq.impl.DSL.ratioToReport; import static org.jooq.impl.DSL.regrAvgX; import static org.jooq.impl.DSL.regrAvgY; import static org.jooq.impl.DSL.regrCount; @@ -5589,6 +5590,8 @@ final class ParserImpl implements Parser { || parseFunctionNameIf(ctx, "RADIAN") || parseFunctionNameIf(ctx, "RAD")) return rad((Field) parseFieldNumericOpParenthesised(ctx)); + else if ((field = parseFieldRatioToReportIf(ctx)) != null) + return field; if (parseFunctionNameIf(ctx, "ROW")) return parseTuple(ctx); @@ -7804,6 +7807,17 @@ final class ParserImpl implements Parser { return null; } + private static final Field parseFieldRatioToReportIf(ParserContext ctx) { + if (parseFunctionNameIf(ctx, "RATIO_TO_REPORT")) { + parse(ctx, '('); + Field field = (Field) parseField(ctx); + parse(ctx, ')'); + return parseWindowFunction(ctx, null, null, ratioToReport(field)); + } + + return null; + } + private static final Field parseFieldRowNumberIf(ParserContext ctx) { if (parseFunctionNameIf(ctx, "ROW_NUMBER")) { parse(ctx, '(');