[jOOQ/jOOQ#10572] Support DELETE with aliasing
This commit is contained in:
parent
a6461d6311
commit
cd3ab3ffa6
@ -1905,14 +1905,16 @@ final class ParserImpl implements Parser {
|
||||
|
||||
parseKeywordIf(ctx, "FROM");
|
||||
Table<?> table = parseTableNameIf(ctx);
|
||||
if (table == null) {
|
||||
if (table == null)
|
||||
table = table(parseSelect(ctx));
|
||||
|
||||
if (parseKeywordIf(ctx, "AS"))
|
||||
table = table.as(parseIdentifier(ctx));
|
||||
else if (!peekKeyword(ctx, "WHERE", "ORDER BY", "LIMIT", "RETURNING"))
|
||||
table = table.as(parseIdentifierIf(ctx));
|
||||
}
|
||||
Name alias;
|
||||
if (parseKeywordIf(ctx, "AS"))
|
||||
table = table.as(parseIdentifier(ctx));
|
||||
else if (!peekKeyword(ctx, "USING", "WHERE", "ORDER BY", "LIMIT", "RETURNING")
|
||||
&& !peekKeyword(ctx, KEYWORDS_IN_STATEMENTS)
|
||||
&& (alias = parseIdentifierIf(ctx)) != null)
|
||||
table = table.as(alias);
|
||||
|
||||
ctx.scope(table);
|
||||
|
||||
@ -5864,7 +5866,7 @@ final class ParserImpl implements Parser {
|
||||
|
||||
if (parseKeywordIf(ctx, "AS"))
|
||||
alias = parseIdentifier(ctx);
|
||||
else if (!peekKeyword(ctx, KEYWORDS_IN_FROM))
|
||||
else if (!peekKeyword(ctx, KEYWORDS_IN_FROM) && !peekKeyword(ctx, KEYWORDS_IN_STATEMENTS))
|
||||
alias = parseIdentifierIf(ctx);
|
||||
|
||||
if (alias != null) {
|
||||
@ -6153,7 +6155,7 @@ final class ParserImpl implements Parser {
|
||||
|
||||
if (parseKeywordIf(ctx, "AS"))
|
||||
alias = parseIdentifier(ctx, true);
|
||||
else if (!peekKeyword(ctx, KEYWORDS_IN_SELECT))
|
||||
else if (!peekKeyword(ctx, KEYWORDS_IN_SELECT) && !peekKeyword(ctx, KEYWORDS_IN_STATEMENTS))
|
||||
alias = parseIdentifierIf(ctx, true);
|
||||
}
|
||||
|
||||
@ -12020,16 +12022,32 @@ final class ParserImpl implements Parser {
|
||||
REGR_SXY,
|
||||
}
|
||||
|
||||
private static final String[] KEYWORDS_IN_SELECT = {
|
||||
private static final String[] KEYWORDS_IN_STATEMENTS = {
|
||||
"ALTER",
|
||||
"BEGIN",
|
||||
"COMMENT",
|
||||
"CONNECT BY",
|
||||
"CREATE",
|
||||
"DECLARE",
|
||||
"DELETE",
|
||||
"DROP",
|
||||
"END",
|
||||
"END", // In T-SQL, semicolons are optional, so a T-SQL END clause might appear
|
||||
"GO", // The T-SQL statement batch delimiter, not a SELECT keyword
|
||||
"GRANT",
|
||||
"INSERT",
|
||||
"MERGE",
|
||||
"RENAME",
|
||||
"REVOKE",
|
||||
"SELECT",
|
||||
"SET",
|
||||
"TRUNCATE",
|
||||
"UPDATE",
|
||||
"USE",
|
||||
"VALUES",
|
||||
"WITH",
|
||||
};
|
||||
|
||||
private static final String[] KEYWORDS_IN_SELECT = {
|
||||
"CONNECT BY",
|
||||
"EXCEPT",
|
||||
"FETCH FIRST",
|
||||
"FETCH NEXT",
|
||||
@ -12040,49 +12058,29 @@ final class ParserImpl implements Parser {
|
||||
"FOR UPDATE",
|
||||
"FOR XML",
|
||||
"FROM",
|
||||
"GO",
|
||||
"GRANT",
|
||||
"GROUP BY",
|
||||
"HAVING",
|
||||
"INSERT",
|
||||
"INTERSECT",
|
||||
"INTO",
|
||||
"LIMIT",
|
||||
"MERGE",
|
||||
"MINUS",
|
||||
"OFFSET",
|
||||
"ORDER BY",
|
||||
"PARTITION BY",
|
||||
"QUALIFY",
|
||||
"RENAME",
|
||||
"RETURNING",
|
||||
"REVOKE",
|
||||
"ROWS",
|
||||
"SELECT",
|
||||
"SET",
|
||||
"START WITH",
|
||||
"TRUNCATE",
|
||||
"UNION",
|
||||
"UPDATE",
|
||||
"USE",
|
||||
"VALUES",
|
||||
"WHERE",
|
||||
"WINDOW",
|
||||
"WITH",
|
||||
};
|
||||
|
||||
private static final String[] KEYWORDS_IN_FROM = {
|
||||
"ALTER",
|
||||
"BEGIN",
|
||||
"COMMENT",
|
||||
private static final String[] KEYWORDS_IN_FROM = {
|
||||
"CONNECT BY",
|
||||
"CREATE",
|
||||
"CROSS APPLY",
|
||||
"CROSS JOIN",
|
||||
"DECLARE",
|
||||
"DELETE",
|
||||
"DROP",
|
||||
"END", // In T-SQL, semicolons are optional, so a T-SQL END clause might appear
|
||||
"EXCEPT",
|
||||
"FETCH FIRST",
|
||||
"FETCH NEXT",
|
||||
@ -12094,12 +12092,9 @@ final class ParserImpl implements Parser {
|
||||
"FOR XML",
|
||||
"FULL JOIN",
|
||||
"FULL OUTER JOIN",
|
||||
"GO", // The T-SQL statement batch delimiter, not a SELECT keyword
|
||||
"GRANT",
|
||||
"GROUP BY",
|
||||
"HAVING",
|
||||
"INNER JOIN",
|
||||
"INSERT",
|
||||
"INTERSECT",
|
||||
"INTO",
|
||||
"JOIN",
|
||||
@ -12108,7 +12103,6 @@ final class ParserImpl implements Parser {
|
||||
"LEFT OUTER JOIN",
|
||||
"LEFT SEMI JOIN",
|
||||
"LIMIT",
|
||||
"MERGE",
|
||||
"MINUS",
|
||||
"NATURAL FULL JOIN",
|
||||
"NATURAL FULL OUTER JOIN",
|
||||
@ -12124,27 +12118,18 @@ final class ParserImpl implements Parser {
|
||||
"OUTER APPLY",
|
||||
"PARTITION BY",
|
||||
"QUALIFY",
|
||||
"RENAME",
|
||||
"RETURNING",
|
||||
"REVOKE",
|
||||
"RIGHT ANTI JOIN",
|
||||
"RIGHT JOIN",
|
||||
"RIGHT OUTER JOIN",
|
||||
"RIGHT SEMI JOIN",
|
||||
"ROWS",
|
||||
"SELECT",
|
||||
"SET",
|
||||
"START WITH",
|
||||
"STRAIGHT_JOIN",
|
||||
"TRUNCATE",
|
||||
"UNION",
|
||||
"UPDATE",
|
||||
"USE",
|
||||
"USING",
|
||||
"VALUES",
|
||||
"WHERE",
|
||||
"WINDOW",
|
||||
"WITH",
|
||||
};
|
||||
|
||||
private static final String[] PIVOT_KEYWORDS = {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user