[jOOQ/jOOQ#14457] Add support for MySQL style ELT() function (equivalent to CHOOSE())
This commit is contained in:
parent
bf67ad6b8e
commit
a2c7b01331
@ -40,7 +40,7 @@ package org.jooq.impl;
|
||||
import static org.jooq.impl.DSL.choose;
|
||||
import static org.jooq.impl.DSL.function;
|
||||
import static org.jooq.impl.DSL.inline;
|
||||
import static org.jooq.impl.Names.N_CHOOSE;
|
||||
import static org.jooq.impl.Names.*;
|
||||
import static org.jooq.impl.Tools.EMPTY_FIELD;
|
||||
import static org.jooq.impl.Tools.nullSafeDataType;
|
||||
|
||||
@ -96,16 +96,12 @@ final class Choose<T> extends AbstractField<T> implements QOM.Choose<T> {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
case CUBRID:
|
||||
case DERBY:
|
||||
case FIREBIRD:
|
||||
case H2:
|
||||
case HSQLDB:
|
||||
case IGNITE:
|
||||
case MARIADB:
|
||||
case MYSQL:
|
||||
case POSTGRES:
|
||||
case SQLITE:
|
||||
case YUGABYTEDB: {
|
||||
@ -121,6 +117,14 @@ final class Choose<T> extends AbstractField<T> implements QOM.Choose<T> {
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
|
||||
case MARIADB:
|
||||
case MYSQL: {
|
||||
ctx.visit(function(N_ELT, getDataType(), Tools.combine(index, values)));
|
||||
break;
|
||||
}
|
||||
|
||||
default: {
|
||||
ctx.visit(function(N_CHOOSE, getDataType(), Tools.combine(index, values)));
|
||||
break;
|
||||
|
||||
@ -139,6 +139,7 @@ final class Names {
|
||||
static final Name N_DENSE_RANK = systemName("dense_rank");
|
||||
static final Name N_DIV = systemName("div");
|
||||
static final Name N_DUAL = systemName("dual");
|
||||
static final Name N_ELT = systemName("elt");
|
||||
static final Name N_EVERY = systemName("every");
|
||||
static final Name N_EXTRACT = systemName("extract");
|
||||
static final Name N_FIRST_VALUE = systemName("first_value");
|
||||
|
||||
@ -8560,14 +8560,14 @@ final class DefaultParseContext extends AbstractScope implements ParseContext {
|
||||
// [#6704] PostgreSQL E'...' escaped string literals
|
||||
if (characterNext() == '\'')
|
||||
return inline(parseStringLiteral());
|
||||
|
||||
else if ((field = parseFieldExtractIf()) != null)
|
||||
return field;
|
||||
else if (parseFunctionNameIf("EXP"))
|
||||
return exp((Field) parseFieldNumericOpParenthesised());
|
||||
|
||||
else if (parseFunctionNameIf("EPOCH"))
|
||||
return epoch(parseFieldParenthesised());
|
||||
else if ((field = parseFieldChooseIf()) != null)
|
||||
return field;
|
||||
|
||||
break;
|
||||
|
||||
@ -11143,7 +11143,7 @@ final class DefaultParseContext extends AbstractScope implements ParseContext {
|
||||
}
|
||||
|
||||
private final Field<?> parseFieldChooseIf() {
|
||||
if (parseFunctionNameIf("CHOOSE")) {
|
||||
if (parseFunctionNameIf("CHOOSE", "ELT")) {
|
||||
parse('(');
|
||||
Field<Integer> index = (Field<Integer>) parseField();
|
||||
parse(',');
|
||||
|
||||
Loading…
Reference in New Issue
Block a user