improved oracle sql parser.

This commit is contained in:
wenshao
2017-05-20 22:33:03 +08:00
parent 51139b00a6
commit 869c45695b
10 changed files with 94 additions and 76 deletions
@@ -52,18 +52,27 @@ public class OracleCreateTableTest18 extends OracleTest {
Assert.assertEquals(1, statementList.size());
Assert.assertEquals("CREATE TABLE dept_20 (\n" +
"\temployee_id NUMBER(4),\n" +
"\tlast_name VARCHAR2(10),\n" +
"\tjob_id VARCHAR2(9),\n" +
"\tmanager_id NUMBER(4),\n" +
"\thire_date DATE,\n" +
"\tsalary NUMBER(7, 2),\n" +
"\tcommission_pct NUMBER(7, 2),\n" +
"\tdepartment_id,\n" +
"\tCONSTRAINT fk_deptno FOREIGN KEY (department_id)\n" +
"\t\tREFERENCES departments (department_id)\n" +
")", //
Assert.assertEquals("CREATE TABLE \"SONAR\".\"AUTHORS\" (\n" +
"\t\"ID\" NUMBER(38, 0) NOT NULL ENABLE,\n" +
"\t\"PERSON_ID\" NUMBER(38, 0) NOT NULL ENABLE,\n" +
"\t\"LOGIN\" VARCHAR2(100 BYTE),\n" +
"\t\"CREATED_AT\" TIMESTAMP(6),\n" +
"\t\"UPDATED_AT\" TIMESTAMP(6),\n" +
"\tPRIMARY KEY (\"ID\")\n" +
"\t\tUSING INDEX\n" +
"\t\tPCTFREE 10\n" +
"\t\tINITRANS 2\n" +
"\t\tMAXTRANS 255\n" +
"\t\tCOMPUTE STATISTICS\n" +
"\t\tTABLESPACE \"USERS\"\n" +
"\t\tENABLE\n" +
")\n" +
"PCTFREE 10\n" +
"INITRANS 1\n" +
"MAXTRANS 255\n" +
"NOCOMPRESS\n" +
"LOGGING\n" +
"TABLESPACE \"USERS\"", //
SQLUtils.toSQLString(statement, JdbcConstants.ORACLE));
OracleSchemaStatVisitor visitor = new OracleSchemaStatVisitor();
@@ -57,22 +57,28 @@ public class OracleCreateTableTest19 extends OracleTest {
Assert.assertEquals(1, statementList.size());
Assert.assertEquals("CREATE TABLE \"SONAR\".\"ACTIVE_DASHBOARDS\" (" //
+ "\n\t\"ID\" NUMBER(38, 0) NOT NULL ENABLE," //
+ "\n\t\"DASHBOARD_ID\" NUMBER(38, 0) NOT NULL ENABLE," //
+ "\n\t\"USER_ID\" NUMBER(38, 0)," //
+ "\n\t\"ORDER_INDEX\" NUMBER(38, 0)," //
+ "\n\tPRIMARY KEY (\"ID\")" //
+ "\n\tUSING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS TABLESPACE \"USERS\" ENABLE"
+ "\n\tSTORAGE (INITIAL 65536 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)" //
+ "\n)" //
+ "\nPCTFREE 10" //
+ "\nINITRANS 1" //
+ "\nMAXTRANS 255" //
+ "\nNOCOMPRESS" //
+ "\nLOGGING" //
+ "\nTABLESPACE \"USERS\"" //
+ "\nSTORAGE (INITIAL 65536 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)", //
Assert.assertEquals("CREATE TABLE \"SONAR\".\"ACTIVE_DASHBOARDS\" (\n" +
"\t\"ID\" NUMBER(38, 0) NOT NULL ENABLE,\n" +
"\t\"DASHBOARD_ID\" NUMBER(38, 0) NOT NULL ENABLE,\n" +
"\t\"USER_ID\" NUMBER(38, 0),\n" +
"\t\"ORDER_INDEX\" NUMBER(38, 0),\n" +
"\tPRIMARY KEY (\"ID\")\n" +
"\t\tUSING INDEX\n" +
"\t\tPCTFREE 10\n" +
"\t\tINITRANS 2\n" +
"\t\tMAXTRANS 255\n" +
"\t\tCOMPUTE STATISTICS\n" +
"\t\tTABLESPACE \"USERS\"\n" +
"\t\tENABLE\n" +
"\t\tSTORAGE (INITIAL 65536 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)\n" +
")\n" +
"PCTFREE 10\n" +
"INITRANS 1\n" +
"MAXTRANS 255\n" +
"NOCOMPRESS\n" +
"LOGGING\n" +
"TABLESPACE \"USERS\"\n" +
"STORAGE (INITIAL 65536 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)", //
SQLUtils.toSQLString(statement, JdbcConstants.ORACLE));
OracleSchemaStatVisitor visitor = new OracleSchemaStatVisitor();
@@ -56,23 +56,29 @@ public class OracleCreateTableTest20 extends OracleTest {
Assert.assertEquals(1, statementList.size());
Assert.assertEquals("CREATE TABLE \"SONAR\".\"ACTIVE_RULE_NOTES\" (" //
+ "\n\t\"ID\" NUMBER(38, 0) NOT NULL ENABLE,"//
+ "\n\t\"CREATED_AT\" TIMESTAMP(6),"//
+ "\n\t\"UPDATED_AT\" TIMESTAMP(6),"//
+ "\n\t\"ACTIVE_RULE_ID\" NUMBER(38, 0),"//
+ "\n\t\"USER_LOGIN\" VARCHAR2(40 BYTE),"//
+ "\n\t\"DATA\" BLOB,"//
+ "\n\tPRIMARY KEY (\"ID\")"//
+ "\n\tUSING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS TABLESPACE \"USERS\" ENABLE"//
+ "\n)"//
+ "\nPCTFREE 10"//
+ "\nINITRANS 1"//
+ "\nMAXTRANS 255"//
+ "\nNOCOMPRESS"//
+ "\nLOGGING"//
+ "\nTABLESPACE \"USERS\""//
+ "\nLOB (\"DATA\") STORE AS SECUREFILE (TABLESPACE \"USERS\" ENABLE STORAGE IN ROW CHUNK 8192 NOCACHE LOGGING NOCOMPRESS KEEP_DUPLICATES)",//
Assert.assertEquals("CREATE TABLE \"SONAR\".\"ACTIVE_RULE_NOTES\" (\n" +
"\t\"ID\" NUMBER(38, 0) NOT NULL ENABLE,\n" +
"\t\"CREATED_AT\" TIMESTAMP(6),\n" +
"\t\"UPDATED_AT\" TIMESTAMP(6),\n" +
"\t\"ACTIVE_RULE_ID\" NUMBER(38, 0),\n" +
"\t\"USER_LOGIN\" VARCHAR2(40 BYTE),\n" +
"\t\"DATA\" BLOB,\n" +
"\tPRIMARY KEY (\"ID\")\n" +
"\t\tUSING INDEX\n" +
"\t\tPCTFREE 10\n" +
"\t\tINITRANS 2\n" +
"\t\tMAXTRANS 255\n" +
"\t\tCOMPUTE STATISTICS\n" +
"\t\tTABLESPACE \"USERS\"\n" +
"\t\tENABLE\n" +
")\n" +
"PCTFREE 10\n" +
"INITRANS 1\n" +
"MAXTRANS 255\n" +
"NOCOMPRESS\n" +
"LOGGING\n" +
"TABLESPACE \"USERS\"\n" +
"LOB (\"DATA\") STORE AS SECUREFILE (TABLESPACE \"USERS\" ENABLE STORAGE IN ROW CHUNK 8192 NOCACHE LOGGING NOCOMPRESS KEEP_DUPLICATES)",//
SQLUtils.toSQLString(statement, JdbcConstants.ORACLE));
OracleSchemaStatVisitor visitor = new OracleSchemaStatVisitor();
@@ -50,17 +50,19 @@ public class OracleCreateTableTest22 extends OracleTest {
Assert.assertEquals(1, statementList.size());
Assert.assertEquals("CREATE TABLE promotions_var2 ("
+ "\n\tpromo_id NUMBER(6),"
+ "\n\tpromo_name VARCHAR2(20),"
+ "\n\tpromo_category VARCHAR2(15),"
+ "\n\tpromo_cost NUMBER(10, 2),"
+ "\n\tpromo_begin_date DATE,"
+ "\n\tpromo_end_date DATE,"
+ "\n\tCONSTRAINT promo_id_u UNIQUE (promo_id)"
+ "\n\tUSING INDEX PCTFREE 20 TABLESPACE stocks"
+ "\n\tSTORAGE (INITIAL 8M)"
+ "\n)",//
Assert.assertEquals("CREATE TABLE promotions_var2 (\n" +
"\tpromo_id NUMBER(6),\n" +
"\tpromo_name VARCHAR2(20),\n" +
"\tpromo_category VARCHAR2(15),\n" +
"\tpromo_cost NUMBER(10, 2),\n" +
"\tpromo_begin_date DATE,\n" +
"\tpromo_end_date DATE,\n" +
"\tCONSTRAINT promo_id_u UNIQUE (promo_id)\n" +
"\t\tUSING INDEX\n" +
"\t\tPCTFREE 20\n" +
"\t\tTABLESPACE stocks\n" +
"\t\tSTORAGE (INITIAL 8M)\n" +
")",//
SQLUtils.toSQLString(stmt, JdbcConstants.ORACLE));
OracleSchemaStatVisitor visitor = new OracleSchemaStatVisitor();
@@ -51,17 +51,18 @@ public class OracleCreateTableTest27 extends OracleTest {
Assert.assertEquals(1, statementList.size());
Assert.assertEquals("CREATE TABLE dept_20 (" //
+ "\n\temployee_id NUMBER(4),"//
+ "\n\tlast_name VARCHAR2(10),"//
+ "\n\tjob_id VARCHAR2(9),"//
+ "\n\tmanager_id NUMBER(4),"//
+ "\n\thire_date DATE,"//
+ "\n\tsalary NUMBER(7, 2),"//
+ "\n\tcommission_pct NUMBER(7, 2),"//
+ "\n\tdepartment_id,"//
+ "\n\tCONSTRAINT fk_deptno FOREIGN KEY (department_id) REFERENCES departments (department_id)"//
+ "\n)",//
Assert.assertEquals("CREATE TABLE dept_20 (\n" +
"\temployee_id NUMBER(4),\n" +
"\tlast_name VARCHAR2(10),\n" +
"\tjob_id VARCHAR2(9),\n" +
"\tmanager_id NUMBER(4),\n" +
"\thire_date DATE,\n" +
"\tsalary NUMBER(7, 2),\n" +
"\tcommission_pct NUMBER(7, 2),\n" +
"\tdepartment_id,\n" +
"\tCONSTRAINT fk_deptno FOREIGN KEY (department_id)\n" +
"\t\tREFERENCES departments (department_id)\n" +
")",//
SQLUtils.toSQLString(stmt, JdbcConstants.ORACLE));
OracleSchemaStatVisitor visitor = new OracleSchemaStatVisitor();