diff --git a/jOOQ/src/main/java/org/jooq/Allow.java b/jOOQ/src/main/java/org/jooq/Allow.java index 83251ebee2..a755b8754d 100644 --- a/jOOQ/src/main/java/org/jooq/Allow.java +++ b/jOOQ/src/main/java/org/jooq/Allow.java @@ -63,6 +63,7 @@ import static org.jooq.SQLDialect.MYSQL; // ... import static org.jooq.SQLDialect.POSTGRES; // ... +// ... import static org.jooq.SQLDialect.SQL99; // ... import static org.jooq.SQLDialect.SQLITE; @@ -171,6 +172,7 @@ public @interface Allow { + CUBRID, DEFAULT, diff --git a/jOOQ/src/main/java/org/jooq/impl/AlterDatabaseImpl.java b/jOOQ/src/main/java/org/jooq/impl/AlterDatabaseImpl.java index ad2377867d..96cb9ff29e 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AlterDatabaseImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/AlterDatabaseImpl.java @@ -105,7 +105,6 @@ implements // XXX: DSL API // ------------------------------------------------------------------------- - @Override public final AlterDatabaseImpl renameTo(String renameTo) { return renameTo(DSL.catalog(DSL.name(renameTo))); diff --git a/jOOQ/src/main/java/org/jooq/impl/AlterDomainImpl.java b/jOOQ/src/main/java/org/jooq/impl/AlterDomainImpl.java index 3e6e6f99c9..eecb5b0d36 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AlterDomainImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/AlterDomainImpl.java @@ -162,7 +162,6 @@ implements // XXX: DSL API // ------------------------------------------------------------------------- - @Override public final AlterDomainImpl add(Constraint addConstraint) { this.addConstraint = addConstraint; diff --git a/jOOQ/src/main/java/org/jooq/impl/AlterSchemaImpl.java b/jOOQ/src/main/java/org/jooq/impl/AlterSchemaImpl.java index 8f058bb6df..43f490885d 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AlterSchemaImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/AlterSchemaImpl.java @@ -105,7 +105,6 @@ implements // XXX: DSL API // ------------------------------------------------------------------------- - @Override public final AlterSchemaImpl renameTo(String renameTo) { return renameTo(DSL.schema(DSL.name(renameTo))); diff --git a/jOOQ/src/main/java/org/jooq/impl/AlterViewImpl.java b/jOOQ/src/main/java/org/jooq/impl/AlterViewImpl.java index 9faaa30fad..d27ee856b6 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AlterViewImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/AlterViewImpl.java @@ -109,8 +109,7 @@ implements // ------------------------------------------------------------------------- // XXX: DSL API // ------------------------------------------------------------------------- - - + @Override public final AlterViewImpl comment(String comment) { return comment(DSL.comment(comment)); diff --git a/jOOQ/src/main/java/org/jooq/impl/CommentOnImpl.java b/jOOQ/src/main/java/org/jooq/impl/CommentOnImpl.java index 9fb9cb1eaa..a625a5af58 100644 --- a/jOOQ/src/main/java/org/jooq/impl/CommentOnImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/CommentOnImpl.java @@ -111,7 +111,6 @@ implements // XXX: DSL API // ------------------------------------------------------------------------- - @Override public final CommentOnImpl is(String comment) { return is(DSL.comment(comment)); diff --git a/jOOQ/src/main/java/org/jooq/impl/CreateDomainImpl.java b/jOOQ/src/main/java/org/jooq/impl/CreateDomainImpl.java index a4b732a0cc..2ee40c3afb 100644 --- a/jOOQ/src/main/java/org/jooq/impl/CreateDomainImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/CreateDomainImpl.java @@ -117,7 +117,6 @@ implements // XXX: DSL API // ------------------------------------------------------------------------- - @Override public final CreateDomainImpl as(Class dataType) { return as(DefaultDataType.getDataType(null, dataType)); diff --git a/jOOQ/src/main/java/org/jooq/impl/CreateSequenceImpl.java b/jOOQ/src/main/java/org/jooq/impl/CreateSequenceImpl.java index 2f5aea4142..6e652236e7 100644 --- a/jOOQ/src/main/java/org/jooq/impl/CreateSequenceImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/CreateSequenceImpl.java @@ -150,7 +150,6 @@ implements // XXX: DSL API // ------------------------------------------------------------------------- - @Override public final CreateSequenceImpl startWith(Number startWith) { return startWith(Tools.field(startWith, sequence.getDataType())); diff --git a/jOOQ/src/main/java/org/jooq/impl/DSL.java b/jOOQ/src/main/java/org/jooq/impl/DSL.java index 9a8540f7ec..a8bd134634 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DSL.java +++ b/jOOQ/src/main/java/org/jooq/impl/DSL.java @@ -15286,6 +15286,60 @@ public class DSL { return charLength(string); } + /** + * The LN function. + */ + @NotNull + @Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES }) + public static Field ln(Number value) { + return new Log(Tools.field(value)); + } + + /** + * The LN function. + */ + @NotNull + @Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES }) + public static Field ln(Field value) { + return new Log(value); + } + + /** + * The LOG function. + */ + @NotNull + @Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES }) + public static Field log(Number value, int base) { + return new Log(Tools.field(value), Tools.field(base)); + } + + /** + * The LOG function. + */ + @NotNull + @Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES }) + public static Field log(Number value, Field base) { + return new Log(Tools.field(value), base); + } + + /** + * The LOG function. + */ + @NotNull + @Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES }) + public static Field log(Field value, int base) { + return new Log(value, Tools.field(base)); + } + + /** + * The LOG function. + */ + @NotNull + @Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES }) + public static Field log(Field value, Field base) { + return new Log(value, base); + } + /** * The LOWER function. *

