forked from opengaussexamples/examples
finish the framework of sqltranslate (createTab sql is now being supported!)
This commit is contained in:
parent
d3779f8b3c
commit
62dfa6da61
|
|
@ -7,8 +7,6 @@
|
|||
<list default="true" id="d8d12963-4777-48e3-9669-309cf5e41d60" name="更改" comment="coding">
|
||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/main/java/Generator/OpenGaussGenerator.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/Generator/OpenGaussGenerator.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/main/java/Main.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/Main.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" />
|
||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||
|
|
@ -232,7 +230,14 @@
|
|||
<option name="project" value="LOCAL" />
|
||||
<updated>1724507228242</updated>
|
||||
</task>
|
||||
<option name="localTasksCounter" value="19" />
|
||||
<task id="LOCAL-00019" summary="coding">
|
||||
<created>1724510094392</created>
|
||||
<option name="number" value="00019" />
|
||||
<option name="presentableId" value="LOCAL-00019" />
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1724510094392</updated>
|
||||
</task>
|
||||
<option name="localTasksCounter" value="20" />
|
||||
<servers />
|
||||
</component>
|
||||
<component name="Vcs.Log.Tabs.Properties">
|
||||
|
|
|
|||
|
|
@ -36,9 +36,81 @@ public class OpenGaussGenerator {
|
|||
}
|
||||
|
||||
private void ColumnTypeConvert(ColumnNode node) {
|
||||
// type convert
|
||||
if (node.getType().getValue().equalsIgnoreCase("NUMBER")) {
|
||||
node.setType(new Token(Token.TokenType.KEYWORD, "NUMERIC"));
|
||||
node.ResetTokensbyNameTypeConstraint();
|
||||
}
|
||||
if (node.getType().getValue().matches("(?i)NUMBER\\(.*?\\)")) {
|
||||
node.setType(new Token(Token.TokenType.KEYWORD, node.getType().getValue().replace("NUMBER", "DECIMAL")));
|
||||
node.ResetTokensbyNameTypeConstraint();
|
||||
}
|
||||
|
||||
if (node.getType().getValue().equalsIgnoreCase("VARCHAR2")) {
|
||||
node.setType(new Token(Token.TokenType.KEYWORD, "VARCHAR"));
|
||||
node.ResetTokensbyNameTypeConstraint();
|
||||
}
|
||||
if (node.getType().getValue().matches("(?i)VARCHAR2\\(.*?\\)")) {
|
||||
node.setType(new Token(Token.TokenType.KEYWORD, node.getType().getValue().replace("VARCHAR2", "VARCHAR")));
|
||||
node.ResetTokensbyNameTypeConstraint();
|
||||
}
|
||||
|
||||
if (node.getType().getValue().equalsIgnoreCase("RAW")) {
|
||||
node.setType(new Token(Token.TokenType.KEYWORD, "BYTEA"));
|
||||
node.ResetTokensbyNameTypeConstraint();
|
||||
}
|
||||
if (node.getType().getValue().matches("(?i)RAW\\(.*?\\)")) {
|
||||
node.setType(new Token(Token.TokenType.KEYWORD, node.getType().getValue().replace("RAW", "BYTEA")));
|
||||
node.ResetTokensbyNameTypeConstraint();
|
||||
}
|
||||
|
||||
if (node.getType().getValue().equalsIgnoreCase("BINARY_INTEGER")) {
|
||||
node.setType(new Token(Token.TokenType.KEYWORD, "INTEGER"));
|
||||
node.ResetTokensbyNameTypeConstraint();
|
||||
}
|
||||
|
||||
if (node.getType().getValue().equalsIgnoreCase("NCHAR")) {
|
||||
node.setType(new Token(Token.TokenType.KEYWORD, "VARCHAR"));
|
||||
node.ResetTokensbyNameTypeConstraint();
|
||||
}
|
||||
if (node.getType().getValue().matches("(?i)NCHAR\\(.*?\\)")) {
|
||||
node.setType(new Token(Token.TokenType.KEYWORD, node.getType().getValue().replace("NCHAR", "VARCHAR")));
|
||||
node.ResetTokensbyNameTypeConstraint();
|
||||
}
|
||||
|
||||
if (node.getType().getValue().equalsIgnoreCase("NVARCHAR2")) {
|
||||
node.setType(new Token(Token.TokenType.KEYWORD, "VARCHAR"));
|
||||
node.ResetTokensbyNameTypeConstraint();
|
||||
}
|
||||
if (node.getType().getValue().matches("(?i)NVARCHAR2\\(.*?\\)")) {
|
||||
node.setType(new Token(Token.TokenType.KEYWORD, node.getType().getValue().replace("NVARCHAR2", "VARCHAR")));
|
||||
node.ResetTokensbyNameTypeConstraint();
|
||||
}
|
||||
|
||||
if (node.getType().getValue().equalsIgnoreCase("NCLOB")) {
|
||||
node.setType(new Token(Token.TokenType.KEYWORD, "TEXT"));
|
||||
node.ResetTokensbyNameTypeConstraint();
|
||||
}
|
||||
|
||||
if (node.getType().getValue().equalsIgnoreCase("INTERVAL YEAR TO MONTH")) {
|
||||
node.setType(new Token(Token.TokenType.KEYWORD, "INTERVAL"));
|
||||
node.ResetTokensbyNameTypeConstraint();
|
||||
}
|
||||
|
||||
if (node.getType().getValue().equalsIgnoreCase("INTERVAL DAY TO SECOND")) {
|
||||
node.setType(new Token(Token.TokenType.KEYWORD, "INTERVAL"));
|
||||
node.ResetTokensbyNameTypeConstraint();
|
||||
}
|
||||
|
||||
// Impossible to convert
|
||||
if (
|
||||
node.getType().getValue().equalsIgnoreCase("TIMESTAMP WITH LOCAL TIME ZONE") ||
|
||||
node.getType().getValue().equalsIgnoreCase("LONG RAW") ||
|
||||
node.getType().getValue().equalsIgnoreCase("ROWID") ||
|
||||
node.getType().getValue().equalsIgnoreCase("UROWID") ||
|
||||
node.getType().getValue().equalsIgnoreCase("REF CURSOR")
|
||||
) {
|
||||
throw new GenerateFailedException("Unsupported type:" + node.getType().getValue() + "(OpenGauss doesn't support the keyword -- " + node.getType().getValue() + " or have any expression that keeps the same semantic!)");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue