forked from opengaussexamples/examples
add alter
This commit is contained in:
parent
3254457fb0
commit
d1a2e1647a
|
|
@ -6,6 +6,7 @@
|
|||
<component name="ChangeListManager">
|
||||
<list default="true" id="d8d12963-4777-48e3-9669-309cf5e41d60" name="更改" comment="revise">
|
||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/main/java/Parser/AST/AlterTable/AlterModifyColumnNode.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/Parser/AST/AlterTable/AlterModifyColumnNode.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/main/java/Parser/OracleParser.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/Parser/OracleParser.java" afterDir="false" />
|
||||
</list>
|
||||
<option name="SHOW_DIALOG" value="false" />
|
||||
|
|
@ -104,13 +105,6 @@
|
|||
<option name="presentableId" value="Default" />
|
||||
<updated>1723106789329</updated>
|
||||
</task>
|
||||
<task id="LOCAL-00005" summary="add functions">
|
||||
<created>1724145125754</created>
|
||||
<option name="number" value="00005" />
|
||||
<option name="presentableId" value="LOCAL-00005" />
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1724145125754</updated>
|
||||
</task>
|
||||
<task id="LOCAL-00006" summary="revise">
|
||||
<created>1724164698153</created>
|
||||
<option name="number" value="00006" />
|
||||
|
|
@ -447,7 +441,14 @@
|
|||
<option name="project" value="LOCAL" />
|
||||
<updated>1726198053495</updated>
|
||||
</task>
|
||||
<option name="localTasksCounter" value="54" />
|
||||
<task id="LOCAL-00054" summary="revise">
|
||||
<created>1726209430618</created>
|
||||
<option name="number" value="00054" />
|
||||
<option name="presentableId" value="LOCAL-00054" />
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1726209430619</updated>
|
||||
</task>
|
||||
<option name="localTasksCounter" value="55" />
|
||||
<servers />
|
||||
</component>
|
||||
<component name="Vcs.Log.Tabs.Properties">
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ package Parser.AST.AlterTable;
|
|||
import Lexer.Token;
|
||||
import Parser.AST.ASTNode;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class AlterModifyColumnNode extends ASTNode {
|
||||
|
|
@ -44,4 +45,13 @@ public class AlterModifyColumnNode extends ASTNode {
|
|||
child.visit(child, queryString);
|
||||
}
|
||||
}
|
||||
|
||||
public void ResetTokensbyNameTypeConstraint() {
|
||||
List <Token> tokens = new ArrayList<>();
|
||||
tokens.add(new Token(Token.TokenType.KEYWORD, "MODIFY"));
|
||||
tokens.add(columnName);
|
||||
tokens.add(columnType);
|
||||
tokens.add(new Token(Token.TokenType.SYMBOL, ";"));
|
||||
setTokens(tokens);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1116,19 +1116,70 @@ public class OracleParser {
|
|||
else if (parseTokens.get(i).hasType(Token.TokenType.KEYWORD) && parseTokens.get(i).getValue().equalsIgnoreCase("MODIFY")) {
|
||||
tokens = new ArrayList<>();
|
||||
tokens.add(parseTokens.get(i));
|
||||
AlterModifyColumnNode childNode = new AlterModifyColumnNode();
|
||||
for (int j = i + 1; j < parseTokens.size(); j++) {
|
||||
if (j == i + 1) {
|
||||
childNode.setColumnName(parseTokens.get(j));
|
||||
}
|
||||
if (j == i + 2) {
|
||||
childNode.setColumnType(parseTokens.get(j));
|
||||
}
|
||||
if (j > i + 3) {
|
||||
try {
|
||||
throw new ParseFailedException("Parse failed:There exists syntex error in the input sql!");
|
||||
}
|
||||
catch (ParseFailedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
break;
|
||||
}
|
||||
if (parseTokens.get(j).hasType(Token.TokenType.SYMBOL) && parseTokens.get(j).getValue().equalsIgnoreCase(";")) {
|
||||
i = j - 1;
|
||||
break;
|
||||
}
|
||||
tokens.add(parseTokens.get(j));
|
||||
}
|
||||
ASTNode childNode = new AlterModifyColumnNode(tokens);
|
||||
childNode.setTokens(tokens);
|
||||
currentNode.addChild(childNode);
|
||||
currentNode = childNode;
|
||||
}
|
||||
else if (parseTokens.get(i).hasType(Token.TokenType.KEYWORD) && parseTokens.get(i).getValue().equalsIgnoreCase("RENAME")) {
|
||||
|
||||
if (i + 1 < parseTokens.size() && parseTokens.get(i + 1).hasType(Token.TokenType.KEYWORD) && parseTokens.get(i + 1).getValue().equalsIgnoreCase("COLUMN")) {
|
||||
tokens = new ArrayList<>();
|
||||
tokens.add(parseTokens.get(i));
|
||||
for (int j = i + 1; j < parseTokens.size(); j++) {
|
||||
if (parseTokens.get(j).hasType(Token.TokenType.SYMBOL) && parseTokens.get(j).getValue().equalsIgnoreCase(";")) {
|
||||
i = j - 1;
|
||||
break;
|
||||
}
|
||||
tokens.add(parseTokens.get(j));
|
||||
}
|
||||
ASTNode childNode = new AlterRenameColumnNode(tokens);
|
||||
currentNode.addChild(childNode);
|
||||
currentNode = childNode;
|
||||
}
|
||||
else if (i + 1 < parseTokens.size() && parseTokens.get(i + 1).hasType(Token.TokenType.IDENTIFIER)) {
|
||||
tokens = new ArrayList<>();
|
||||
tokens.add(parseTokens.get(i));
|
||||
for (int j = i + 1; j < parseTokens.size(); j++) {
|
||||
if (parseTokens.get(j).hasType(Token.TokenType.SYMBOL) && parseTokens.get(j).getValue().equalsIgnoreCase(";")) {
|
||||
i = j - 1;
|
||||
break;
|
||||
}
|
||||
tokens.add(parseTokens.get(j));
|
||||
}
|
||||
ASTNode childNode = new AlterRenameTableNode(tokens);
|
||||
currentNode.addChild(childNode);
|
||||
currentNode = childNode;
|
||||
}
|
||||
else {
|
||||
try {
|
||||
throw new ParseFailedException("Parse failed:There exists syntex error in the input sql!");
|
||||
}
|
||||
catch (ParseFailedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (parseTokens.get(i).hasType(Token.TokenType.SYMBOL) && parseTokens.get(i).getValue().equals(";")) {
|
||||
tokens = new ArrayList<>();
|
||||
|
|
|
|||
Loading…
Reference in New Issue