[jOOQ/jOOQ#8592] Emulate PERCENT_RANK() for DB2 9 and 10
This commit is contained in:
parent
a402ec5023
commit
556ff3e36b
@ -45,6 +45,7 @@ import static java.lang.Boolean.TRUE;
|
||||
// ...
|
||||
import static org.jooq.SQLDialect.CUBRID;
|
||||
// ...
|
||||
// ...
|
||||
import static org.jooq.SQLDialect.H2;
|
||||
import static org.jooq.SQLDialect.HSQLDB;
|
||||
import static org.jooq.SQLDialect.MARIADB;
|
||||
@ -56,6 +57,7 @@ import static org.jooq.SQLDialect.SQLITE;
|
||||
// ...
|
||||
// ...
|
||||
// ...
|
||||
import static org.jooq.impl.DSL.case_;
|
||||
import static org.jooq.impl.DSL.choose;
|
||||
import static org.jooq.impl.DSL.condition;
|
||||
import static org.jooq.impl.DSL.inline;
|
||||
@ -63,6 +65,7 @@ import static org.jooq.impl.DSL.mode;
|
||||
import static org.jooq.impl.DSL.name;
|
||||
import static org.jooq.impl.DSL.one;
|
||||
import static org.jooq.impl.DSL.percentileCont;
|
||||
import static org.jooq.impl.DSL.rank;
|
||||
import static org.jooq.impl.DSL.when;
|
||||
import static org.jooq.impl.DSL.zero;
|
||||
import static org.jooq.impl.Keywords.F_CONCAT;
|
||||
@ -92,6 +95,7 @@ import static org.jooq.impl.Term.ARRAY_AGG;
|
||||
import static org.jooq.impl.Term.LIST_AGG;
|
||||
import static org.jooq.impl.Term.MEDIAN;
|
||||
import static org.jooq.impl.Term.MODE;
|
||||
import static org.jooq.impl.Term.PERCENT_RANK;
|
||||
import static org.jooq.impl.Term.PRODUCT;
|
||||
import static org.jooq.impl.Term.ROW_NUMBER;
|
||||
import static org.jooq.impl.Tools.castIfNeeded;
|
||||
@ -160,6 +164,10 @@ class Function<T> extends AbstractField<T> implements
|
||||
private static final Set<SQLDialect> SUPPORT_FILTER = SQLDialect.supportedBy(H2, HSQLDB, POSTGRES, SQLITE);
|
||||
private static final Set<SQLDialect> SUPPORT_DISTINCT_RVE = SQLDialect.supportedBy(H2, POSTGRES);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
static final Field<Integer> ASTERISK = DSL.field("*", Integer.class);
|
||||
|
||||
// Mutually exclusive attributes: super.getName(), this.name, this.term
|
||||
@ -247,6 +255,15 @@ class Function<T> extends AbstractField<T> implements
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
else if (term == MODE && ( ctx.family() == H2 || ctx.family() == POSTGRES)) {
|
||||
ctx.visit(mode().withinGroupOrderBy(DSL.field("{0}", arguments.get(0))));
|
||||
}
|
||||
|
||||
@ -132,6 +132,18 @@ final class WindowSpecificationImpl extends AbstractQueryPart implements
|
||||
this.orderBy = new SortFieldList();
|
||||
}
|
||||
|
||||
WindowSpecificationImpl copy() {
|
||||
WindowSpecificationImpl copy = new WindowSpecificationImpl(this.windowDefinition);
|
||||
copy.partitionBy.addAll(this.partitionBy);
|
||||
copy.orderBy.addAll(this.orderBy);
|
||||
copy.frameStart = this.frameStart;
|
||||
copy.frameEnd = this.frameEnd;
|
||||
copy.frameUnits = this.frameUnits;
|
||||
copy.exclude = this.exclude;
|
||||
copy.partitionByOne = this.partitionByOne;
|
||||
return copy;
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void accept(Context<?> ctx) {
|
||||
String glue = "";
|
||||
|
||||
Loading…
Reference in New Issue
Block a user