提交 555e9ecc authored 作者: Evgenij Ryazanov's avatar Evgenij Ryazanov

Merge readSimpleTableFilter() and readSimpleTableFilterWithAliasExcludes()

上级 cee57f6c
...@@ -779,7 +779,7 @@ public class Parser { ...@@ -779,7 +779,7 @@ public class Parser {
Update command = new Update(session); Update command = new Update(session);
currentPrepared = command; currentPrepared = command;
int start = lastParseIndex; int start = lastParseIndex;
TableFilter filter = readSimpleTableFilter(0); TableFilter filter = readSimpleTableFilter(0, null);
command.setTableFilter(filter); command.setTableFilter(filter);
parseUpdateSetClause(command, filter, start); parseUpdateSetClause(command, filter, start);
return command; return command;
...@@ -839,28 +839,14 @@ public class Parser { ...@@ -839,28 +839,14 @@ public class Parser {
setSQL(command, "UPDATE", start); setSQL(command, "UPDATE", start);
} }
private TableFilter readSimpleTableFilter(int orderInFrom) { private TableFilter readSimpleTableFilter(int orderInFrom, Collection<String> excludeTokens) {
Table table = readTableOrView(); Table table = readTableOrView();
String alias = null; String alias = null;
if (readIf("AS")) { if (readIf("AS")) {
alias = readAliasIdentifier(); alias = readAliasIdentifier();
} else if (currentTokenType == IDENTIFIER) { } else if (currentTokenType == IDENTIFIER) {
if (!equalsToken("SET", currentToken)) { if (!equalsTokenIgnoreCase(currentToken, "SET")
// SET is not a keyword (PostgreSQL supports it as a table name) && (excludeTokens == null || !isTokenInList(excludeTokens))) {
alias = readAliasIdentifier();
}
}
return new TableFilter(session, table, alias, rightsChecked,
currentSelect, orderInFrom, null);
}
private TableFilter readSimpleTableFilterWithAliasExcludes(int orderInFrom, Collection<String> excludeTokens) {
Table table = readTableOrView();
String alias = null;
if (readIf("AS")) {
alias = readAliasIdentifier();
} else if (currentTokenType == IDENTIFIER) {
if (!equalsTokenIgnoreCase(currentToken, "SET") && !isTokenInList(excludeTokens)) {
// SET is not a keyword (PostgreSQL supports it as a table name) // SET is not a keyword (PostgreSQL supports it as a table name)
alias = readAliasIdentifier(); alias = readAliasIdentifier();
} }
...@@ -881,7 +867,7 @@ public class Parser { ...@@ -881,7 +867,7 @@ public class Parser {
readIdentifierWithSchema(); readIdentifierWithSchema();
read("FROM"); read("FROM");
} }
TableFilter filter = readSimpleTableFilter(0); TableFilter filter = readSimpleTableFilter(0, null);
command.setTableFilter(filter); command.setTableFilter(filter);
parseDeleteGivenTable(command, limit, start); parseDeleteGivenTable(command, limit, start);
return command; return command;
...@@ -1090,7 +1076,7 @@ public class Parser { ...@@ -1090,7 +1076,7 @@ public class Parser {
int start = lastParseIndex; int start = lastParseIndex;
read("INTO"); read("INTO");
List<String> excludeIdentifiers = Arrays.asList("USING", "KEY", "VALUES"); List<String> excludeIdentifiers = Arrays.asList("USING", "KEY", "VALUES");
TableFilter targetTableFilter = readSimpleTableFilterWithAliasExcludes(0, excludeIdentifiers); TableFilter targetTableFilter = readSimpleTableFilter(0, excludeIdentifiers);
command.setTargetTableFilter(targetTableFilter); command.setTargetTableFilter(targetTableFilter);
Table table = command.getTargetTable(); Table table = command.getTargetTable();
...@@ -1160,7 +1146,7 @@ public class Parser { ...@@ -1160,7 +1146,7 @@ public class Parser {
} else { } else {
/* Its a table name, simulate a query by building a select query for the table */ /* Its a table name, simulate a query by building a select query for the table */
List<String> excludeIdentifiers = Arrays.asList("ON"); List<String> excludeIdentifiers = Arrays.asList("ON");
TableFilter sourceTableFilter = readSimpleTableFilterWithAliasExcludes(0, excludeIdentifiers); TableFilter sourceTableFilter = readSimpleTableFilter(0, excludeIdentifiers);
command.setSourceTableFilter(sourceTableFilter); command.setSourceTableFilter(sourceTableFilter);
StringBuilder buff = new StringBuilder("SELECT * FROM ") StringBuilder buff = new StringBuilder("SELECT * FROM ")
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论