You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@empire-db.apache.org by do...@apache.org on 2017/10/23 09:25:47 UTC
empire-db git commit: EMPIREDB-265 correctly escape object names for
DDL DROP statements
Repository: empire-db
Updated Branches:
refs/heads/master 13c6dad6b -> 65f5aa094
EMPIREDB-265
correctly escape object names for DDL DROP statements
Project: http://git-wip-us.apache.org/repos/asf/empire-db/repo
Commit: http://git-wip-us.apache.org/repos/asf/empire-db/commit/65f5aa09
Tree: http://git-wip-us.apache.org/repos/asf/empire-db/tree/65f5aa09
Diff: http://git-wip-us.apache.org/repos/asf/empire-db/diff/65f5aa09
Branch: refs/heads/master
Commit: 65f5aa094e410ccd8ec699785b40960130a5a4d7
Parents: 13c6dad
Author: Rainer Döbele <do...@apache.org>
Authored: Mon Oct 23 11:25:43 2017 +0200
Committer: Rainer Döbele <do...@apache.org>
Committed: Mon Oct 23 11:25:43 2017 +0200
----------------------------------------------------------------------
.../org/apache/empire/db/DBDDLGenerator.java | 25 +++++++++++++-------
.../empire/db/oracle/OracleDDLGenerator.java | 2 +-
2 files changed, 17 insertions(+), 10 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/empire-db/blob/65f5aa09/empire-db/src/main/java/org/apache/empire/db/DBDDLGenerator.java
----------------------------------------------------------------------
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBDDLGenerator.java b/empire-db/src/main/java/org/apache/empire/db/DBDDLGenerator.java
index 81d6343..26ba970 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBDDLGenerator.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBDDLGenerator.java
@@ -18,6 +18,7 @@
*/
package org.apache.empire.db;
+import org.apache.empire.commons.StringUtils;
import org.apache.empire.data.DataType;
import org.apache.empire.exceptions.InvalidArgumentException;
import org.apache.empire.exceptions.MiscellaneousErrorException;
@@ -211,6 +212,7 @@ public abstract class DBDDLGenerator<T extends DBDatabaseDriver>
if (dbo==null || dbo.getDatabase().getDriver()!=driver)
throw new InvalidArgumentException("dbo", dbo);
// Check Type of object
+ String schema = dbo.getDatabase().getSchema();
if (dbo instanceof DBDatabase)
{ // Database
switch (type)
@@ -219,7 +221,7 @@ public abstract class DBDDLGenerator<T extends DBDatabaseDriver>
createDatabase((DBDatabase) dbo, script);
return;
case DROP:
- dropObject(((DBDatabase) dbo).getSchema(), databaseObjectName, script);
+ dropObject(null, schema, databaseObjectName, script);
return;
default:
throw new NotImplementedException(this, "getDDLScript." + dbo.getClass().getName() + "." + type);
@@ -233,7 +235,7 @@ public abstract class DBDDLGenerator<T extends DBDatabaseDriver>
createTable((DBTable) dbo, script);
return;
case DROP:
- dropObject(((DBTable) dbo).getFullName(), "TABLE", script);
+ dropObject(schema, ((DBTable) dbo).getName(), "TABLE", script);
return;
default:
throw new NotImplementedException(this, "getDDLScript." + dbo.getClass().getName() + "." + type);
@@ -247,10 +249,10 @@ public abstract class DBDDLGenerator<T extends DBDatabaseDriver>
createView((DBView) dbo, script);
return;
case DROP:
- dropObject(((DBView) dbo).getFullName(), "VIEW", script);
+ dropObject(schema, ((DBView) dbo).getName(), "VIEW", script);
return;
case ALTER:
- dropObject(((DBView) dbo).getFullName(), "VIEW", script);
+ dropObject(schema, ((DBView) dbo).getName(), "VIEW", script);
createView((DBView) dbo, script);
return;
default:
@@ -265,7 +267,7 @@ public abstract class DBDDLGenerator<T extends DBDatabaseDriver>
createRelation((DBRelation) dbo, script);
return;
case DROP:
- dropObject(((DBRelation) dbo).getFullName(), "CONSTRAINT", script);
+ dropObject(schema, ((DBRelation) dbo).getName(), "CONSTRAINT", script);
return;
default:
throw new NotImplementedException(this, "getDDLScript." + dbo.getClass().getName() + "." + type);
@@ -279,7 +281,7 @@ public abstract class DBDDLGenerator<T extends DBDatabaseDriver>
createIndex(((DBIndex) dbo).getTable(), (DBIndex) dbo, script);
return;
case DROP:
- dropObject(((DBIndex) dbo).getFullName(), "INDEX", script);
+ dropObject(schema, ((DBIndex) dbo).getName(), "INDEX", script);
return;
default:
throw new NotImplementedException(this, "getDDLScript." + dbo.getClass().getName() + "." + type);
@@ -332,7 +334,7 @@ public abstract class DBDDLGenerator<T extends DBDatabaseDriver>
*/
protected void dropDatabase(DBDatabase db, DBSQLScript script)
{
- dropObject(db.getSchema(), "DATABASE", script);
+ dropObject(null, db.getSchema(), "DATABASE", script);
}
/**
@@ -566,15 +568,20 @@ public abstract class DBDDLGenerator<T extends DBDatabaseDriver>
* @param objType the type of object to delete (TABLE, COLUMN, VIEW, RELATION, etc)
* @param script the sql script to which to append the dll command(s)
*/
- protected void dropObject(String name, String objType, DBSQLScript script)
+ protected void dropObject(String schema, String name, String objType, DBSQLScript script)
{
- if (name == null || name.length() == 0)
+ if (StringUtils.isEmpty(name))
throw new InvalidArgumentException("name", name);
// Create Drop Statement
StringBuilder sql = new StringBuilder();
sql.append("DROP ");
sql.append(objType);
sql.append(" ");
+ if (StringUtils.isNotEmpty(schema))
+ { // append schema
+ sql.append(schema);
+ sql.append(".");
+ }
appendElementName(sql, name);
script.addStmt(sql);
}
http://git-wip-us.apache.org/repos/asf/empire-db/blob/65f5aa09/empire-db/src/main/java/org/apache/empire/db/oracle/OracleDDLGenerator.java
----------------------------------------------------------------------
diff --git a/empire-db/src/main/java/org/apache/empire/db/oracle/OracleDDLGenerator.java b/empire-db/src/main/java/org/apache/empire/db/oracle/OracleDDLGenerator.java
index ff683ae..4b39da5 100644
--- a/empire-db/src/main/java/org/apache/empire/db/oracle/OracleDDLGenerator.java
+++ b/empire-db/src/main/java/org/apache/empire/db/oracle/OracleDDLGenerator.java
@@ -111,7 +111,7 @@ public class OracleDDLGenerator extends DBDDLGenerator<DBDatabaseDriverOracle>
@Override
protected void dropDatabase(DBDatabase db, DBSQLScript script)
{
- dropObject(db.getSchema(), "USER", script);
+ dropObject(null, db.getSchema(), "USER", script);
}
/**