Skip to content

Commit

Permalink
[#11061] [#11070] [#11091] MD5
Browse files Browse the repository at this point in the history
  • Loading branch information
lukaseder committed Dec 11, 2020
1 parent c131c7c commit 9c7aca8
Show file tree
Hide file tree
Showing 2 changed files with 55 additions and 97 deletions.
90 changes: 18 additions & 72 deletions jOOQ/src/main/java/org/jooq/impl/DSL.java
Expand Up @@ -15216,6 +15216,24 @@ public static Field<String> ltrim(Field<String> string) {
return new Ltrim(string);
}

/**
* The <code>MD5</code> function.
*/
@NotNull
@Support
public static Field<String> md5(String string) {
return new Md5(Tools.field(string));
}

/**
* The <code>MD5</code> function.
*/
@NotNull
@Support
public static Field<String> md5(Field<String> string) {
return new Md5(string);
}

/**
* The <code>MID</code> function, an alias for the <code>SUBSTRING</code> function.
*/
Expand Down Expand Up @@ -16156,78 +16174,6 @@ public static Field<String> concat(Field<?>... fields) {
return new Concat(Tools.nullSafe(fields));
}

// ------------------------------------------------------------------------
// XXX Hash function factory
// ------------------------------------------------------------------------

/**
* Get the MySQL-specific <code>MD5()</code> function.
* <p>
* These are the implementations for various databases:
* <p>
* <table border="1">
* <tr>
* <th>Database</th>
* <th>Implementation</th>
* </tr>
* <tr>
* <td>MySQL</td>
* <td><code>MD5( ... )</code></td>
* </tr>
* <tr>
* <td>Oracle 11g</td>
* <td>
* <code>LOWER(RAWTOHEX(SYS.DBMS_CRYPTO.HASH(UTL_RAW.CAST_TO_RAW( ... ), SYS.DBMS_CRYPTO.HASH_MD5)))</code>
* </td>
* </tr>
* <tr>
* <td>Oracle 12c</td>
* <td>
* <code>LOWER(STANDARD_HASH( ... , 'MD5'))</code>
* </td>
* </tr>
* </table>
*/
@NotNull
@Support({ MARIADB, MYSQL, POSTGRES })
public static Field<String> md5(String string) {
return md5(Tools.field(string));
}

/**
* Get the MySQL-specific <code>MD5()</code> function.
* <p>
* These are the implementations for various databases:
* <p>
* <table border="1">
* <tr>
* <th>Database</th>
* <th>Implementation</th>
* </tr>
* <tr>
* <td>MySQL</td>
* <td><code>MD5( ... )</code></td>
* </tr>
* <tr>
* <td>Oracle 11g</td>
* <td>
* <code>LOWER(RAWTOHEX(SYS.DBMS_CRYPTO.HASH(UTL_RAW.CAST_TO_RAW( ... ), SYS.DBMS_CRYPTO.HASH_MD5)))</code>
* </td>
* </tr>
* <tr>
* <td>Oracle 12c</td>
* <td>
* <code>LOWER(STANDARD_HASH( ... , 'MD5'))</code>
* </td>
* </tr>
* </table>
*/
@NotNull
@Support({ MARIADB, MYSQL, POSTGRES })
public static Field<String> md5(Field<String> string) {
return new MD5(Tools.nullSafe(string));
}

// ------------------------------------------------------------------------
// XXX Date and time functions
// ------------------------------------------------------------------------
Expand Down
62 changes: 37 additions & 25 deletions jOOQ/src/main/java/org/jooq/impl/MD5.java
Expand Up @@ -37,45 +37,55 @@
*/
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 org.jooq.Context;
import org.jooq.Field;
import org.jooq.Name;
// ...
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 java.math.*;
import java.util.*;

/**
* @author Lukas Eder
* The <code>MD5</code> statement.
*/
final class MD5 extends AbstractField<String> {
@SuppressWarnings({ "rawtypes", "unchecked", "unused" })
final class Md5
extends
AbstractField<String>
{

private static final long serialVersionUID = 1L;

private final Field<String> string;

Md5(
Field<String> string
) {
super(N_MD5, allNotNull(VARCHAR, string));

this.string = nullSafeNotNull(string, VARCHAR);
}

// -------------------------------------------------------------------------
// XXX: QueryPart API
// -------------------------------------------------------------------------






/**
* Generated UID
*/
private static final long serialVersionUID = -7273879239726265322L;

private final Field<String> argument;

MD5(Field<String> argument) {
super(N_MD5, VARCHAR);

this.argument = argument;
}

@Override
public final void accept(Context<?> ctx) {
Expand Down Expand Up @@ -105,8 +115,10 @@ public final void accept(Context<?> ctx) {


default:
ctx.visit(N_MD5).sql('(').visit(argument).sql(')');
ctx.visit(N_MD5).sql('(').visit(string).sql(')');
break;
}
}


}

0 comments on commit 9c7aca8

Please sign in to comment.