[jOOQ/jOOQ#11535] Parser parses incorrect FOR UPDATE OF syntax,
depending on dialect
This commit is contained in:
parent
6e41431bc6
commit
13b24ba365
@ -171,9 +171,7 @@ final class Names {
|
||||
static final Name N_JSON_VALUE = unquotedName("json_value");
|
||||
static final Name N_JSONB_AGG = unquotedName("jsonb_agg");
|
||||
static final Name N_JSONB_BUILD_ARRAY = unquotedName("jsonb_build_array");
|
||||
static final Name N_JSONB_OBJECT = unquotedName("jsonb_object");
|
||||
static final Name N_JSONB_OBJECT_AGG = unquotedName("jsonb_object_agg");
|
||||
static final Name N_JSONB_OBJECTAGG = unquotedName("jsonb_objectagg");
|
||||
static final Name N_JSONB_PATH_EXISTS = unquotedName("jsonb_path_exists");
|
||||
static final Name N_JSONB_PATH_QUERY_FIRST = unquotedName("jsonb_path_query_first");
|
||||
static final Name N_LCASE = unquotedName("lcase");
|
||||
|
||||
@ -365,6 +365,7 @@ import static org.jooq.impl.SQLDataType.INTEGER;
|
||||
import static org.jooq.impl.SQLDataType.NVARCHAR;
|
||||
import static org.jooq.impl.SQLDataType.VARCHAR;
|
||||
import static org.jooq.impl.SelectQueryImpl.EMULATE_SELECT_INTO_AS_CTAS;
|
||||
import static org.jooq.impl.SelectQueryImpl.NO_SUPPORT_FOR_UPDATE_OF_FIELDS;
|
||||
import static org.jooq.impl.Tools.EMPTY_BYTE;
|
||||
import static org.jooq.impl.Tools.EMPTY_COLLECTION;
|
||||
import static org.jooq.impl.Tools.EMPTY_COMMON_TABLE_EXPRESSION;
|
||||
@ -374,6 +375,7 @@ import static org.jooq.impl.Tools.EMPTY_OBJECT;
|
||||
import static org.jooq.impl.Tools.EMPTY_QUERYPART;
|
||||
import static org.jooq.impl.Tools.EMPTY_ROW;
|
||||
import static org.jooq.impl.Tools.EMPTY_SORTFIELD;
|
||||
import static org.jooq.impl.Tools.EMPTY_TABLE;
|
||||
import static org.jooq.impl.Tools.aliased;
|
||||
import static org.jooq.impl.Tools.normaliseNameCase;
|
||||
import static org.jooq.impl.XMLPassingMechanism.BY_REF;
|
||||
@ -1326,7 +1328,10 @@ final class DefaultParseContext extends AbstractScope implements ParseContext {
|
||||
throw expected("UPDATE", "NO KEY UPDATE", "SHARE", "KEY SHARE", "XML", "JSON");
|
||||
|
||||
if (parseKeywordIf("OF"))
|
||||
result.setForUpdateOf(parseList(',', ParseContext::parseField));
|
||||
if (NO_SUPPORT_FOR_UPDATE_OF_FIELDS.contains(parseDialect()))
|
||||
result.setForUpdateOf(parseList(',', ParseContext::parseTable).toArray(EMPTY_TABLE));
|
||||
else
|
||||
result.setForUpdateOf(parseList(',', ParseContext::parseField));
|
||||
|
||||
if (parseKeywordIf("NOWAIT"))
|
||||
result.setForUpdateNoWait();
|
||||
|
||||
@ -293,6 +293,7 @@ final class SelectQueryImpl<R extends Record> extends AbstractResultQuery<R> imp
|
||||
|
||||
private static final Set<SQLDialect> SUPPORT_FULL_WITH_TIES = SQLDialect.supportedBy(H2, POSTGRES);
|
||||
private static final Set<SQLDialect> EMULATE_DISTINCT_ON = SQLDialect.supportedBy(DERBY, FIREBIRD, HSQLDB, MARIADB, MYSQL, SQLITE);
|
||||
static final Set<SQLDialect> NO_SUPPORT_FOR_UPDATE_OF_FIELDS = SQLDialect.supportedBy(MYSQL, POSTGRES);
|
||||
|
||||
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user