forked from opengaussexamples/examples
add alter
This commit is contained in:
parent
3254457fb0
commit
d1a2e1647a
|
|
@ -6,6 +6,7 @@
|
||||||
<component name="ChangeListManager">
|
<component name="ChangeListManager">
|
||||||
<list default="true" id="d8d12963-4777-48e3-9669-309cf5e41d60" name="更改" comment="revise">
|
<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$/.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" />
|
<change beforePath="$PROJECT_DIR$/src/main/java/Parser/OracleParser.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/Parser/OracleParser.java" afterDir="false" />
|
||||||
</list>
|
</list>
|
||||||
<option name="SHOW_DIALOG" value="false" />
|
<option name="SHOW_DIALOG" value="false" />
|
||||||
|
|
@ -104,13 +105,6 @@
|
||||||
<option name="presentableId" value="Default" />
|
<option name="presentableId" value="Default" />
|
||||||
<updated>1723106789329</updated>
|
<updated>1723106789329</updated>
|
||||||
</task>
|
</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">
|
<task id="LOCAL-00006" summary="revise">
|
||||||
<created>1724164698153</created>
|
<created>1724164698153</created>
|
||||||
<option name="number" value="00006" />
|
<option name="number" value="00006" />
|
||||||
|
|
@ -447,7 +441,14 @@
|
||||||
<option name="project" value="LOCAL" />
|
<option name="project" value="LOCAL" />
|
||||||
<updated>1726198053495</updated>
|
<updated>1726198053495</updated>
|
||||||
</task>
|
</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 />
|
<servers />
|
||||||
</component>
|
</component>
|
||||||
<component name="Vcs.Log.Tabs.Properties">
|
<component name="Vcs.Log.Tabs.Properties">
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@ package Parser.AST.AlterTable;
|
||||||
import Lexer.Token;
|
import Lexer.Token;
|
||||||
import Parser.AST.ASTNode;
|
import Parser.AST.ASTNode;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class AlterModifyColumnNode extends ASTNode {
|
public class AlterModifyColumnNode extends ASTNode {
|
||||||
|
|
@ -44,4 +45,13 @@ public class AlterModifyColumnNode extends ASTNode {
|
||||||
child.visit(child, queryString);
|
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")) {
|
else if (parseTokens.get(i).hasType(Token.TokenType.KEYWORD) && parseTokens.get(i).getValue().equalsIgnoreCase("MODIFY")) {
|
||||||
tokens = new ArrayList<>();
|
tokens = new ArrayList<>();
|
||||||
tokens.add(parseTokens.get(i));
|
tokens.add(parseTokens.get(i));
|
||||||
|
AlterModifyColumnNode childNode = new AlterModifyColumnNode();
|
||||||
for (int j = i + 1; j < parseTokens.size(); j++) {
|
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(";")) {
|
if (parseTokens.get(j).hasType(Token.TokenType.SYMBOL) && parseTokens.get(j).getValue().equalsIgnoreCase(";")) {
|
||||||
i = j - 1;
|
i = j - 1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
tokens.add(parseTokens.get(j));
|
tokens.add(parseTokens.get(j));
|
||||||
}
|
}
|
||||||
ASTNode childNode = new AlterModifyColumnNode(tokens);
|
childNode.setTokens(tokens);
|
||||||
currentNode.addChild(childNode);
|
currentNode.addChild(childNode);
|
||||||
currentNode = childNode;
|
currentNode = childNode;
|
||||||
}
|
}
|
||||||
else if (parseTokens.get(i).hasType(Token.TokenType.KEYWORD) && parseTokens.get(i).getValue().equalsIgnoreCase("RENAME")) {
|
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(";")) {
|
else if (parseTokens.get(i).hasType(Token.TokenType.SYMBOL) && parseTokens.get(i).getValue().equals(";")) {
|
||||||
tokens = new ArrayList<>();
|
tokens = new ArrayList<>();
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue