diff --git a/jOOQ/src/main/java/org/jooq/impl/Expression.java b/jOOQ/src/main/java/org/jooq/impl/Expression.java index fd4527845e..65470f57c7 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Expression.java +++ b/jOOQ/src/main/java/org/jooq/impl/Expression.java @@ -38,6 +38,7 @@ package org.jooq.impl; import static java.util.Arrays.asList; import static org.jooq.SQLDialect.ASE; import static org.jooq.SQLDialect.DB2; +import static org.jooq.SQLDialect.FIREBIRD; import static org.jooq.SQLDialect.H2; import static org.jooq.SQLDialect.HSQLDB; import static org.jooq.SQLDialect.INGRES; @@ -132,12 +133,21 @@ class Expression extends AbstractFunction { if (BIT_AND == operator && asList(DB2, H2, HSQLDB, ORACLE).contains(dialect)) { return function("bitand", getDataType(), getArguments()); } + else if (BIT_AND == operator && FIREBIRD == dialect) { + return function("bin_and", getDataType(), getArguments()); + } else if (BIT_XOR == operator && asList(DB2, H2, HSQLDB).contains(dialect)) { return function("bitxor", getDataType(), getArguments()); } + else if (BIT_XOR == operator && FIREBIRD == dialect) { + return function("bin_xor", getDataType(), getArguments()); + } else if (BIT_OR == operator && asList(DB2, H2, HSQLDB).contains(dialect)) { return function("bitor", getDataType(), getArguments()); } + else if (BIT_OR == operator && FIREBIRD == dialect) { + return function("bin_or", getDataType(), getArguments()); + } // Oracle has to simulate or/xor else if (BIT_OR == operator && ORACLE == dialect) { @@ -159,6 +169,14 @@ class Expression extends AbstractFunction { return lhs.div(Factory.power(two(), rhsAsNumber())); } + // Some dialects support shifts as functions + else if (SHL == operator && FIREBIRD == dialect) { + return function("bin_shl", getDataType(), getArguments()); + } + else if (SHR == operator && FIREBIRD == dialect) { + return function("bin_shr", getDataType(), getArguments()); + } + // These operators are not supported in any dialect else if (BIT_NAND == operator) { return (Field) bitNot(bitAnd(lhsAsNumber(), rhsAsNumber())); diff --git a/jOOQ/src/main/java/org/jooq/impl/Factory.java b/jOOQ/src/main/java/org/jooq/impl/Factory.java index 5ee950060a..c110c08bec 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Factory.java +++ b/jOOQ/src/main/java/org/jooq/impl/Factory.java @@ -40,6 +40,7 @@ import static org.jooq.SQLDialect.ASE; import static org.jooq.SQLDialect.CUBRID; import static org.jooq.SQLDialect.DB2; import static org.jooq.SQLDialect.DERBY; +import static org.jooq.SQLDialect.FIREBIRD; import static org.jooq.SQLDialect.H2; import static org.jooq.SQLDialect.HSQLDB; import static org.jooq.SQLDialect.INGRES; @@ -3736,7 +3737,7 @@ public class Factory implements FactoryOperations { * * @see #bitCount(Field) */ - @Support({ CUBRID, H2, HSQLDB, MYSQL, ORACLE, POSTGRES, SYBASE, SQLITE }) + @Support({ CUBRID, FIREBIRD, H2, HSQLDB, MYSQL, ORACLE, POSTGRES, SYBASE, SQLITE }) public static Field bitCount(Number value) { return bitCount(val(value)); } @@ -3758,7 +3759,7 @@ public class Factory implements FactoryOperations { *

* More efficient algorithms are very welcome */ - @Support({ CUBRID, H2, HSQLDB, MYSQL, ORACLE, POSTGRES, SYBASE, SQLITE }) + @Support({ CUBRID, FIREBIRD, H2, HSQLDB, MYSQL, ORACLE, POSTGRES, SYBASE, SQLITE }) public static Field bitCount(Field field) { return new BitCount(nullSafe(field)); } @@ -3768,7 +3769,7 @@ public class Factory implements FactoryOperations { * * @see #bitNot(Field) */ - @Support({ ASE, CUBRID, DB2, H2, HSQLDB, MYSQL, ORACLE, POSTGRES, SQLSERVER, SYBASE, SQLITE }) + @Support({ ASE, CUBRID, DB2, FIREBIRD, H2, HSQLDB, MYSQL, ORACLE, POSTGRES, SQLSERVER, SYBASE, SQLITE }) public static Field bitNot(T value) { return bitNot(val(value)); } @@ -3779,7 +3780,7 @@ public class Factory implements FactoryOperations { * Most dialects natively support this using ~[field]. jOOQ * simulates this operator in some dialects using -[field] - 1 */ - @Support({ ASE, CUBRID, DB2, H2, HSQLDB, MYSQL, ORACLE, POSTGRES, SQLSERVER, SYBASE, SQLITE }) + @Support({ ASE, CUBRID, DB2, FIREBIRD, H2, HSQLDB, MYSQL, ORACLE, POSTGRES, SQLSERVER, SYBASE, SQLITE }) public static Field bitNot(Field field) { return new Neg(nullSafe(field), ExpressionOperator.BIT_NOT); } @@ -3789,7 +3790,7 @@ public class Factory implements FactoryOperations { * * @see #bitAnd(Field, Field) */ - @Support({ ASE, CUBRID, DB2, H2, HSQLDB, MYSQL, ORACLE, POSTGRES, SQLSERVER, SYBASE, SQLITE }) + @Support({ ASE, CUBRID, DB2, FIREBIRD, H2, HSQLDB, MYSQL, ORACLE, POSTGRES, SQLSERVER, SYBASE, SQLITE }) public static Field bitAnd(T value1, T value2) { return bitAnd(val(value1), val(value2)); } @@ -3799,7 +3800,7 @@ public class Factory implements FactoryOperations { * * @see #bitAnd(Field, Field) */ - @Support({ ASE, CUBRID, DB2, H2, HSQLDB, MYSQL, ORACLE, POSTGRES, SQLSERVER, SYBASE, SQLITE }) + @Support({ ASE, CUBRID, DB2, FIREBIRD, H2, HSQLDB, MYSQL, ORACLE, POSTGRES, SQLSERVER, SYBASE, SQLITE }) public static Field bitAnd(T value1, Field value2) { return bitAnd(val(value1), nullSafe(value2)); } @@ -3809,7 +3810,7 @@ public class Factory implements FactoryOperations { * * @see #bitAnd(Field, Field) */ - @Support({ ASE, CUBRID, DB2, H2, HSQLDB, MYSQL, ORACLE, POSTGRES, SQLSERVER, SYBASE, SQLITE }) + @Support({ ASE, CUBRID, DB2, FIREBIRD, H2, HSQLDB, MYSQL, ORACLE, POSTGRES, SQLSERVER, SYBASE, SQLITE }) public static Field bitAnd(Field value1, T value2) { return bitAnd(nullSafe(value1), val(value2)); } @@ -3824,7 +3825,7 @@ public class Factory implements FactoryOperations { * ... or the and function elsewhere: *

bitand([field1], [field2])
*/ - @Support({ ASE, CUBRID, DB2, H2, HSQLDB, MYSQL, ORACLE, POSTGRES, SQLSERVER, SYBASE, SQLITE }) + @Support({ ASE, CUBRID, DB2, FIREBIRD, H2, HSQLDB, MYSQL, ORACLE, POSTGRES, SQLSERVER, SYBASE, SQLITE }) public static Field bitAnd(Field field1, Field field2) { return new Expression(ExpressionOperator.BIT_AND, nullSafe(field1), nullSafe(field2)); } @@ -3835,7 +3836,7 @@ public class Factory implements FactoryOperations { * @see #bitNand(Field, Field) * @see #bitNot(Field) */ - @Support({ ASE, CUBRID, DB2, H2, HSQLDB, MYSQL, ORACLE, POSTGRES, SQLSERVER, SYBASE, SQLITE }) + @Support({ ASE, CUBRID, DB2, FIREBIRD, H2, HSQLDB, MYSQL, ORACLE, POSTGRES, SQLSERVER, SYBASE, SQLITE }) public static Field bitNand(T value1, T value2) { return bitNand(val(value1), val(value2)); } @@ -3846,7 +3847,7 @@ public class Factory implements FactoryOperations { * @see #bitNand(Field, Field) * @see #bitNot(Field) */ - @Support({ ASE, CUBRID, DB2, H2, HSQLDB, MYSQL, ORACLE, POSTGRES, SQLSERVER, SYBASE, SQLITE }) + @Support({ ASE, CUBRID, DB2, FIREBIRD, H2, HSQLDB, MYSQL, ORACLE, POSTGRES, SQLSERVER, SYBASE, SQLITE }) public static Field bitNand(T value1, Field value2) { return bitNand(val(value1), nullSafe(value2)); } @@ -3857,7 +3858,7 @@ public class Factory implements FactoryOperations { * @see #bitNand(Field, Field) * @see #bitNot(Field) */ - @Support({ ASE, CUBRID, DB2, H2, HSQLDB, MYSQL, ORACLE, POSTGRES, SQLSERVER, SYBASE, SQLITE }) + @Support({ ASE, CUBRID, DB2, FIREBIRD, H2, HSQLDB, MYSQL, ORACLE, POSTGRES, SQLSERVER, SYBASE, SQLITE }) public static Field bitNand(Field value1, T value2) { return bitNand(nullSafe(value1), val(value2)); } @@ -3874,7 +3875,7 @@ public class Factory implements FactoryOperations { * * @see #bitNot(Field) */ - @Support({ ASE, CUBRID, DB2, H2, HSQLDB, MYSQL, ORACLE, POSTGRES, SQLSERVER, SYBASE, SQLITE }) + @Support({ ASE, CUBRID, DB2, FIREBIRD, H2, HSQLDB, MYSQL, ORACLE, POSTGRES, SQLSERVER, SYBASE, SQLITE }) public static Field bitNand(Field field1, Field field2) { return new Expression(ExpressionOperator.BIT_NAND, nullSafe(field1), nullSafe(field2)); } @@ -3884,7 +3885,7 @@ public class Factory implements FactoryOperations { * * @see #bitOr(Field, Field) */ - @Support({ ASE, CUBRID, DB2, H2, HSQLDB, MYSQL, ORACLE, POSTGRES, SQLSERVER, SYBASE, SQLITE }) + @Support({ ASE, CUBRID, DB2, FIREBIRD, H2, HSQLDB, MYSQL, ORACLE, POSTGRES, SQLSERVER, SYBASE, SQLITE }) public static Field bitOr(T value1, T value2) { return bitOr(val(value1), val(value2)); } @@ -3894,7 +3895,7 @@ public class Factory implements FactoryOperations { * * @see #bitOr(Field, Field) */ - @Support({ ASE, CUBRID, DB2, H2, HSQLDB, MYSQL, ORACLE, POSTGRES, SQLSERVER, SYBASE, SQLITE }) + @Support({ ASE, CUBRID, DB2, FIREBIRD, H2, HSQLDB, MYSQL, ORACLE, POSTGRES, SQLSERVER, SYBASE, SQLITE }) public static Field bitOr(T value1, Field value2) { return bitOr(val(value1), nullSafe(value2)); } @@ -3904,7 +3905,7 @@ public class Factory implements FactoryOperations { * * @see #bitOr(Field, Field) */ - @Support({ ASE, CUBRID, DB2, H2, HSQLDB, MYSQL, ORACLE, POSTGRES, SQLSERVER, SYBASE, SQLITE }) + @Support({ ASE, CUBRID, DB2, FIREBIRD, H2, HSQLDB, MYSQL, ORACLE, POSTGRES, SQLSERVER, SYBASE, SQLITE }) public static Field bitOr(Field value1, T value2) { return bitOr(nullSafe(value1), val(value2)); } @@ -3919,7 +3920,7 @@ public class Factory implements FactoryOperations { * ... or the or function elsewhere: *
bitor([field1], [field2])
*/ - @Support({ ASE, CUBRID, DB2, H2, HSQLDB, MYSQL, ORACLE, POSTGRES, SQLSERVER, SYBASE, SQLITE }) + @Support({ ASE, CUBRID, DB2, FIREBIRD, H2, HSQLDB, MYSQL, ORACLE, POSTGRES, SQLSERVER, SYBASE, SQLITE }) public static Field bitOr(Field field1, Field field2) { return new Expression(ExpressionOperator.BIT_OR, nullSafe(field1), nullSafe(field2)); } @@ -3930,7 +3931,7 @@ public class Factory implements FactoryOperations { * @see #bitNor(Field, Field) * @see #bitNot(Field) */ - @Support({ ASE, CUBRID, DB2, H2, HSQLDB, MYSQL, ORACLE, POSTGRES, SQLSERVER, SYBASE, SQLITE }) + @Support({ ASE, CUBRID, DB2, FIREBIRD, H2, HSQLDB, MYSQL, ORACLE, POSTGRES, SQLSERVER, SYBASE, SQLITE }) public static Field bitNor(T value1, T value2) { return bitNor(val(value1), val(value2)); } @@ -3940,7 +3941,7 @@ public class Factory implements FactoryOperations { * @see #bitNor(Field, Field) * @see #bitNot(Field) */ - @Support({ ASE, CUBRID, DB2, H2, HSQLDB, MYSQL, ORACLE, POSTGRES, SQLSERVER, SYBASE, SQLITE }) + @Support({ ASE, CUBRID, DB2, FIREBIRD, H2, HSQLDB, MYSQL, ORACLE, POSTGRES, SQLSERVER, SYBASE, SQLITE }) public static Field bitNor(T value1, Field value2) { return bitNor(val(value1), nullSafe(value2)); } @@ -3950,7 +3951,7 @@ public class Factory implements FactoryOperations { * @see #bitNor(Field, Field) * @see #bitNot(Field) */ - @Support({ ASE, CUBRID, DB2, H2, HSQLDB, MYSQL, ORACLE, POSTGRES, SQLSERVER, SYBASE, SQLITE }) + @Support({ ASE, CUBRID, DB2, FIREBIRD, H2, HSQLDB, MYSQL, ORACLE, POSTGRES, SQLSERVER, SYBASE, SQLITE }) public static Field bitNor(Field value1, T value2) { return bitNor(nullSafe(value1), val(value2)); } @@ -3967,7 +3968,7 @@ public class Factory implements FactoryOperations { * * @see #bitNot(Field) */ - @Support({ ASE, CUBRID, DB2, H2, HSQLDB, MYSQL, ORACLE, POSTGRES, SQLSERVER, SYBASE, SQLITE }) + @Support({ ASE, CUBRID, DB2, FIREBIRD, H2, HSQLDB, MYSQL, ORACLE, POSTGRES, SQLSERVER, SYBASE, SQLITE }) public static Field bitNor(Field field1, Field field2) { return new Expression(ExpressionOperator.BIT_NOR, nullSafe(field1), nullSafe(field2)); } @@ -3977,7 +3978,7 @@ public class Factory implements FactoryOperations { * * @see #bitXor(Field, Field) */ - @Support({ ASE, CUBRID, DB2, H2, HSQLDB, MYSQL, ORACLE, POSTGRES, SQLSERVER, SYBASE, SQLITE }) + @Support({ ASE, CUBRID, DB2, FIREBIRD, H2, HSQLDB, MYSQL, ORACLE, POSTGRES, SQLSERVER, SYBASE, SQLITE }) public static Field bitXor(T value1, T value2) { return bitXor(val(value1), val(value2)); } @@ -3987,7 +3988,7 @@ public class Factory implements FactoryOperations { * * @see #bitXor(Field, Field) */ - @Support({ ASE, CUBRID, DB2, H2, HSQLDB, MYSQL, ORACLE, POSTGRES, SQLSERVER, SYBASE, SQLITE }) + @Support({ ASE, CUBRID, DB2, FIREBIRD, H2, HSQLDB, MYSQL, ORACLE, POSTGRES, SQLSERVER, SYBASE, SQLITE }) public static Field bitXor(T value1, Field value2) { return bitXor(val(value1), nullSafe(value2)); } @@ -3997,7 +3998,7 @@ public class Factory implements FactoryOperations { * * @see #bitXor(Field, Field) */ - @Support({ ASE, CUBRID, DB2, H2, HSQLDB, MYSQL, ORACLE, POSTGRES, SQLSERVER, SYBASE, SQLITE }) + @Support({ ASE, CUBRID, DB2, FIREBIRD, H2, HSQLDB, MYSQL, ORACLE, POSTGRES, SQLSERVER, SYBASE, SQLITE }) public static Field bitXor(Field value1, T value2) { return bitXor(nullSafe(value1), val(value2)); } @@ -4012,7 +4013,7 @@ public class Factory implements FactoryOperations { * ... or the xor function elsewhere: *
bitxor([field1], [field2])
*/ - @Support({ ASE, CUBRID, DB2, H2, HSQLDB, MYSQL, ORACLE, POSTGRES, SQLSERVER, SYBASE, SQLITE }) + @Support({ ASE, CUBRID, DB2, FIREBIRD, H2, HSQLDB, MYSQL, ORACLE, POSTGRES, SQLSERVER, SYBASE, SQLITE }) public static Field bitXor(Field field1, Field field2) { return new Expression(ExpressionOperator.BIT_XOR, nullSafe(field1), nullSafe(field2)); } @@ -4023,7 +4024,7 @@ public class Factory implements FactoryOperations { * @see #bitXNor(Field, Field) * @see #bitNot(Field) */ - @Support({ ASE, CUBRID, DB2, H2, HSQLDB, MYSQL, ORACLE, POSTGRES, SQLSERVER, SYBASE, SQLITE }) + @Support({ ASE, CUBRID, DB2, FIREBIRD, H2, HSQLDB, MYSQL, ORACLE, POSTGRES, SQLSERVER, SYBASE, SQLITE }) public static Field bitXNor(T value1, T value2) { return bitXNor(val(value1), val(value2)); } @@ -4034,7 +4035,7 @@ public class Factory implements FactoryOperations { * @see #bitXNor(Field, Field) * @see #bitNot(Field) */ - @Support({ ASE, CUBRID, DB2, H2, HSQLDB, MYSQL, ORACLE, POSTGRES, SQLSERVER, SYBASE, SQLITE }) + @Support({ ASE, CUBRID, DB2, FIREBIRD, H2, HSQLDB, MYSQL, ORACLE, POSTGRES, SQLSERVER, SYBASE, SQLITE }) public static Field bitXNor(T value1, Field value2) { return bitXNor(val(value1), nullSafe(value2)); } @@ -4045,7 +4046,7 @@ public class Factory implements FactoryOperations { * @see #bitXNor(Field, Field) * @see #bitNot(Field) */ - @Support({ ASE, CUBRID, DB2, H2, HSQLDB, MYSQL, ORACLE, POSTGRES, SQLSERVER, SYBASE, SQLITE }) + @Support({ ASE, CUBRID, DB2, FIREBIRD, H2, HSQLDB, MYSQL, ORACLE, POSTGRES, SQLSERVER, SYBASE, SQLITE }) public static Field bitXNor(Field value1, T value2) { return bitXNor(nullSafe(value1), val(value2)); } @@ -4060,7 +4061,7 @@ public class Factory implements FactoryOperations { * ... or the not xor function elsewhere: *
bitnot(bitxor([field1], [field2]))
*/ - @Support({ ASE, CUBRID, DB2, H2, HSQLDB, MYSQL, ORACLE, POSTGRES, SQLSERVER, SYBASE, SQLITE }) + @Support({ ASE, CUBRID, DB2, FIREBIRD, H2, HSQLDB, MYSQL, ORACLE, POSTGRES, SQLSERVER, SYBASE, SQLITE }) public static Field bitXNor(Field field1, Field field2) { return new Expression(ExpressionOperator.BIT_XNOR, nullSafe(field1), nullSafe(field2)); } @@ -4071,7 +4072,7 @@ public class Factory implements FactoryOperations { * @see #shl(Field, Field) * @see #power(Field, Number) */ - @Support({ ASE, CUBRID, DB2, H2, HSQLDB, MYSQL, ORACLE, POSTGRES, SQLSERVER, SYBASE, SQLITE }) + @Support({ ASE, CUBRID, DB2, FIREBIRD, H2, HSQLDB, MYSQL, ORACLE, POSTGRES, SQLSERVER, SYBASE, SQLITE }) public static Field shl(T value1, T value2) { return shl(val(value1), val(value2)); } @@ -4082,7 +4083,7 @@ public class Factory implements FactoryOperations { * @see #shl(Field, Field) * @see #power(Field, Number) */ - @Support({ ASE, CUBRID, DB2, H2, HSQLDB, MYSQL, ORACLE, POSTGRES, SQLSERVER, SYBASE, SQLITE }) + @Support({ ASE, CUBRID, DB2, FIREBIRD, H2, HSQLDB, MYSQL, ORACLE, POSTGRES, SQLSERVER, SYBASE, SQLITE }) public static Field shl(T value1, Field value2) { return shl(val(value1), nullSafe(value2)); } @@ -4093,7 +4094,7 @@ public class Factory implements FactoryOperations { * @see #shl(Field, Field) * @see #power(Field, Number) */ - @Support({ ASE, CUBRID, DB2, H2, HSQLDB, MYSQL, ORACLE, POSTGRES, SQLSERVER, SYBASE, SQLITE }) + @Support({ ASE, CUBRID, DB2, FIREBIRD, H2, HSQLDB, MYSQL, ORACLE, POSTGRES, SQLSERVER, SYBASE, SQLITE }) public static Field shl(Fieldvalue1, T value2) { return shl(nullSafe(value1), val(value2)); } @@ -4107,7 +4108,7 @@ public class Factory implements FactoryOperations { * * @see #power(Field, Field) */ - @Support({ ASE, CUBRID, DB2, H2, HSQLDB, MYSQL, ORACLE, POSTGRES, SQLSERVER, SYBASE, SQLITE }) + @Support({ ASE, CUBRID, DB2, FIREBIRD, H2, HSQLDB, MYSQL, ORACLE, POSTGRES, SQLSERVER, SYBASE, SQLITE }) public static Field shl(Field field1, Field field2) { return new Expression(ExpressionOperator.SHL, nullSafe(field1), nullSafe(field2)); } @@ -4118,7 +4119,7 @@ public class Factory implements FactoryOperations { * @see #shr(Field, Field) * @see #power(Field, Number) */ - @Support({ ASE, CUBRID, DB2, H2, HSQLDB, MYSQL, ORACLE, POSTGRES, SQLSERVER, SYBASE, SQLITE }) + @Support({ ASE, CUBRID, DB2, FIREBIRD, H2, HSQLDB, MYSQL, ORACLE, POSTGRES, SQLSERVER, SYBASE, SQLITE }) public static Field shr(T value1, T value2) { return shr(val(value1), val(value2)); } @@ -4129,7 +4130,7 @@ public class Factory implements FactoryOperations { * @see #shr(Field, Field) * @see #power(Field, Number) */ - @Support({ ASE, CUBRID, DB2, H2, HSQLDB, MYSQL, ORACLE, POSTGRES, SQLSERVER, SYBASE, SQLITE }) + @Support({ ASE, CUBRID, DB2, FIREBIRD, H2, HSQLDB, MYSQL, ORACLE, POSTGRES, SQLSERVER, SYBASE, SQLITE }) public static Field shr(T value1, Field value2) { return shr(val(value1), nullSafe(value2)); } @@ -4140,7 +4141,7 @@ public class Factory implements FactoryOperations { * @see #shr(Field, Field) * @see #power(Field, Number) */ - @Support({ ASE, CUBRID, DB2, H2, HSQLDB, MYSQL, ORACLE, POSTGRES, SQLSERVER, SYBASE, SQLITE }) + @Support({ ASE, CUBRID, DB2, FIREBIRD, H2, HSQLDB, MYSQL, ORACLE, POSTGRES, SQLSERVER, SYBASE, SQLITE }) public static Field shr(Field value1, T value2) { return shr(nullSafe(value1), val(value2)); } @@ -4154,7 +4155,7 @@ public class Factory implements FactoryOperations { * * @see #power(Field, Field) */ - @Support({ ASE, CUBRID, DB2, H2, HSQLDB, MYSQL, ORACLE, POSTGRES, SQLSERVER, SYBASE, SQLITE }) + @Support({ ASE, CUBRID, DB2, H2, FIREBIRD, HSQLDB, MYSQL, ORACLE, POSTGRES, SQLSERVER, SYBASE, SQLITE }) public static Field shr(Field field1, Field field2) { return new Expression(ExpressionOperator.SHR, nullSafe(field1), nullSafe(field2)); } diff --git a/jOOQ/src/main/java/org/jooq/impl/Neg.java b/jOOQ/src/main/java/org/jooq/impl/Neg.java index d87e275849..068586594c 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Neg.java +++ b/jOOQ/src/main/java/org/jooq/impl/Neg.java @@ -37,6 +37,7 @@ package org.jooq.impl; import static java.util.Arrays.asList; import static org.jooq.SQLDialect.DB2; +import static org.jooq.SQLDialect.FIREBIRD; import static org.jooq.SQLDialect.H2; import static org.jooq.SQLDialect.HSQLDB; import static org.jooq.SQLDialect.INGRES; @@ -82,6 +83,11 @@ class Neg extends AbstractField { .sql(field) .sql(")"); } + else if (operator == BIT_NOT && dialect == FIREBIRD) { + context.keyword("bin_not(") + .sql(field) + .sql(")"); + } else { context.sql(operator.toSQL()) .sql("(")