From 9c7aca81ea0cbb702d2049264bbfd4ded95504f9 Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Fri, 11 Dec 2020 09:15:35 +0100 Subject: [PATCH] [jOOQ/jOOQ#11061] [jOOQ/jOOQ#11070] [jOOQ/jOOQ#11091] MD5 --- jOOQ/src/main/java/org/jooq/impl/DSL.java | 90 +++++------------------ jOOQ/src/main/java/org/jooq/impl/MD5.java | 72 ++++++++++-------- 2 files changed, 60 insertions(+), 102 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/impl/DSL.java b/jOOQ/src/main/java/org/jooq/impl/DSL.java index a641891b94..4b0dfb7bed 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DSL.java +++ b/jOOQ/src/main/java/org/jooq/impl/DSL.java @@ -15216,6 +15216,24 @@ public class DSL { return new Ltrim(string); } + /** + * The MD5 function. + */ + @NotNull + @Support + public static Field md5(String string) { + return new Md5(Tools.field(string)); + } + + /** + * The MD5 function. + */ + @NotNull + @Support + public static Field md5(Field string) { + return new Md5(string); + } + /** * The MID function, an alias for the SUBSTRING function. */ @@ -16156,78 +16174,6 @@ public class DSL { return new Concat(Tools.nullSafe(fields)); } - // ------------------------------------------------------------------------ - // XXX Hash function factory - // ------------------------------------------------------------------------ - - /** - * Get the MySQL-specific MD5() function. - *

- * These are the implementations for various databases: - *

- * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - *
DatabaseImplementation
MySQLMD5( ... )
Oracle 11g - * LOWER(RAWTOHEX(SYS.DBMS_CRYPTO.HASH(UTL_RAW.CAST_TO_RAW( ... ), SYS.DBMS_CRYPTO.HASH_MD5))) - *
Oracle 12c - * LOWER(STANDARD_HASH( ... , 'MD5')) - *
- */ - @NotNull - @Support({ MARIADB, MYSQL, POSTGRES }) - public static Field md5(String string) { - return md5(Tools.field(string)); - } - - /** - * Get the MySQL-specific MD5() function. - *

- * These are the implementations for various databases: - *

- * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - *
DatabaseImplementation
MySQLMD5( ... )
Oracle 11g - * LOWER(RAWTOHEX(SYS.DBMS_CRYPTO.HASH(UTL_RAW.CAST_TO_RAW( ... ), SYS.DBMS_CRYPTO.HASH_MD5))) - *
Oracle 12c - * LOWER(STANDARD_HASH( ... , 'MD5')) - *
- */ - @NotNull - @Support({ MARIADB, MYSQL, POSTGRES }) - public static Field md5(Field string) { - return new MD5(Tools.nullSafe(string)); - } - // ------------------------------------------------------------------------ // XXX Date and time functions // ------------------------------------------------------------------------ diff --git a/jOOQ/src/main/java/org/jooq/impl/MD5.java b/jOOQ/src/main/java/org/jooq/impl/MD5.java index 8768796a36..cee3ce6069 100644 --- a/jOOQ/src/main/java/org/jooq/impl/MD5.java +++ b/jOOQ/src/main/java/org/jooq/impl/MD5.java @@ -37,46 +37,56 @@ */ package org.jooq.impl; -import static org.jooq.impl.Keywords.K_VARCHAR; -import static org.jooq.impl.Names.N_CONVERT; -import static org.jooq.impl.Names.N_HASHBYTES; -import static org.jooq.impl.Names.N_LOWER; -import static org.jooq.impl.Names.N_MD5; -import static org.jooq.impl.Names.N_RAWTOHEX; -import static org.jooq.impl.Names.N_STANDARD_HASH; -import static org.jooq.impl.SQLDataType.VARCHAR; +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.Context; -import org.jooq.Field; -import org.jooq.Name; -// ... +import org.jooq.*; +import org.jooq.impl.*; // ... +import java.math.*; +import java.util.*; + /** - * @author Lukas Eder + * The MD5 statement. */ -final class MD5 extends AbstractField { +@SuppressWarnings({ "rawtypes", "unchecked", "unused" }) +final class Md5 +extends + AbstractField +{ + private static final long serialVersionUID = 1L; + private final Field string; + Md5( + Field string + ) { + super(N_MD5, allNotNull(VARCHAR, string)); - - - - - /** - * Generated UID - */ - private static final long serialVersionUID = -7273879239726265322L; - - private final Field argument; - - MD5(Field argument) { - super(N_MD5, VARCHAR); - - this.argument = argument; + this.string = nullSafeNotNull(string, VARCHAR); } + // ------------------------------------------------------------------------- + // XXX: QueryPart API + // ------------------------------------------------------------------------- + + + + + + + + + + @Override public final void accept(Context ctx) { switch (ctx.dialect()) { @@ -105,8 +115,10 @@ final class MD5 extends AbstractField { default: - ctx.visit(N_MD5).sql('(').visit(argument).sql(')'); + ctx.visit(N_MD5).sql('(').visit(string).sql(')'); break; } } + + }