diff --git a/sqlTranslate/.idea/workspace.xml b/sqlTranslate/.idea/workspace.xml
index cee46f3eb..8304d3f7a 100644
--- a/sqlTranslate/.idea/workspace.xml
+++ b/sqlTranslate/.idea/workspace.xml
@@ -5,9 +5,10 @@
-
+
-
+
+
@@ -45,6 +46,8 @@
"Application.Main.executor": "Run",
"JUnit.testAlterTable.testAlterTable.executor": "Run",
"JUnit.testCommitRollbackExec.test.executor": "Run",
+ "JUnit.testCreateTable.executor": "Run",
+ "JUnit.testCreateTable.test.executor": "Run",
"RunOnceActivity.OpenProjectViewOnStart": "true",
"RunOnceActivity.ShowReadmeOnStart": "true",
"git-widget-placeholder": "master",
@@ -56,20 +59,7 @@
"settings.editor.selected.configurable": "preferences.pluginManager"
}
}]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
@@ -77,22 +67,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -113,20 +87,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
+
+
-
-
@@ -482,7 +475,7 @@
1726633703475
-
+
diff --git a/sqlTranslate/src/main/java/parser/OracleParser.java b/sqlTranslate/src/main/java/parser/OracleParser.java
index 9c6bf93b1..fb2c1d4ad 100644
--- a/sqlTranslate/src/main/java/parser/OracleParser.java
+++ b/sqlTranslate/src/main/java/parser/OracleParser.java
@@ -2362,7 +2362,7 @@ public class OracleParser {
ASTNode currentNode = root;
for (int i = 1; i < parseTokens.size(); i++) {
// match declare
- if (currentNode == root) {
+ if (currentNode == root && !(parseTokens.get(i).hasType(Token.TokenType.KEYWORD) && parseTokens.get(i).getValue().equalsIgnoreCase("BEGIN"))) {
for (int j = i; j < parseTokens.size(); j++) {
if (parseTokens.get(j).hasType(Token.TokenType.KEYWORD) && parseTokens.get(j).getValue().equalsIgnoreCase("BEGIN")) {
i = j - 1;
diff --git a/sqlTranslate/src/test/java/testCommitRollbackExec.java b/sqlTranslate/src/test/java/testCommitRollbackExec.java
index f5014755f..c825ef5eb 100644
--- a/sqlTranslate/src/test/java/testCommitRollbackExec.java
+++ b/sqlTranslate/src/test/java/testCommitRollbackExec.java
@@ -14,11 +14,13 @@ public class testCommitRollbackExec {
@BeforeEach
public void loadData()
{
- testSQL.add("BEGIN\n" +
+ testSQL.add("DECLARE\n" +
+ "BEGIN\n" +
" INSERT INTO my_table (id, value) VALUES (1, 'test');\n" +
" ROLLBACK;\n" +
"END;");
- testSQL.add("BEGIN\n" +
+ testSQL.add("DECLARE\n" +
+ "BEGIN\n" +
" INSERT INTO my_table (id, value) VALUES (1, 'test');\n" +
" COMMIT;\n" +
"END;");
diff --git a/sqlTranslate/src/test/java/testCreateTable.java b/sqlTranslate/src/test/java/testCreateTable.java
new file mode 100644
index 000000000..91d6c1397
--- /dev/null
+++ b/sqlTranslate/src/test/java/testCreateTable.java
@@ -0,0 +1,53 @@
+import config.CommonConfig;
+import generator.OpenGaussGenerator;
+import lexer.OracleLexer;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import parser.OracleParser;
+import parser.ast.ASTNode;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class testCreateTable {
+ List testSQL = new ArrayList<>();
+ @BeforeEach
+ public void loadData()
+ {
+ testSQL.add("CREATE TABLE employees (\n" +
+ " employee_id NUMBER PRIMARY KEY,\n" +
+ " first_name VARCHAR2(20) Check(first_name > '221'),\n" +
+ " last_name VARCHAR2(25) Check (last_name != '12813@163.com'),\n" +
+ " email VARCHAR2(25),\n" +
+ " hire_date DATE,\n" +
+ " CONSTRAINT chk_example CHECK (employee_id > 0)" +
+ ");");
+ System.out.println("===== test of the alter table =====");
+ System.out.println("The source DBMS is: " + CommonConfig.getSourceDB());
+ System.out.println("The target DBMS is: " + CommonConfig.getTargetDB());
+ System.out.println();
+ }
+
+ @Test
+ public void test()
+ {
+ int num = 1;
+ for (String sql : testSQL) {
+ System.out.println("===== test of the SQL" + num++ + " =====");
+ System.out.println("Input SQL: " + sql);
+ OracleLexer lexer = new OracleLexer(sql);
+ lexer.printTokens();
+ OracleParser parser = new OracleParser(lexer);
+ ASTNode root = parser.parse();
+ System.out.println("The AST of the input SQL: ");
+ System.out.println(root.getASTString());
+ System.out.println("The query String of the AST parsed from the input SQL: ");
+ System.out.println(root.toQueryString());
+ OpenGaussGenerator generator = new OpenGaussGenerator(root);
+ System.out.println("The converted query String: ");
+ System.out.println(generator.generate());
+
+ System.out.println();
+ }
+ }
+}