diff --git a/oracleddlparser/src/main/jjtree/org/eclipse/persistence/tools/oracleddl/parser/DDLParser.jjt b/oracleddlparser/src/main/jjtree/org/eclipse/persistence/tools/oracleddl/parser/DDLParser.jjt
index 2035e3a..b7afcc5 100644
--- a/oracleddlparser/src/main/jjtree/org/eclipse/persistence/tools/oracleddl/parser/DDLParser.jjt
+++ b/oracleddlparser/src/main/jjtree/org/eclipse/persistence/tools/oracleddl/parser/DDLParser.jjt
@@ -316,6 +316,7 @@
     | <K_DELETE: "DELETE">
     | <K_DETERMINISTIC: "DETERMINISTIC">
     | <K_DOUBLE: "DOUBLE">
+    | <K_EDITIONABLE: "EDITIONABLE">
     | <K_ENABLE: "ENABLE">
     | <K_FINAL: "FINAL">
     | <K_FLOAT: "FLOAT">
@@ -335,6 +336,7 @@
     | <K_NCHAR: "NCHAR">
     | <K_NCLOB: "NCLOB">
     | <K_NOCOPY: "NOCOPY">
+    | <K_NONEDITIONABLE: "NONEDITIONABLE">
     | <K_NUMBER: "NUMBER">
     | <K_NUMERIC: "NUMERIC">
     | <K_NVARCHAR2: "NVARCHAR2">
@@ -377,6 +379,7 @@
     | <K_TIME: "TIME">
     | <K_TIMESTAMP: "TIMESTAMP">
     | <K_UROWID:"UROWID">
+    | <K_USING:"USING">
     | <K_VARCHAR2: "VARCHAR2">
     | <K_VARCHAR: "VARCHAR">
     | <K_VARRAY: "VARRAY">
@@ -415,6 +418,7 @@
       | t=<K_DELETE>
       | t=<K_DETERMINISTIC>
       | t=<K_DOUBLE>
+      | t=<K_EDITIONABLE>
       | t=<K_ENABLE>
       | t=<K_FINAL>
       | t=<K_FLOAT>
@@ -434,6 +438,7 @@
       | t=<K_NCHAR>
       | t=<K_NCLOB>
       | t=<K_NOCOPY>
+      | t=<K_NONEDITIONABLE>
       | t=<K_NUMBER>
       | t=<K_NUMERIC>
       | t=<K_NVARCHAR2>
@@ -476,6 +481,7 @@
       | t=<K_TIME>
       | t=<K_TIMESTAMP>
       | t=<K_UROWID>
+      | t=<K_USING>
       | t=<K_VARCHAR2>
       | t=<K_VARCHAR>
       | t=<K_VARRAY>
