[jOOQ/jOOQ#14458] Add native DECODE() support in MemSQL and DECODE_ORACLE() support in MariaDB
This commit is contained in:
parent
a2c7b01331
commit
2bd55c87ca
@ -51,6 +51,8 @@ import static org.jooq.SQLDialect.HSQLDB;
|
||||
// ...
|
||||
import static org.jooq.SQLDialect.MARIADB;
|
||||
// ...
|
||||
// ...
|
||||
// ...
|
||||
import static org.jooq.SQLDialect.MYSQL;
|
||||
import static org.jooq.SQLDialect.POSTGRES;
|
||||
// ...
|
||||
@ -62,6 +64,7 @@ import static org.jooq.SQLDialect.SQLITE;
|
||||
import static org.jooq.SQLDialect.YUGABYTEDB;
|
||||
import static org.jooq.impl.DSL.function;
|
||||
import static org.jooq.impl.Names.N_DECODE;
|
||||
import static org.jooq.impl.Names.N_DECODE_ORACLE;
|
||||
import static org.jooq.impl.Names.N_MAP;
|
||||
import static org.jooq.impl.Tools.EMPTY_FIELD;
|
||||
|
||||
@ -87,7 +90,8 @@ extends
|
||||
implements
|
||||
QOM.Decode<V, T>
|
||||
{
|
||||
private static final Set<SQLDialect> EMULATE_DISTINCT = SQLDialect.supportedBy(CUBRID, DERBY, FIREBIRD, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTEDB);
|
||||
private static final Set<SQLDialect> EMULATE_DECODE_ORACLE = SQLDialect.supportedBy(MARIADB);
|
||||
private static final Set<SQLDialect> EMULATE_DISTINCT = SQLDialect.supportedUntil(CUBRID, DERBY, FIREBIRD, HSQLDB, MYSQL, POSTGRES, SQLITE, YUGABYTEDB);
|
||||
|
||||
|
||||
|
||||
@ -133,6 +137,8 @@ implements
|
||||
|
||||
|
||||
|
||||
else if (EMULATE_DECODE_ORACLE.contains(ctx.dialect()))
|
||||
ctx.visit(function(N_DECODE_ORACLE, getDataType(), args()));
|
||||
else
|
||||
ctx.visit(function(N_DECODE, getDataType(), args()));
|
||||
}
|
||||
|
||||
@ -134,6 +134,7 @@ final class Names {
|
||||
static final Name N_DAYS_BETWEEN = systemName("days_between");
|
||||
static final Name N_DB_NAME = systemName("db_name");
|
||||
static final Name N_DECODE = systemName("decode");
|
||||
static final Name N_DECODE_ORACLE = systemName("decode_oracle");
|
||||
static final Name N_DEFAULT = systemName("default");
|
||||
static final Name N_DELETED = systemName("deleted");
|
||||
static final Name N_DENSE_RANK = systemName("dense_rank");
|
||||
|
||||
@ -11123,7 +11123,7 @@ final class DefaultParseContext extends AbstractScope implements ParseContext {
|
||||
}
|
||||
|
||||
private final Field<?> parseFieldDecodeIf() {
|
||||
if (parseFunctionNameIf("DECODE", "MAP")) {
|
||||
if (parseFunctionNameIf("DECODE", "DECODE_ORACLE", "MAP")) {
|
||||
parse('(');
|
||||
List<Field<?>> fields = parseList(',', c -> c.parseField());
|
||||
int size = fields.size();
|
||||
|
||||
Loading…
Reference in New Issue
Block a user