bytes) {
+ return new BinaryBitLength(bytes);
+ }
+
/**
* The BINARY_LENGTH function.
*
@@ -21000,6 +21022,28 @@ public class DSL {
return new BinaryMd5(bytes);
}
+ /**
+ * The BINARY_OCTET_LENGTH function.
+ *
+ * The length of a binary string in octets.
+ */
+ @NotNull
+ @Support
+ public static Field binaryOctetLength(byte[] bytes) {
+ return new BinaryOctetLength(Tools.field(bytes));
+ }
+
+ /**
+ * The BINARY_OCTET_LENGTH function.
+ *
+ * The length of a binary string in octets.
+ */
+ @NotNull
+ @Support
+ public static Field binaryOctetLength(Field bytes) {
+ return new BinaryOctetLength(bytes);
+ }
+
/**
* The BINARY_OVERLAY function.
*
@@ -21072,7 +21116,7 @@ public class DSL {
* @param startIndex The start index (1-based) from which to start looking for the substring.
*/
@NotNull
- @Support
+ @Support({ POSTGRES, YUGABYTEDB })
public static Field binaryPosition(byte[] in, byte[] search, int startIndex) {
return new BinaryPosition(Tools.field(in), Tools.field(search), Tools.field(startIndex));
}
@@ -21087,7 +21131,7 @@ public class DSL {
* @param startIndex The start index (1-based) from which to start looking for the substring.
*/
@NotNull
- @Support
+ @Support({ POSTGRES, YUGABYTEDB })
public static Field binaryPosition(byte[] in, byte[] search, Field extends Number> startIndex) {
return new BinaryPosition(Tools.field(in), Tools.field(search), startIndex);
}
@@ -21102,7 +21146,7 @@ public class DSL {
* @param startIndex The start index (1-based) from which to start looking for the substring.
*/
@NotNull
- @Support
+ @Support({ POSTGRES, YUGABYTEDB })
public static Field binaryPosition(byte[] in, Field search, int startIndex) {
return new BinaryPosition(Tools.field(in), search, Tools.field(startIndex));
}
@@ -21117,7 +21161,7 @@ public class DSL {
* @param startIndex The start index (1-based) from which to start looking for the substring.
*/
@NotNull
- @Support
+ @Support({ POSTGRES, YUGABYTEDB })
public static Field binaryPosition(byte[] in, Field search, Field extends Number> startIndex) {
return new BinaryPosition(Tools.field(in), search, startIndex);
}
@@ -21132,7 +21176,7 @@ public class DSL {
* @param startIndex The start index (1-based) from which to start looking for the substring.
*/
@NotNull
- @Support
+ @Support({ POSTGRES, YUGABYTEDB })
public static Field binaryPosition(Field in, byte[] search, int startIndex) {
return new BinaryPosition(in, Tools.field(search), Tools.field(startIndex));
}
@@ -21147,7 +21191,7 @@ public class DSL {
* @param startIndex The start index (1-based) from which to start looking for the substring.
*/
@NotNull
- @Support
+ @Support({ POSTGRES, YUGABYTEDB })
public static Field binaryPosition(Field in, byte[] search, Field extends Number> startIndex) {
return new BinaryPosition(in, Tools.field(search), startIndex);
}
@@ -21162,7 +21206,7 @@ public class DSL {
* @param startIndex The start index (1-based) from which to start looking for the substring.
*/
@NotNull
- @Support
+ @Support({ POSTGRES, YUGABYTEDB })
public static Field binaryPosition(Field in, Field search, int startIndex) {
return new BinaryPosition(in, search, Tools.field(startIndex));
}
@@ -21177,7 +21221,7 @@ public class DSL {
* @param startIndex The start index (1-based) from which to start looking for the substring.
*/
@NotNull
- @Support
+ @Support({ POSTGRES, YUGABYTEDB })
public static Field binaryPosition(Field in, Field search, Field extends Number> startIndex) {
return new BinaryPosition(in, search, startIndex);
}
@@ -21191,7 +21235,7 @@ public class DSL {
* @param search The substring to search for.
*/
@NotNull
- @Support
+ @Support({ POSTGRES, YUGABYTEDB })
public static Field binaryPosition(byte[] in, byte[] search) {
return new BinaryPosition(Tools.field(in), Tools.field(search));
}
@@ -21205,7 +21249,7 @@ public class DSL {
* @param search The substring to search for.
*/
@NotNull
- @Support
+ @Support({ POSTGRES, YUGABYTEDB })
public static Field binaryPosition(byte[] in, Field search) {
return new BinaryPosition(Tools.field(in), search);
}
@@ -21219,7 +21263,7 @@ public class DSL {
* @param search The substring to search for.
*/
@NotNull
- @Support
+ @Support({ POSTGRES, YUGABYTEDB })
public static Field binaryPosition(Field in, byte[] search) {
return new BinaryPosition(in, Tools.field(search));
}
@@ -21233,7 +21277,7 @@ public class DSL {
* @param search The substring to search for.
*/
@NotNull
- @Support
+ @Support({ POSTGRES, YUGABYTEDB })
public static Field binaryPosition(Field in, Field search) {
return new BinaryPosition(in, search);
}
diff --git a/jOOQ/src/main/java/org/jooq/impl/Names.java b/jOOQ/src/main/java/org/jooq/impl/Names.java
index 77f10d0e5d..2eb60e96b4 100644
--- a/jOOQ/src/main/java/org/jooq/impl/Names.java
+++ b/jOOQ/src/main/java/org/jooq/impl/Names.java
@@ -330,9 +330,11 @@ final class Names {
static final Name N_ATN = systemName("atn");
static final Name N_ATN2 = systemName("atn2");
static final Name N_AVG = systemName("avg");
+ static final Name N_BINARY_BIT_LENGTH = systemName("binary_bit_length");
static final Name N_BINARY_LENGTH = systemName("binary_length");
static final Name N_BINARY_LTRIM = systemName("binary_ltrim");
static final Name N_BINARY_MD5 = systemName("binary_md5");
+ static final Name N_BINARY_OCTET_LENGTH = systemName("binary_octet_length");
static final Name N_BINARY_OVERLAY = systemName("binary_overlay");
static final Name N_BINARY_POSITION = systemName("binary_position");
static final Name N_BINARY_RTRIM = systemName("binary_rtrim");
diff --git a/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java b/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java
index e905687c58..a4cdf7a679 100644
--- a/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java
+++ b/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java
@@ -98,6 +98,7 @@ import static org.jooq.impl.DSL.begin;
import static org.jooq.impl.DSL.binaryLength;
import static org.jooq.impl.DSL.binaryLtrim;
import static org.jooq.impl.DSL.binaryMd5;
+import static org.jooq.impl.DSL.binaryOctetLength;
import static org.jooq.impl.DSL.binaryOverlay;
import static org.jooq.impl.DSL.binaryRtrim;
import static org.jooq.impl.DSL.binarySubstring;
@@ -8667,7 +8668,7 @@ final class DefaultParseContext extends AbstractScope implements ParseContext {
case 'B':
if (parseFunctionNameIf("BIT_LENGTH"))
- return bitLength((Field) parseFieldParenthesised());
+ return parseFunctionArgs1(binary1(DSL::binaryBitLength, DSL::bitLength));
else if (parseFunctionNameIf("BITGET", "BIT_GET"))
return parseFunctionArgs2(DSL::bitGet);
else if (parseFunctionNameIf("BITSET", "BIT_SET"))
@@ -8704,7 +8705,7 @@ final class DefaultParseContext extends AbstractScope implements ParseContext {
else if (parseFunctionNameIf("CHARINDEX"))
return parseFunctionArgs3(
- (f1, f2) -> binary(f1, f2) ? DSL.binaryPosition(f2, f1) : DSL.position(f2, f1),
+ binary2(DSL::binaryPosition, DSL::position),
(f1, f2, f3) -> binary(f1, f2) ? DSL.binaryPosition(f2, f1, f3) : DSL.position(f2, f1, f3)
);
else if (parseFunctionNameIf("CHAR_LENGTH"))
@@ -8909,7 +8910,7 @@ final class DefaultParseContext extends AbstractScope implements ParseContext {
return hour(parseFieldParenthesised());
else if (parseFunctionNameIf("HASH_MD5"))
- return parseFunctionArgs1(f -> f.getDataType().isBinary() ? binaryMd5(f) : md5(f));
+ return parseFunctionArgs1(binary1(DSL::binaryMd5, DSL::md5));
else if (parseFunctionNameIf("HEX"))
return toHex((Field) parseFieldParenthesised());
@@ -8924,7 +8925,7 @@ final class DefaultParseContext extends AbstractScope implements ParseContext {
return isoDayOfWeek(parseFieldParenthesised());
else if (parseFunctionNameIf("INSTR"))
return parseFunctionArgs3(
- (f1, f2) -> binary(f1, f2) ? DSL.binaryPosition(f1, f2) : DSL.position(f1, f2),
+ binary2(DSL::binaryPosition, DSL::position),
(f1, f2, f3) -> binary(f1, f2) ? DSL.binaryPosition(f1, f2, f3) : DSL.position(f1, f2, f3)
);
else if (parseFunctionNameIf("INSERT"))
@@ -8980,11 +8981,11 @@ final class DefaultParseContext extends AbstractScope implements ParseContext {
else if (parseFunctionNameIf("LPAD"))
return parseFunctionArgs3(DSL::lpad, DSL::lpad);
else if (parseFunctionNameIf("LTRIM"))
- return parseFunctionArgs2(DSL::ltrim, (f1, f2) -> binary(f1, f2) ? binaryLtrim(f1, f2) : ltrim(f1, f2));
+ return parseFunctionArgs2(DSL::ltrim, binary2(DSL::binaryLtrim, DSL::ltrim));
else if (parseFunctionNameIf("LEFT"))
return parseFunctionArgs2(DSL::left);
else if (parseFunctionNameIf("LENGTH", "LEN"))
- return parseFunctionArgs1(f -> f.getDataType().isBinary() ? binaryLength(f) : length(f));
+ return parseFunctionArgs1(binary1(DSL::binaryLength, DSL::length));
else if (parseFunctionNameIf("LENGTHB"))
return octetLength((Field) parseFieldParenthesised());
else if (parseFunctionNameIf("LN", "LOGN"))
@@ -9027,7 +9028,7 @@ final class DefaultParseContext extends AbstractScope implements ParseContext {
else if (parseFunctionNameIf("MID"))
return parseFunctionArgs3(DSL::mid);
else if (parseFunctionNameIf("MD5"))
- return parseFunctionArgs1(f -> f.getDataType().isBinary() ? binaryMd5(f) : md5(f));
+ return parseFunctionArgs1(binary1(DSL::binaryMd5, DSL::md5));
else if ((field = parseMultisetValueConstructorIf()) != null)
return field;
@@ -9087,7 +9088,7 @@ final class DefaultParseContext extends AbstractScope implements ParseContext {
else if ((field = parseFieldTranslateIf()) != null)
return field;
else if (parseFunctionNameIf("OCTET_LENGTH"))
- return octetLength((Field) parseFieldParenthesised());
+ return parseFunctionArgs1(binary1(DSL::binaryOctetLength, DSL::octetLength));
else if ((field = parseFieldObjectConstructIf()) != null)
return field;
else if (parseFunctionNameIf("OBJECT_KEYS"))
@@ -9137,7 +9138,7 @@ final class DefaultParseContext extends AbstractScope implements ParseContext {
else if (parseFunctionNameIf("RPAD"))
return parseFunctionArgs3(DSL::rpad, DSL::rpad);
else if (parseFunctionNameIf("RTRIM"))
- return parseFunctionArgs2(DSL::rtrim, (f1, f2) -> binary(f1, f2) ? binaryRtrim(f1, f2) : rtrim(f1, f2));
+ return parseFunctionArgs2(DSL::rtrim, binary2(DSL::binaryRtrim, DSL::rtrim));
else if (parseFunctionNameIf("RIGHT"))
return parseFunctionArgs2(DSL::right);
else if (parseFunctionNameIf("RANDOM_UUID") && parseEmptyParens())
@@ -11376,10 +11377,28 @@ final class DefaultParseContext extends AbstractScope implements ParseContext {
return null;
}
+ private final boolean binary(Field> f1) {
+ return f1.getDataType().isBinary();
+ }
+
private final boolean binary(Field> f1, Field> f2) {
return f1.getDataType().isBinary() || f2.getDataType().isBinary();
}
+ private final Function1 super Field>, ? extends Q> binary1(
+ Function1 super Field, ? extends Q> binary,
+ Function1 super Field, ? extends Q> nonBinary
+ ) {
+ return f1 -> binary(f1) ? binary.apply(f1) : nonBinary.apply(f1);
+ }
+
+ private final Function2 super Field>, ? super Field>, ? extends Q> binary2(
+ Function2 super Field, ? super Field, ? extends Q> binary,
+ Function2 super Field, ? super Field, ? extends Q> nonBinary
+ ) {
+ return (f1, f2) -> binary(f1, f2) ? binary.apply(f1, f2) : nonBinary.apply(f1, f2);
+ }
+
private final Field> parseFieldPositionIf() {
if (parseFunctionNameIf("POSITION")) {
parse('(');
@@ -11534,7 +11553,6 @@ final class DefaultParseContext extends AbstractScope implements ParseContext {
boolean keywords = !substr;
parse('(');
Field f1 = parseField();
- boolean binary = f1.getDataType().isBinary();
if (substr || !(keywords = parseKeywordIf("FROM")))
parse(',');
Field f2 = toField(parseNumericOp());
@@ -11545,10 +11563,10 @@ final class DefaultParseContext extends AbstractScope implements ParseContext {
parse(')');
return f3 == null
- ? binary
+ ? binary(f1)
? DSL.binarySubstring(f1, f2)
: DSL.substring(f1, f2)
- : binary
+ : binary(f1)
? DSL.binarySubstring(f1, f2, f3)
: DSL.substring(f1, f2, f3);
}
diff --git a/jOOQ/src/main/java/org/jooq/impl/QOM.java b/jOOQ/src/main/java/org/jooq/impl/QOM.java
index fecfb90321..99d0859ee4 100644
--- a/jOOQ/src/main/java/org/jooq/impl/QOM.java
+++ b/jOOQ/src/main/java/org/jooq/impl/QOM.java
@@ -5826,6 +5826,24 @@ public final class QOM {
// Uuid
{}
+ /**
+ * The BINARY BIT LENGTH function.
+ *
+ * The length of a binary string in bits.
+ */
+ public /*sealed*/ interface BinaryBitLength
+ extends
+ UReturnsNullOnNullInput,
+ UOperator1, BinaryBitLength>,
+ org.jooq.Field
+ //permits
+ // BinaryBitLength
+ {
+ @NotNull default Field $bytes() { return $arg1(); }
+ @CheckReturnValue
+ @NotNull default BinaryBitLength $bytes(Field newBytes) { return $arg1(newBytes); }
+ }
+
/**
* The BINARY LENGTH function.
*
@@ -5899,6 +5917,24 @@ public final class QOM {
@NotNull default BinaryMd5 $bytes(Field newBytes) { return $arg1(newBytes); }
}
+ /**
+ * The BINARY OCTET LENGTH function.
+ *
+ * The length of a binary string in octets.
+ */
+ public /*sealed*/ interface BinaryOctetLength
+ extends
+ UReturnsNullOnNullInput,
+ UOperator1, BinaryOctetLength>,
+ org.jooq.Field
+ //permits
+ // BinaryOctetLength
+ {
+ @NotNull default Field $bytes() { return $arg1(); }
+ @CheckReturnValue
+ @NotNull default BinaryOctetLength $bytes(Field newBytes) { return $arg1(newBytes); }
+ }
+
/**
* The BINARY OVERLAY function.
*