@@ -511,7 +517,7 @@
  String packageName = null;
  }
 {
-    <R_CREATE> [ orReplace() ] <K_PACKAGE>
+    <R_CREATE> [ orReplace() ] [ <K_EDITIONABLE> | <K_NONEDITIONABLE> ] <K_PACKAGE>
       dottedName=OracleObjectNamePossiblyDotted()
         {
           packageName = dottedName;
@@ -541,7 +547,7 @@
  String schema = null;
  String procedureName = null;}
 {
-    <R_CREATE> [ orReplace() ] <R_PROCEDURE>
+    <R_CREATE> [ orReplace() ] [ <K_EDITIONABLE> | <K_NONEDITIONABLE> ] <R_PROCEDURE>
       dottedName=OracleObjectNamePossiblyDotted()
         {
           procedureName = dottedName;
@@ -571,7 +577,7 @@
  String functionName = null;
  ArgumentType returnType = null;}
 {
-    <R_CREATE> [ orReplace() ] <R_FUNCTION>
+    <R_CREATE> [ orReplace() ] [ <K_EDITIONABLE> | <K_NONEDITIONABLE> ] <R_FUNCTION>
       dottedName=OracleObjectNamePossiblyDotted()
             {
           functionName = dottedName;
@@ -642,7 +648,7 @@
  boolean nestedTable = false;
 }
 {
-    <R_CREATE> [ orReplace() ] <R_TYPE>
+    <R_CREATE> [ orReplace() ] [ <K_EDITIONABLE> | <K_NONEDITIONABLE> ] <R_TYPE>
       dottedName=OracleObjectNamePossiblyDotted()
         {
           typeName = dottedName;
@@ -739,7 +745,7 @@
           <R_PRIMARY> <K_KEY> <O_OPENPAREN> pkList((TableType)enclosingType) <O_CLOSEPAREN>
         | <R_CHECK> <O_OPENPAREN> skipToClosingParen() <O_CLOSEPAREN>
         | <R_UNIQUE> <O_OPENPAREN> uniqList() <O_CLOSEPAREN> 
-      ) [ <K_ENABLE> ]
+      ) [ <K_USING> <R_INDEX> ] [ <K_ENABLE> ]
 }
 
 DatabaseType columnTypeSpec(CompositeDatabaseType enclosingType):
diff --git a/oracleddlparser/src/test/java/org/eclipse/persistence/tools/oracleddl/test/TestHelper.java b/oracleddlparser/src/test/java/org/eclipse/persistence/tools/oracleddl/test/TestHelper.java
index b008997..adedd01 100644
--- a/oracleddlparser/src/test/java/org/eclipse/persistence/tools/oracleddl/test/TestHelper.java
+++ b/oracleddlparser/src/test/java/org/eclipse/persistence/tools/oracleddl/test/TestHelper.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2011 Oracle. All rights reserved.
+ * Copyright (c) 2011, 2014 Oracle. All rights reserved.
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0
  * which accompanies this distribution.
@@ -21,7 +21,8 @@
 
 public class TestHelper {
 
-    public static final String DATABASE_DRIVER = "oracle.jdbc.OracleDriver";
+    public static final String DATABASE_DRIVER_KEY = "db.driver";
+    public static final String DEFAULT_DATABASE_DRIVER = "oracle.jdbc.OracleDriver";
     public static final String DATABASE_USERNAME_KEY = "db.user";
     public static final String DEFAULT_DATABASE_USERNAME = "scott";
     public static final String DATABASE_PASSWORD_KEY = "db.pwd";
@@ -39,7 +40,8 @@
         String username = System.getProperty(DATABASE_USERNAME_KEY, DEFAULT_DATABASE_USERNAME);
         String password = System.getProperty(DATABASE_PASSWORD_KEY, DEFAULT_DATABASE_PASSWORD);
         String url = System.getProperty(DATABASE_URL_KEY, DEFAULT_DATABASE_URL);
-        Class.forName(DATABASE_DRIVER);
+        String dbDriver = System.getProperty(DATABASE_DRIVER_KEY, DEFAULT_DATABASE_DRIVER);
+        Class.forName(dbDriver);
         return DriverManager.getConnection(url, username, password);
     }
 
diff --git a/oracleddlparser/src/test/java/org/eclipse/persistence/tools/oracleddl/test/databasetypebuilder/AnchoredTypesResolutionTestSuite.java b/oracleddlparser/src/test/java/org/eclipse/persistence/tools/oracleddl/test/databasetypebuilder/AnchoredTypesResolutionTestSuite.java
index cbed5bc..8d5c49a 100644
--- a/oracleddlparser/src/test/java/org/eclipse/persistence/tools/oracleddl/test/databasetypebuilder/AnchoredTypesResolutionTestSuite.java
+++ b/oracleddlparser/src/test/java/org/eclipse/persistence/tools/oracleddl/test/databasetypebuilder/AnchoredTypesResolutionTestSuite.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2012 Oracle. All rights reserved.
+ * Copyright (c) 2012, 2014 Oracle. All rights reserved.
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0
  * which accompanies this distribution.
@@ -129,11 +129,16 @@
     public void anchoredTypesTest1() {
         boolean worked = true;
         PLSQLPackageType plsqlPackageType = null;
+        String msg = null;
         try {
             plsqlPackageType = dtBuilder.buildPackages(conn, "", ANCHORED_TYPES_TEST4_PACKAGE).get(0);
         }
         catch (Exception e) {
             worked = false;
+            msg = e.getMessage();
+        }
+        if (!worked) {
+            fail(msg);
         }
         assertTrue(ANCHORED_TYPES_TEST4_PACKAGE + " should parse", worked);
         PLSQLType plsqlType1 = plsqlPackageType.getTypes().get(0);
