From 6d365676ded5fa13bb2c15f2193a6d4fe9518c43 Mon Sep 17 00:00:00 2001 From: lukaseder Date: Thu, 15 Feb 2018 17:00:08 +0100 Subject: [PATCH] [#7176] Regression in PostgreSQL MODE function implementation --- jOOQ/src/main/java/org/jooq/impl/Mode.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/jOOQ/src/main/java/org/jooq/impl/Mode.java b/jOOQ/src/main/java/org/jooq/impl/Mode.java index 38a2546f19..bb618876f5 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Mode.java +++ b/jOOQ/src/main/java/org/jooq/impl/Mode.java @@ -38,6 +38,8 @@ package org.jooq.impl; import org.jooq.AggregateFilterStep; +import org.jooq.DataType; +import org.jooq.Field; import org.jooq.OrderField; import org.jooq.OrderedAggregateFunctionOfDeferredType; @@ -46,8 +48,15 @@ import org.jooq.OrderedAggregateFunctionOfDeferredType; */ final class Mode implements OrderedAggregateFunctionOfDeferredType { + @SuppressWarnings("unchecked") @Override public final AggregateFilterStep withinGroupOrderBy(OrderField field) { - return new Function("mode", ((SortFieldImpl) field).getField().getDataType()).withinGroupOrderBy(field); + DataType type = field instanceof SortFieldImpl + ? ((SortFieldImpl) field).getField().getDataType() + : field instanceof Field + ? ((AbstractField) field).getDataType() + : (DataType) SQLDataType.NUMERIC; + + return new Function("mode", type).withinGroupOrderBy(field); } }