From 86c3269f3e12e5d2571fc41e7499c5fcd84d610e Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Mon, 6 May 2024 13:09:14 +0200 Subject: [PATCH] [jOOQ/jOOQ#16643] Add parser support for SQLite's TOTAL() aggregate function --- jOOQ/src/main/java/org/jooq/impl/ParserImpl.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java b/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java index e3a460db18..cfa5842071 100644 --- a/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java @@ -61,6 +61,7 @@ import static org.jooq.SQLDialect.MARIADB; import static org.jooq.SQLDialect.MYSQL; // ... // ... +import static org.jooq.SQLDialect.SQLITE; // ... // ... // ... @@ -9604,6 +9605,13 @@ final class DefaultParseContext extends AbstractScope implements ParseContext { return field; else if (parseFunctionNameIf("TRANSFORM")) return parseArrayLambdaFunction(DSL::arrayMap); + else if (parseDialect() == SQLITE && parseFunctionNameIf("TOTAL")) + return coalesce( + parseAggregateFunctionIf(false, + (AggregateFunction) parseGeneralSetFunctionIf(ComputationalOperation.SUM) + ), + inline(BigDecimal.ZERO) + ); break; @@ -12743,9 +12751,12 @@ final class DefaultParseContext extends AbstractScope implements ParseContext { } private final Field parseGeneralSetFunctionIf() { + return parseGeneralSetFunctionIf(parseComputationalOperationIf()); + } + + private final Field parseGeneralSetFunctionIf(ComputationalOperation operation) { boolean distinct; Field arg; - ComputationalOperation operation = parseComputationalOperationIf(); if (operation == null) return null;