From 9e40e28c139e10d06c1b63889806ef2ccd58bf0d Mon Sep 17 00:00:00 2001 From: lukaseder Date: Wed, 6 Feb 2019 10:43:59 +0100 Subject: [PATCH] [#8300] Support MODE() and MEDIAN() in H2 --- .../org/jooq/OrderedAggregateFunctionOfDeferredType.java | 3 ++- jOOQ/src/main/java/org/jooq/impl/DSL.java | 6 +++--- jOOQ/src/main/java/org/jooq/impl/Function.java | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/OrderedAggregateFunctionOfDeferredType.java b/jOOQ/src/main/java/org/jooq/OrderedAggregateFunctionOfDeferredType.java index 4703078580..b875f61f36 100644 --- a/jOOQ/src/main/java/org/jooq/OrderedAggregateFunctionOfDeferredType.java +++ b/jOOQ/src/main/java/org/jooq/OrderedAggregateFunctionOfDeferredType.java @@ -38,6 +38,7 @@ package org.jooq; // ... +import static org.jooq.SQLDialect.H2; import static org.jooq.SQLDialect.POSTGRES_9_4; /** @@ -69,6 +70,6 @@ public interface OrderedAggregateFunctionOfDeferredType { * Add an WITHIN GROUP (ORDER BY ..) clause to the ordered * aggregate function */ - @Support({ POSTGRES_9_4 }) + @Support({ H2, POSTGRES_9_4 }) AggregateFilterStep withinGroupOrderBy(OrderField field); } diff --git a/jOOQ/src/main/java/org/jooq/impl/DSL.java b/jOOQ/src/main/java/org/jooq/impl/DSL.java index afaa7e399d..b1312184da 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DSL.java +++ b/jOOQ/src/main/java/org/jooq/impl/DSL.java @@ -17837,7 +17837,7 @@ public class DSL { /** * The mode(field) aggregate function. */ - @Support({ POSTGRES_9_4 }) + @Support({ H2, POSTGRES_9_4 }) public static AggregateFunction mode(Field field) { return new org.jooq.impl.Function(Term.MODE, nullSafeDataType(field), field); } @@ -17845,7 +17845,7 @@ public class DSL { /** * Get the median over a numeric field: median(field). */ - @Support({ CUBRID, HSQLDB, MARIADB, POSTGRES_9_4 }) + @Support({ CUBRID, H2, HSQLDB, MARIADB, POSTGRES_9_4 }) public static AggregateFunction median(Field field) { return new org.jooq.impl.Function(Term.MEDIAN, SQLDataType.NUMERIC, nullSafe(field)); } @@ -18155,7 +18155,7 @@ public class DSL { * The mode() within group (oder by [order clause]) ordered * aggregate function. */ - @Support({ POSTGRES_9_4 }) + @Support({ H2, POSTGRES_9_4 }) public static OrderedAggregateFunctionOfDeferredType mode() { return new Mode(); } diff --git a/jOOQ/src/main/java/org/jooq/impl/Function.java b/jOOQ/src/main/java/org/jooq/impl/Function.java index eb749a3e0d..535f38a9b4 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Function.java +++ b/jOOQ/src/main/java/org/jooq/impl/Function.java @@ -239,7 +239,7 @@ class Function extends AbstractField implements - else if (term == MODE && ( ctx.family() == POSTGRES)) { + else if (term == MODE && ( ctx.family() == H2 || ctx.family() == POSTGRES)) { ctx.visit(mode().withinGroupOrderBy(DSL.field("{0}", arguments.get(0)))); } else if (term == MEDIAN && ( ctx.family() == POSTGRES)) {