diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/clause/OracleStorageClause.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/clause/OracleStorageClause.java index 74b7abbbcf..bd44953fde 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/clause/OracleStorageClause.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/clause/OracleStorageClause.java @@ -13,6 +13,7 @@ public class OracleStorageClause extends OracleSQLObjectImpl { private SQLExpr freeLists; private SQLExpr freeListGroups; private SQLExpr bufferPool; + private SQLExpr objno; @Override public void accept0(OracleASTVisitor visitor) { @@ -21,10 +22,19 @@ public class OracleStorageClause extends OracleSQLObjectImpl { acceptChild(visitor, freeLists); acceptChild(visitor, freeListGroups); acceptChild(visitor, bufferPool); + acceptChild(visitor, objno); } visitor.endVisit(this); } + public SQLExpr getObjno() { + return objno; + } + + public void setObjno(SQLExpr objno) { + this.objno = objno; + } + public SQLExpr getInitial() { return initial; } diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/parser/OracleCreateTableParser.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/parser/OracleCreateTableParser.java index a04aba09cb..93a9537dcb 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/parser/OracleCreateTableParser.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/parser/OracleCreateTableParser.java @@ -85,6 +85,10 @@ public class OracleCreateTableParser extends SQLCreateTableParser { lexer.nextToken(); storage.setBufferPool(this.exprParser.expr()); continue; + } else if (identifierEquals("OBJNO")) { + lexer.nextToken(); + storage.setObjno(this.exprParser.expr()); + continue; } break; diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/visitor/OracleOutputVisitor.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/visitor/OracleOutputVisitor.java index 10cba2a228..1cd2bd592a 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/visitor/OracleOutputVisitor.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/visitor/OracleOutputVisitor.java @@ -2493,17 +2493,22 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS if (x.getFreeLists() != null) { print(" FREELISTS "); - x.getInitial().accept(this); + x.getFreeLists().accept(this); } if (x.getFreeListGroups() != null) { print(" FREELIST GROUPS "); - x.getInitial().accept(this); + x.getFreeListGroups().accept(this); } if (x.getBufferPool() != null) { print(" BUFFER_POOL "); - x.getInitial().accept(this); + x.getBufferPool().accept(this); + } + + if (x.getObjno() != null) { + print(" OBJNO "); + x.getObjno().accept(this); } print(")"); diff --git a/src/test/java/com/alibaba/druid/sql/TestTransform.java b/src/test/java/com/alibaba/druid/sql/TestTransform.java index 4084f4827a..e9d5169a1b 100644 --- a/src/test/java/com/alibaba/druid/sql/TestTransform.java +++ b/src/test/java/com/alibaba/druid/sql/TestTransform.java @@ -263,6 +263,10 @@ public class TestTransform extends OracleTest { } else { String part = rs.getString(5); + if (part == null) { + continue; + } + int commentIndex = part.indexOf("--"); if (commentIndex != -1) { part = part.substring(0, commentIndex);