From ae165e78a63cfb8a9cac9ccdbbf2dd7c0b541f34 Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Tue, 14 Sep 2021 16:23:43 +0200 Subject: [PATCH] [jOOQ/jOOQ#12425] Move SHL/SHR binary operators to API generator --- jOOQ/src/main/java/org/jooq/Field.java | 92 +++++++++++-------- .../java/org/jooq/impl/AbstractField.java | 60 ++++++------ .../main/java/org/jooq/impl/Expression.java | 15 --- 3 files changed, 80 insertions(+), 87 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/Field.java b/jOOQ/src/main/java/org/jooq/Field.java index 2ddf835bb2..905f63470f 100644 --- a/jOOQ/src/main/java/org/jooq/Field.java +++ b/jOOQ/src/main/java/org/jooq/Field.java @@ -675,6 +675,58 @@ extends @Support SortField sort(Map sortMap); + + + /** + * The SHL operator. + *

+ * Left shift all bits in a number + * + * @param value The number whose bits to shift left. + * @param count The number of bits to shift. + */ + @NotNull + @Support({ CUBRID, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE }) + Field shl(Number count); + + /** + * The SHL operator. + *

+ * Left shift all bits in a number + * + * @param value The number whose bits to shift left. + * @param count The number of bits to shift. + */ + @NotNull + @Support({ CUBRID, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE }) + Field shl(Field count); + + /** + * The SHR operator. + *

+ * Right shift all bits in a number + * + * @param value The number whose bits to shift right + * @param count The number of bits to shift. + */ + @NotNull + @Support({ CUBRID, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE }) + Field shr(Number count); + + /** + * The SHR operator. + *

+ * Right shift all bits in a number + * + * @param value The number whose bits to shift right + * @param count The number of bits to shift. + */ + @NotNull + @Support({ CUBRID, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE }) + Field shr(Field count); + + + // ------------------------------------------------------------------------ // Arithmetic operations // ------------------------------------------------------------------------ @@ -1196,46 +1248,6 @@ extends @Support({ CUBRID, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE }) Field bitXNor(Field value); - /** - * The bitwise left shift operator. - * - * @see DSL#shl(Field, Field) - * @see DSL#power(Field, Number) - */ - @NotNull - @Support({ CUBRID, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE }) - Field shl(Number value); - - /** - * The bitwise left shift operator. - * - * @see DSL#shl(Field, Field) - * @see DSL#power(Field, Number) - */ - @NotNull - @Support({ CUBRID, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE }) - Field shl(Field value); - - /** - * The bitwise right shift operator. - * - * @see DSL#shr(Field, Field) - * @see DSL#power(Field, Number) - */ - @NotNull - @Support({ CUBRID, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE }) - Field shr(Number value); - - /** - * The bitwise right shift operator. - * - * @see DSL#shr(Field, Field) - * @see DSL#power(Field, Number) - */ - @NotNull - @Support({ CUBRID, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTE }) - Field shr(Field value); - // ------------------------------------------------------------------------ // XML predicates // ------------------------------------------------------------------------ diff --git a/jOOQ/src/main/java/org/jooq/impl/AbstractField.java b/jOOQ/src/main/java/org/jooq/impl/AbstractField.java index 0eec006886..d629c0a7ce 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AbstractField.java +++ b/jOOQ/src/main/java/org/jooq/impl/AbstractField.java @@ -337,6 +337,34 @@ abstract class AbstractField extends AbstractTypedNamed implements Field(new ConstantSortField<>((Field) this), SortOrder.DEFAULT); } + + + @Override + @SuppressWarnings({ "unchecked", "rawtypes" }) + public final Field shl(Number count) { + return DSL.shl((Field) this, count); + } + + @Override + @SuppressWarnings({ "unchecked", "rawtypes" }) + public final Field shl(Field count) { + return DSL.shl((Field) this, count); + } + + @Override + @SuppressWarnings({ "unchecked", "rawtypes" }) + public final Field shr(Number count) { + return DSL.shr((Field) this, count); + } + + @Override + @SuppressWarnings({ "unchecked", "rawtypes" }) + public final Field shr(Field count) { + return DSL.shr((Field) this, count); + } + + + // ------------------------------------------------------------------------ // XXX: Arithmetic operations // ------------------------------------------------------------------------ @@ -574,38 +602,6 @@ abstract class AbstractField extends AbstractTypedNamed implements Field shl(Number value) { - // Workaround assignment for https://bugs.eclipse.org/bugs/show_bug.cgi?id=473657 - final Field result = DSL.shl((Field) this, (Field) Tools.field(value)); - return result; - } - - @SuppressWarnings({ "unchecked", "rawtypes" }) - @Override - public final Field shl(Field value) { - // Workaround assignment for https://bugs.eclipse.org/bugs/show_bug.cgi?id=473657 - final Field result = DSL.shl((Field) this, value); - return result; - } - - @SuppressWarnings({ "unchecked", "rawtypes" }) - @Override - public final Field shr(Number value) { - // Workaround assignment for https://bugs.eclipse.org/bugs/show_bug.cgi?id=473657 - final Field result = DSL.shr((Field) this, (Field) Tools.field(value)); - return result; - } - - @SuppressWarnings({ "unchecked", "rawtypes" }) - @Override - public final Field shr(Field value) { - // Workaround assignment for https://bugs.eclipse.org/bugs/show_bug.cgi?id=473657 - final Field result = DSL.shr((Field) this, (Field) value); - return result; - } - // ------------------------------------------------------------------------ // XXX: Conditions created from this field // ------------------------------------------------------------------------ diff --git a/jOOQ/src/main/java/org/jooq/impl/Expression.java b/jOOQ/src/main/java/org/jooq/impl/Expression.java index 32fe908904..d50ba87d1c 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Expression.java +++ b/jOOQ/src/main/java/org/jooq/impl/Expression.java @@ -41,7 +41,6 @@ import static org.jooq.DatePart.MONTH; import static org.jooq.DatePart.SECOND; // ... // ... -// ... import static org.jooq.SQLDialect.CUBRID; // ... import static org.jooq.SQLDialect.DERBY; @@ -52,7 +51,6 @@ import static org.jooq.SQLDialect.HSQLDB; // ... // ... // ... -// ... import static org.jooq.SQLDialect.POSTGRES; // ... // ... @@ -61,13 +59,11 @@ import static org.jooq.SQLDialect.SQLITE; // ... // ... // ... -// ... import static org.jooq.SQLDialect.YUGABYTE; import static org.jooq.impl.DSL.function; import static org.jooq.impl.DSL.inline; import static org.jooq.impl.DSL.inlined; import static org.jooq.impl.DSL.keyword; -import static org.jooq.impl.DSL.two; import static org.jooq.impl.DSL.val; import static org.jooq.impl.ExpressionOperator.ADD; import static org.jooq.impl.ExpressionOperator.BIT_AND; @@ -79,8 +75,6 @@ import static org.jooq.impl.ExpressionOperator.BIT_XOR; import static org.jooq.impl.ExpressionOperator.MULTIPLY; import static org.jooq.impl.ExpressionOperator.SUBTRACT; import static org.jooq.impl.Internal.iadd; -import static org.jooq.impl.Internal.idiv; -import static org.jooq.impl.Internal.imul; import static org.jooq.impl.Internal.isub; import static org.jooq.impl.Keywords.K_AS; import static org.jooq.impl.Keywords.K_CAST; @@ -100,20 +94,12 @@ import static org.jooq.impl.Names.N_ADD_MONTHS; import static org.jooq.impl.Names.N_ADD_SECONDS; import static org.jooq.impl.Names.N_BIN_AND; import static org.jooq.impl.Names.N_BIN_OR; -import static org.jooq.impl.Names.N_BIN_SHL; -import static org.jooq.impl.Names.N_BIN_SHR; import static org.jooq.impl.Names.N_BIN_XOR; import static org.jooq.impl.Names.N_BITAND; import static org.jooq.impl.Names.N_BITOR; -import static org.jooq.impl.Names.N_BITSHIFTLEFT; -import static org.jooq.impl.Names.N_BITSHIFTRIGHT; import static org.jooq.impl.Names.N_BITXOR; import static org.jooq.impl.Names.N_DATEADD; import static org.jooq.impl.Names.N_DATE_ADD; -import static org.jooq.impl.Names.N_LSHIFT; -import static org.jooq.impl.Names.N_RSHIFT; -import static org.jooq.impl.Names.N_SHIFTLEFT; -import static org.jooq.impl.Names.N_SHIFTRIGHT; import static org.jooq.impl.Names.N_SQL_TSI_FRAC_SECOND; import static org.jooq.impl.Names.N_SQL_TSI_MILLI_SECOND; import static org.jooq.impl.Names.N_SQL_TSI_MONTH; @@ -187,7 +173,6 @@ final class Expression extends AbstractTransformable { return lt; } - @SuppressWarnings("unchecked") @Override final void accept0(Context ctx) { SQLDialect family = ctx.family();