@@ -15859,6 +15913,42 @@ public class DSL { return new Position(in, search); } + /** + * The POWER function. + */ + @NotNull + @Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES }) + public static Field power(Number value, Number exponent) { + return new Power(Tools.field(value), Tools.field(exponent)); + } + + /** + * The POWER function. + */ + @NotNull + @Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES }) + public static Field power(Number value, Field exponent) { + return new Power(Tools.field(value), exponent); + } + + /** + * The POWER function. + */ + @NotNull + @Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES }) + public static Field power(Field value, Number exponent) { + return new Power(value, Tools.field(exponent)); + } + + /** + * The POWER function. + */ + @NotNull + @Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES }) + public static Field power(Field value, Field exponent) { + return new Power(value, exponent); + } + /** * The RAD function. *

@@ -16469,6 +16559,24 @@ public class DSL { return new Space(count); } + /** + * The SQRT function. + */ + @NotNull + @Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES }) + public static Field sqrt(Number value) { + return new Sqrt(Tools.field(value)); + } + + /** + * The SQRT function. + */ + @NotNull + @Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES }) + public static Field sqrt(Field value) { + return new Sqrt(value); + } + /** * The SPLIT_PART function. *

@@ -20701,141 +20809,6 @@ public class DSL { return trunc(Tools.field(number), inline(0)); } - /** - * Get the sqrt(field) function. - * - * @see #sqrt(Field) - */ - @NotNull - @Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES }) - public static Field sqrt(Number value) { - return sqrt(Tools.field(value)); - } - - /** - * Get the sqrt(field) function. - *

- * This renders the sqrt function where available: - *

sqrt([field])
... or emulates it elsewhere using - * power (which in turn may also be emulated using ln and exp functions): - *
power([field], 0.5)
- */ - @NotNull - @Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES }) - public static Field sqrt(Field field) { - return new Sqrt(Tools.nullSafe(field)); - } - - /** - * Get the ln(field) function, taking the natural logarithm of this field. - * - * @see #ln(Field) - */ - @NotNull - @Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES }) - public static Field ln(Number value) { - return ln(Tools.field(value)); - } - - /** - * Get the ln(field) function, taking the natural logarithm of this field. - *

- * This renders the ln or log function where available: - *

ln([field]) or
-     * log([field])
- */ - @NotNull - @Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES }) - public static Field ln(Field field) { - return new Ln(Tools.nullSafe(field)); - } - - /** - * Get the log(field, base) function. - * - * @see #log(Field, int) - */ - @NotNull - @Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES }) - public static Field log(Number value, int base) { - return log(Tools.field(value), base); - } - - /** - * Get the log(field, base) function. - *

- * This renders the log function where available: - *

log([field])
... or emulates it elsewhere (in - * most RDBMS) using the natural logarithm: - *
ln([field]) / ln([base])
- */ - @NotNull - @Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES }) - public static Field log(Field field, int base) { - return new Ln(Tools.nullSafe(field), Tools.field(base)); - } - - /** - * Get the log(field, base) function. - *

- * This renders the log function where available: - *

log([field])
... or emulates it elsewhere (in - * most RDBMS) using the natural logarithm: - *
ln([field]) / ln([base])
- */ - @NotNull - @Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES }) - public static Field log(Field field, Field base) { - return new Ln(Tools.nullSafe(field), base); - } - - /** - * Get the power(field, exponent) function. - * - * @see #power(Field, Field) - */ - @NotNull - @Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES }) - public static Field power(Number value, Number exponent) { - return power(Tools.field(value), Tools.field(exponent)); - } - - /** - * Get the power(field, exponent) function. - * - * @see #power(Field, Field) - */ - @NotNull - @Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES }) - public static Field power(Field field, Number exponent) { - return power(Tools.nullSafe(field), Tools.field(exponent)); - } - - /** - * Get the power(field, exponent) function. - * - * @see #power(Field, Field) - */ - @NotNull - @Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES }) - public static Field power(Number value, Field exponent) { - return power(Tools.field(value), Tools.nullSafe(exponent)); - } - - /** - * Get the power(field, exponent) function. - *

- * This renders the power function where available: - *

power([field], [exponent])
... or emulates it - * elsewhere using ln and exp: - *
exp(ln([field]) * [exponent])
- */ - @NotNull - @Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES }) - public static Field power(Field field, Field exponent) { - return new Power(Tools.nullSafe(field), Tools.nullSafe(exponent)); - } - /** * Get the arc cosine(field) function. * diff --git a/jOOQ/src/main/java/org/jooq/impl/DropDomainImpl.java b/jOOQ/src/main/java/org/jooq/impl/DropDomainImpl.java index 1cdc8ee6db..ce5ddddb2d 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DropDomainImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/DropDomainImpl.java @@ -105,7 +105,6 @@ implements // XXX: DSL API // ------------------------------------------------------------------------- - @Override public final DropDomainImpl cascade() { this.cascade = true; diff --git a/jOOQ/src/main/java/org/jooq/impl/DropSchemaImpl.java b/jOOQ/src/main/java/org/jooq/impl/DropSchemaImpl.java index cb8957bcc0..dd69867347 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DropSchemaImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/DropSchemaImpl.java @@ -105,7 +105,6 @@ implements // XXX: DSL API // ------------------------------------------------------------------------- - @Override public final DropSchemaImpl cascade() { this.cascade = true; diff --git a/jOOQ/src/main/java/org/jooq/impl/GrantImpl.java b/jOOQ/src/main/java/org/jooq/impl/GrantImpl.java index 12e10aa1d0..764e576202 100644 --- a/jOOQ/src/main/java/org/jooq/impl/GrantImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/GrantImpl.java @@ -116,7 +116,6 @@ implements // XXX: DSL API // ------------------------------------------------------------------------- - @Override public final GrantImpl on(String on) { return on(DSL.table(DSL.name(on))); diff --git a/jOOQ/src/main/java/org/jooq/impl/Ln.java b/jOOQ/src/main/java/org/jooq/impl/Ln.java deleted file mode 100644 index 6841bef00c..0000000000 --- a/jOOQ/src/main/java/org/jooq/impl/Ln.java +++ /dev/null @@ -1,141 +0,0 @@ -/* - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * Other licenses: - * ----------------------------------------------------------------------------- - * Commercial licenses for this work are available. These replace the above - * ASL 2.0 and offer limited warranties, support, maintenance, and commercial - * database integrations. - * - * For more information, please visit: http://www.jooq.org/licenses - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - */ -package org.jooq.impl; - -import static org.jooq.impl.DSL.function; -import static org.jooq.impl.Internal.idiv; -import static org.jooq.impl.Names.N_LN; -import static org.jooq.impl.Names.N_LOG; -import static org.jooq.impl.Names.N_LOGN; -import static org.jooq.impl.SQLDataType.NUMERIC; - -import java.math.BigDecimal; - -import org.jooq.Context; -import org.jooq.Field; - -/** - * @author Lukas Eder - */ -final class Ln extends AbstractField { - - /** - * Generated UID - */ - private static final long serialVersionUID = -7273879239726265322L; - - private final Field argument; - private final Field base; - - Ln(Field argument) { - this(argument, null); - } - - Ln(Field argument, Field base) { - super(N_LN, NUMERIC); - - this.argument = argument; - this.base = base; - } - - @Override - public final void accept(Context ctx) { - if (base == null) { - switch (ctx.family()) { - - - - - - - - - - - - - - - - - - - - - - - default: - ctx.visit(function(N_LN, NUMERIC, argument)); - return; - } - } - else { - switch (ctx.family()) { - - - - - - - - - - - - - - - - - - - - - - case DERBY: - case HSQLDB: - ctx.visit(idiv(DSL.ln(argument), DSL.ln(base))); - return; - - default: - ctx.visit(function(N_LOG, NUMERIC, base, argument)); - return; - } - } - } -} diff --git a/jOOQ/src/main/java/org/jooq/impl/MergeImpl.java b/jOOQ/src/main/java/org/jooq/impl/MergeImpl.java index 27a354aa5b..d6f8d41434 100644 --- a/jOOQ/src/main/java/org/jooq/impl/MergeImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/MergeImpl.java @@ -55,6 +55,7 @@ import static org.jooq.SQLDialect.HSQLDB; // ... // ... // ... +// ... import static org.jooq.impl.DSL.condition; import static org.jooq.impl.DSL.exists; import static org.jooq.impl.DSL.insertInto; diff --git a/jOOQ/src/main/java/org/jooq/impl/Power.java b/jOOQ/src/main/java/org/jooq/impl/Power.java index c6c3706811..af7aa34f8e 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Power.java +++ b/jOOQ/src/main/java/org/jooq/impl/Power.java @@ -37,35 +37,56 @@ */ package org.jooq.impl; -import static org.jooq.impl.Internal.imul; -import static org.jooq.impl.Names.N_POWER; -import static org.jooq.impl.SQLDataType.NUMERIC; +import static org.jooq.impl.DSL.*; +import static org.jooq.impl.Internal.*; +import static org.jooq.impl.Keywords.*; +import static org.jooq.impl.Names.*; +import static org.jooq.impl.SQLDataType.*; +import static org.jooq.impl.Tools.*; +import static org.jooq.impl.Tools.BooleanDataKey.*; +import static org.jooq.SQLDialect.*; +import org.jooq.*; +import org.jooq.impl.*; +import org.jooq.tools.*; + +import java.util.*; import java.math.BigDecimal; -import org.jooq.Context; -import org.jooq.Field; /** - * @author Lukas Eder + * The POWER statement. */ -final class Power extends AbstractField { +@SuppressWarnings({ "rawtypes", "unchecked", "unused" }) +final class Power +extends + AbstractField +{ - /** - * Generated UID - */ - private static final long serialVersionUID = -7273879239726265322L; + private static final long serialVersionUID = 1L; - private final Field arg1; - private final Field arg2; + private final Field value; + private final Field exponent; - Power(Field arg1, Field arg2) { - super(N_POWER, NUMERIC); + Power( + Field value, + Field exponent + ) { + super( + N_POWER, + allNotNull(NUMERIC, value, exponent) + ); - this.arg1 = arg1; - this.arg2 = arg2; + this.value = nullSafeNotNull(value, INTEGER); + this.exponent = nullSafeNotNull(exponent, INTEGER); } + // ------------------------------------------------------------------------- + // XXX: QueryPart API + // ------------------------------------------------------------------------- + + + @Override public final void accept(Context ctx) { switch (ctx.family()) { @@ -77,12 +98,30 @@ final class Power extends AbstractField { case DERBY: case SQLITE: - ctx.visit(DSL.exp(imul(DSL.ln(arg1), arg2))); + ctx.visit(DSL.exp(imul(DSL.ln(value), exponent))); break; default: - ctx.visit(N_POWER).sql('(').visit(arg1).sql(", ").visit(arg2).sql(')'); + ctx.visit(N_POWER).sql('(').visit(value).sql(", ").visit(exponent).sql(')'); break; } } + + + + // ------------------------------------------------------------------------- + // The Object API + // ------------------------------------------------------------------------- + + @Override + public boolean equals(Object that) { + if (that instanceof Power) { + return + StringUtils.equals(value, ((Power) that).value) && + StringUtils.equals(exponent, ((Power) that).exponent) + ; + } + else + return super.equals(that); + } } diff --git a/jOOQ/src/main/java/org/jooq/impl/RevokeImpl.java b/jOOQ/src/main/java/org/jooq/impl/RevokeImpl.java index 54ded8d236..e98d7b59ad 100644 --- a/jOOQ/src/main/java/org/jooq/impl/RevokeImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/RevokeImpl.java @@ -116,7 +116,6 @@ implements // XXX: DSL API // ------------------------------------------------------------------------- - @Override public final RevokeImpl on(String on) { return on(DSL.table(DSL.name(on))); diff --git a/jOOQ/src/main/java/org/jooq/impl/Sqrt.java b/jOOQ/src/main/java/org/jooq/impl/Sqrt.java index ce8c307b57..dab1b9e1a6 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Sqrt.java +++ b/jOOQ/src/main/java/org/jooq/impl/Sqrt.java @@ -37,33 +37,53 @@ */ package org.jooq.impl; -import static org.jooq.impl.Names.N_SQR; -import static org.jooq.impl.Names.N_SQRT; -import static org.jooq.impl.SQLDataType.NUMERIC; +import static org.jooq.impl.DSL.*; +import static org.jooq.impl.Internal.*; +import static org.jooq.impl.Keywords.*; +import static org.jooq.impl.Names.*; +import static org.jooq.impl.SQLDataType.*; +import static org.jooq.impl.Tools.*; +import static org.jooq.impl.Tools.BooleanDataKey.*; +import static org.jooq.SQLDialect.*; +import org.jooq.*; +import org.jooq.impl.*; +import org.jooq.tools.*; + +import java.util.*; import java.math.BigDecimal; -import org.jooq.Context; -import org.jooq.Field; /** - * @author Lukas Eder + * The SQRT statement. */ -final class Sqrt extends AbstractField { +@SuppressWarnings({ "rawtypes", "unchecked", "unused" }) +final class Sqrt +extends + AbstractField +{ - /** - * Generated UID - */ - private static final long serialVersionUID = -7273879239726265322L; + private static final long serialVersionUID = 1L; - private final Field argument; + private final Field value; - Sqrt(Field argument) { - super(N_SQRT, NUMERIC); + Sqrt( + Field value + ) { + super( + N_SQRT, + allNotNull(NUMERIC, value) + ); - this.argument = argument; + this.value = nullSafeNotNull(value, INTEGER); } + // ------------------------------------------------------------------------- + // XXX: QueryPart API + // ------------------------------------------------------------------------- + + + @Override public final void accept(Context ctx) { switch (ctx.family()) { @@ -83,12 +103,29 @@ final class Sqrt extends AbstractField { case SQLITE: - ctx.visit(DSL.power(argument, 0.5)); + ctx.visit(DSL.power(value, inline(0.5))); break; default: - ctx.visit(N_SQRT).sql('(').visit(argument).sql(')'); + ctx.visit(N_SQRT).sql('(').visit(value).sql(')'); break; } } + + + + // ------------------------------------------------------------------------- + // The Object API + // ------------------------------------------------------------------------- + + @Override + public boolean equals(Object that) { + if (that instanceof Sqrt) { + return + StringUtils.equals(value, ((Sqrt) that).value) + ; + } + else + return super.equals(that); + } }