提交 355833c4 authored 作者: Evgenij Ryazanov's avatar Evgenij Ryazanov

Extract Parser.readExpressionOrDefault()

上级 1762e152
...@@ -807,13 +807,7 @@ public class Parser { ...@@ -807,13 +807,7 @@ public class Parser {
do { do {
Column column = readTableColumn(filter); Column column = readTableColumn(filter);
read("="); read("=");
Expression expression; command.setAssignment(column, readExpressionOrDefault());
if (readIf("DEFAULT")) {
expression = ValueExpression.getDefault();
} else {
expression = readExpression();
}
command.setAssignment(column, expression);
} while (readIf(",")); } while (readIf(","));
} }
if (readIf("WHERE")) { if (readIf("WHERE")) {
...@@ -1298,13 +1292,7 @@ public class Parser { ...@@ -1298,13 +1292,7 @@ public class Parser {
} }
Column column = table.getColumn(columnName); Column column = table.getColumn(columnName);
read("="); read("=");
Expression expression; command.addAssignmentForDuplicate(column, readExpressionOrDefault());
if (readIf("DEFAULT")) {
expression = ValueExpression.getDefault();
} else {
expression = readExpression();
}
command.addAssignmentForDuplicate(column, expression);
} while (readIf(",")); } while (readIf(","));
} }
} }
...@@ -1350,13 +1338,7 @@ public class Parser { ...@@ -1350,13 +1338,7 @@ public class Parser {
do { do {
columnList.add(parseColumn(table)); columnList.add(parseColumn(table));
read("="); read("=");
Expression expression; values.add(readExpressionOrDefault());
if (readIf("DEFAULT")) {
expression = ValueExpression.getDefault();
} else {
expression = readExpression();
}
values.add(expression);
} while (readIf(",")); } while (readIf(","));
command.setColumns(columnList.toArray(new Column[0])); command.setColumns(columnList.toArray(new Column[0]));
command.addRow(values.toArray(new Expression[0])); command.addRow(values.toArray(new Expression[0]));
...@@ -2346,6 +2328,13 @@ public class Parser { ...@@ -2346,6 +2328,13 @@ public class Parser {
command.setSQL(sql); command.setSQL(sql);
} }
private Expression readExpressionOrDefault() {
if (readIf("DEFAULT")) {
return ValueExpression.getDefault();
}
return readExpression();
}
private Expression readExpression() { private Expression readExpression() {
Expression r = readAnd(); Expression r = readAnd();
while (readIf("OR")) { while (readIf("OR")) {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论