diff --git a/jOOQ/src/main/java/org/jooq/impl/CountTable.java b/jOOQ/src/main/java/org/jooq/impl/CountTable.java index 2597f254fb..f8e0298212 100644 --- a/jOOQ/src/main/java/org/jooq/impl/CountTable.java +++ b/jOOQ/src/main/java/org/jooq/impl/CountTable.java @@ -55,7 +55,7 @@ final class CountTable extends Function { private final boolean distinct; CountTable(Table table, boolean distinct) { - super("count", distinct, SQLDataType.INTEGER, DSL.name(table.getName())); + super("count", distinct, SQLDataType.INTEGER, DSL.field(DSL.name(table.getName()))); this.table = table; this.distinct = distinct; diff --git a/jOOQ/src/main/java/org/jooq/impl/DSL.java b/jOOQ/src/main/java/org/jooq/impl/DSL.java index ddfc6179a0..fd04e93848 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DSL.java +++ b/jOOQ/src/main/java/org/jooq/impl/DSL.java @@ -95,7 +95,6 @@ import static org.jooq.impl.Term.PERCENT_RANK; import static org.jooq.impl.Term.RANK; import static org.jooq.impl.Term.ROW_NUMBER; import static org.jooq.impl.Tools.EMPTY_FIELD; -import static org.jooq.impl.Tools.EMPTY_QUERYPART; import static org.jooq.impl.Tools.combine; import static org.jooq.impl.Tools.configuration; import static org.jooq.tools.StringUtils.isEmpty; @@ -16585,12 +16584,12 @@ public class DSL { */ @Support({ POSTGRES }) public static GroupField groupingSets(Collection>... fieldSets) { - WrappedList[] array = new WrappedList[fieldSets.length]; + QueryPartList arg = new QueryPartList<>(); - for (int i = 0; i < fieldSets.length; i++) - array[i] = new WrappedList(new QueryPartList<>(fieldSets[i])); + for (Collection> fieldsSet : fieldSets) + arg.add(new WrappedList(new QueryPartList<>(fieldsSet))); - return new org.jooq.impl.Function<>("grouping sets", SQLDataType.OTHER, array); + return field("grouping sets({0})", SQLDataType.OTHER, arg); } @@ -18776,7 +18775,7 @@ public class DSL { */ @Support({ H2, POSTGRES }) public static OrderedAggregateFunction rank(Collection> fields) { - return new org.jooq.impl.Function<>("rank", SQLDataType.INTEGER, fields.toArray(EMPTY_QUERYPART)); + return new org.jooq.impl.Function<>("rank", SQLDataType.INTEGER, fields.toArray(EMPTY_FIELD)); } /** @@ -18794,7 +18793,7 @@ public class DSL { */ @Support({ H2, POSTGRES }) public static OrderedAggregateFunction denseRank(Collection> fields) { - return new org.jooq.impl.Function<>("dense_rank", SQLDataType.INTEGER, fields.toArray(EMPTY_QUERYPART)); + return new org.jooq.impl.Function<>("dense_rank", SQLDataType.INTEGER, fields.toArray(EMPTY_FIELD)); } /** @@ -18812,7 +18811,7 @@ public class DSL { */ @Support({ H2, POSTGRES }) public static OrderedAggregateFunction percentRank(Collection> fields) { - return new org.jooq.impl.Function<>("percent_rank", SQLDataType.INTEGER, fields.toArray(EMPTY_QUERYPART)); + return new org.jooq.impl.Function<>("percent_rank", SQLDataType.INTEGER, fields.toArray(EMPTY_FIELD)); } /** @@ -18830,7 +18829,7 @@ public class DSL { */ @Support({ H2, POSTGRES }) public static OrderedAggregateFunction cumeDist(Collection> fields) { - return new org.jooq.impl.Function<>("cume_dist", SQLDataType.NUMERIC, fields.toArray(EMPTY_QUERYPART)); + return new org.jooq.impl.Function<>("cume_dist", SQLDataType.NUMERIC, fields.toArray(EMPTY_FIELD)); } /** diff --git a/jOOQ/src/main/java/org/jooq/impl/Function.java b/jOOQ/src/main/java/org/jooq/impl/Function.java index 1aac4472da..23e28775d2 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Function.java +++ b/jOOQ/src/main/java/org/jooq/impl/Function.java @@ -165,7 +165,7 @@ class Function extends AbstractField implements private final Term term; // Other attributes - private final QueryPartList arguments; + private final QueryPartList> arguments; private final boolean distinct; private SortFieldList withinGroupOrderBy; private SortFieldList keepDenseRankOrderBy; @@ -182,19 +182,19 @@ class Function extends AbstractField implements // XXX Constructors // ------------------------------------------------------------------------- - Function(String name, DataType type, QueryPart... arguments) { + Function(String name, DataType type, Field... arguments) { this(name, false, type, arguments); } - Function(Term term, DataType type, QueryPart... arguments) { + Function(Term term, DataType type, Field... arguments) { this(term, false, type, arguments); } - Function(Name name, DataType type, QueryPart... arguments) { + Function(Name name, DataType type, Field... arguments) { this(name, false, type, arguments); } - Function(String name, boolean distinct, DataType type, QueryPart... arguments) { + Function(String name, boolean distinct, DataType type, Field... arguments) { super(DSL.name(name), type); this.term = null; @@ -203,7 +203,7 @@ class Function extends AbstractField implements this.arguments = new QueryPartList<>(arguments); } - Function(Term term, boolean distinct, DataType type, QueryPart... arguments) { + Function(Term term, boolean distinct, DataType type, Field... arguments) { super(term.toName(), type); this.term = term; @@ -212,7 +212,7 @@ class Function extends AbstractField implements this.arguments = new QueryPartList<>(arguments); } - Function(Name name, boolean distinct, DataType type, QueryPart... arguments) { + Function(Name name, boolean distinct, DataType type, Field... arguments) { super(name, type); this.term = null; @@ -257,7 +257,7 @@ class Function extends AbstractField implements } else if (term == PRODUCT) { @SuppressWarnings({ "unchecked", "rawtypes" }) - final Field f = (Field) DSL.field("{0}", arguments.get(0)); + final Field f = (Field) DSL.field("{0}", arguments.get(0).getDataType(), arguments.get(0)); final Field negatives = DSL.when(f.lt(zero()), inline(-1)); @SuppressWarnings("serial") @@ -566,7 +566,7 @@ class Function extends AbstractField implements toSQLArguments1(ctx, arguments); } - final void toSQLArguments1(Context ctx, QueryPartList args) { + final void toSQLArguments1(Context ctx, QueryPartList> args) { if (distinct) { ctx.visit(K_DISTINCT).sql(' '); @@ -582,7 +582,7 @@ class Function extends AbstractField implements else { QueryPartList> expressions = new QueryPartList<>(); - for (QueryPart argument : args) + for (Field argument : args) expressions.add(DSL.when(filter, argument == ASTERISK ? one() : argument)); ctx.visit(expressions); @@ -639,7 +639,7 @@ class Function extends AbstractField implements // XXX aggregate and window function fluent API methods // ------------------------------------------------------------------------- - final QueryPartList getArguments() { + final QueryPartList> getArguments() { return arguments; }