You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2007/12/25 23:46:50 UTC
svn commit: r606823 - in
/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src:
main/java/org/apache/cayenne/access/ main/java/org/apache/cayenne/dba/
main/java/org/apache/cayenne/dba/frontbase/
main/java/org/apache/cayenne/dba/mysql/ main/java/...
Author: aadamchik
Date: Tue Dec 25 14:46:49 2007
New Revision: 606823
URL: http://svn.apache.org/viewvc?rev=606823&view=rev
Log:
CAY-116 Improve DbAdapter to support cascading drop constraints when DB does not
(support for a collection of statements for "drop table" operation)
Modified:
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DbGenerator.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/AutoAdapter.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/DbAdapter.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/JdbcAdapter.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/frontbase/FrontBaseAdapter.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/mysql/MySQLAdapter.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/oracle/OracleAdapter.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/postgres/PostgresAdapter.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/merge/DropTableToDb.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/dba/MockDbAdapter.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/AbstractAccessStack.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/MySQLStackAdapter.java
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DbGenerator.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DbGenerator.java?rev=606823&r1=606822&r2=606823&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DbGenerator.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DbGenerator.java Tue Dec 25 14:46:49 2007
@@ -66,7 +66,7 @@
protected DataDomain domain;
// stores generated SQL statements
- protected Map<String, String> dropTables;
+ protected Map<String, Collection<String>> dropTables;
protected Map<String, String> createTables;
protected Map<String, List<String>> createConstraints;
protected List<String> createPK;
@@ -149,7 +149,7 @@
* this method.
*/
protected void buildStatements() {
- dropTables = new HashMap<String, String>();
+ dropTables = new HashMap<String, Collection<String>>();
createTables = new HashMap<String, String>();
createConstraints = new HashMap<String, List<String>>();
@@ -161,7 +161,7 @@
String name = dbe.getName();
// build "DROP TABLE"
- dropTables.put(name, adapter.dropTable(dbe));
+ dropTables.put(name, adapter.dropTableStatements(dbe));
// build "CREATE TABLE"
createTables.put(name, adapter.createTable(dbe));
@@ -213,7 +213,7 @@
.listIterator(dbEntitiesInInsertOrder.size());
while (it.hasPrevious()) {
DbEntity ent = it.previous();
- list.add(dropTables.get(ent.getName()));
+ list.addAll(dropTables.get(ent.getName()));
}
}
@@ -283,7 +283,9 @@
.listIterator(dbEntitiesInInsertOrder.size());
while (it.hasPrevious()) {
DbEntity ent = it.previous();
- safeExecute(connection, dropTables.get(ent.getName()));
+ for (String statement : dropTables.get(ent.getName())) {
+ safeExecute(connection, statement);
+ }
}
}
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/AutoAdapter.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/AutoAdapter.java?rev=606823&r1=606822&r2=606823&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/AutoAdapter.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/AutoAdapter.java Tue Dec 25 14:46:49 2007
@@ -155,7 +155,8 @@
}
}
catch (SQLException e) {
- throw new CayenneRuntimeException("Error detecting database type: " + e.getLocalizedMessage(), e);
+ throw new CayenneRuntimeException("Error detecting database type: "
+ + e.getLocalizedMessage(), e);
}
if (adapter == null) {
@@ -204,8 +205,15 @@
return getAdapter().supportsBatchUpdates();
}
+ /**
+ * @deprecated since 3.0 as the deocarated method is deprecated.
+ */
public String dropTable(DbEntity entity) {
return getAdapter().dropTable(entity);
+ }
+
+ public Collection<String> dropTableStatements(DbEntity table) {
+ return getAdapter().dropTableStatements(table);
}
public String createTable(DbEntity entity) {
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/DbAdapter.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/DbAdapter.java?rev=606823&r1=606822&r2=606823&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/DbAdapter.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/DbAdapter.java Tue Dec 25 14:46:49 2007
@@ -52,17 +52,17 @@
*
* @since 1.0.4
*/
- public String getBatchTerminator();
+ String getBatchTerminator();
// TODO: deprecate and move into SQLAction implementation
- public QualifierTranslator getQualifierTranslator(QueryAssembler queryAssembler);
+ QualifierTranslator getQualifierTranslator(QueryAssembler queryAssembler);
/**
* Returns an instance of SQLAction that should handle the query.
*
* @since 1.2
*/
- public SQLAction getAction(Query query, DataNode node);
+ SQLAction getAction(Query query, DataNode node);
/**
* Returns true if a target database supports FK constraints.
@@ -70,14 +70,14 @@
* @deprecated since 3.0 - almost all DB's support FK's now and also this flag is less
* relevant for Cayenne now.
*/
- public boolean supportsFkConstraints();
+ boolean supportsFkConstraints();
/**
* Returns true if a target database supports UNIQUE constraints.
*
* @since 1.1
*/
- public boolean supportsUniqueConstraints();
+ boolean supportsUniqueConstraints();
/**
* Returns true if a target database supports key autogeneration. This feature also
@@ -85,57 +85,65 @@
*
* @since 1.2
*/
- public boolean supportsGeneratedKeys();
+ boolean supportsGeneratedKeys();
/**
* Returns <code>true</code> if the target database supports batch updates.
*/
- public boolean supportsBatchUpdates();
+ boolean supportsBatchUpdates();
/**
* Returns a SQL string that can be used to drop a database table corresponding to
- * <code>ent</code> parameter.
+ * entity parameter.
+ *
+ * @deprecated since 3.0 Cayenne supports 'dropTableStatements' to allow multiple
+ * statements to be executed when dropping the table.
+ */
+ String dropTable(DbEntity entity);
+
+ /**
+ * Returns a collection of SQL statements needed to drop a database table.
+ *
+ * @since 3.0
*/
- public String dropTable(DbEntity entity);
+ Collection<String> dropTableStatements(DbEntity table);
/**
* Returns a SQL string that can be used to create database table corresponding to
* <code>entity</code> parameter.
*/
- public String createTable(DbEntity entity);
+ String createTable(DbEntity entity);
/**
- * Returns a DDL string to create a unique constraint over a set of columns, or null
+ * Returns a DDL string to create a unique constraint over a set of columns, or null
* if the unique constraints are not supported.
*
* @since 1.1
*/
- public String createUniqueConstraint(DbEntity source, Collection<DbAttribute> columns);
+ String createUniqueConstraint(DbEntity source, Collection<DbAttribute> columns);
/**
* Returns a SQL string that can be used to create a foreign key constraint for the
* relationship, or null if foreign keys are not supported.
*/
- public String createFkConstraint(DbRelationship rel);
+ String createFkConstraint(DbRelationship rel);
/**
* Returns an array of RDBMS types that can be used with JDBC <code>type</code>.
* Valid JDBC types are defined in java.sql.Types.
*/
- public String[] externalTypesForJdbcType(int type);
+ String[] externalTypesForJdbcType(int type);
/**
* Returns a map of ExtendedTypes that is used to translate values between Java and
* JDBC layer.
- *
- * @see org.apache.cayenne.access.types.ExtendedType
*/
- public ExtendedTypeMap getExtendedTypes();
+ ExtendedTypeMap getExtendedTypes();
/**
* Returns primary key generator associated with this DbAdapter.
*/
- public PkGenerator getPkGenerator();
+ PkGenerator getPkGenerator();
/**
* Creates and returns a DbAttribute based on supplied parameters (usually obtained
@@ -150,7 +158,7 @@
* less than zero)
* @param allowNulls database column nullable parameter
*/
- public DbAttribute buildAttribute(
+ DbAttribute buildAttribute(
String name,
String typeName,
int type,
@@ -161,7 +169,7 @@
/**
* Binds an object value to PreparedStatement's numbered parameter.
*/
- public void bindParameter(
+ void bindParameter(
PreparedStatement statement,
Object object,
int pos,
@@ -172,13 +180,16 @@
* Returns the name of the table type (as returned by
* <code>DatabaseMetaData.getTableTypes</code>) for a simple user table.
*/
- public String tableTypeForTable();
+ String tableTypeForTable();
/**
* Returns the name of the table type (as returned by
* <code>DatabaseMetaData.getTableTypes</code>) for a view table.
*/
- public String tableTypeForView();
-
- public MergerFactory mergerFactory();
+ String tableTypeForView();
+
+ /**
+ * @since 3.0
+ */
+ MergerFactory mergerFactory();
}
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/JdbcAdapter.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/JdbcAdapter.java?rev=606823&r1=606822&r2=606823&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/JdbcAdapter.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/JdbcAdapter.java Tue Dec 25 14:46:49 2007
@@ -24,6 +24,7 @@
import java.sql.SQLException;
import java.util.Calendar;
import java.util.Collection;
+import java.util.Collections;
import java.util.GregorianCalendar;
import java.util.Iterator;
@@ -217,10 +218,19 @@
}
/**
- * Returns a SQL string to drop a table corresponding to <code>ent</code> DbEntity.
+ * Returns a SQL string to drop a table corresponding to table DbEntity.
+ *
+ * @deprecated since 3.0 in favor of "dropTableStatements"
+ */
+ public String dropTable(DbEntity table) {
+ return dropTableStatements(table).iterator().next();
+ }
+
+ /**
+ * @since 3.0
*/
- public String dropTable(DbEntity ent) {
- return "DROP TABLE " + ent.getFullyQualifiedName();
+ public Collection<String> dropTableStatements(DbEntity table) {
+ return Collections.singleton("DROP TABLE " + table.getFullyQualifiedName());
}
/**
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/frontbase/FrontBaseAdapter.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/frontbase/FrontBaseAdapter.java?rev=606823&r1=606822&r2=606823&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/frontbase/FrontBaseAdapter.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/frontbase/FrontBaseAdapter.java Tue Dec 25 14:46:49 2007
@@ -20,6 +20,8 @@
package org.apache.cayenne.dba.frontbase;
import java.sql.Types;
+import java.util.Collection;
+import java.util.Collections;
import java.util.Iterator;
import org.apache.cayenne.CayenneRuntimeException;
@@ -190,8 +192,11 @@
/**
* Adds the CASCADE option to the DROP TABLE clause.
*/
- public String dropTable(DbEntity ent) {
- return super.dropTable(ent) + " CASCADE";
+ @Override
+ public Collection<String> dropTableStatements(DbEntity table) {
+ return Collections.singleton("DROP TABLE "
+ + table.getFullyQualifiedName()
+ + " CASCADE");
}
protected PkGenerator createPkGenerator() {
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/mysql/MySQLAdapter.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/mysql/MySQLAdapter.java?rev=606823&r1=606822&r2=606823&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/mysql/MySQLAdapter.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/mysql/MySQLAdapter.java Tue Dec 25 14:46:49 2007
@@ -21,6 +21,8 @@
import java.sql.Types;
import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
@@ -46,13 +48,12 @@
* <p>
* Foreign key constraints are supported by InnoDB engine and NOT supported by MyISAM
* engine. This adapter by default assumes MyISAM, so
- * {@link org.apache.cayenne.dba.JdbcAdapter#supportsFkConstraints()} will return
- * false. Users can manually change this by calling
- * <em>setSupportsFkConstraints(true)</em> or better by using an
- * {@link org.apache.cayenne.dba.AutoAdapter}, i.e. not entering the adapter name at
- * all for the DataNode, letting Cayenne guess it in runtime. In the later case Cayenne
- * will check the <em>table_type</em> MySQL variable to detect whether InnoDB is the
- * default, and configure the adapter accordingly.
+ * {@link org.apache.cayenne.dba.JdbcAdapter#supportsFkConstraints()} will return false.
+ * Users can manually change this by calling <em>setSupportsFkConstraints(true)</em> or
+ * better by using an {@link org.apache.cayenne.dba.AutoAdapter}, i.e. not entering the
+ * adapter name at all for the DataNode, letting Cayenne guess it in runtime. In the later
+ * case Cayenne will check the <em>table_type</em> MySQL variable to detect whether
+ * InnoDB is the default, and configure the adapter accordingly.
* <h3>Sample Connection Settings</h3>
* <ul>
* <li>Adapter name: org.apache.cayenne.dba.mysql.MySQLAdapter</li>
@@ -81,8 +82,24 @@
.getEntityResolver()));
}
- public String dropTable(DbEntity entity) {
- return "DROP TABLE IF EXISTS " + entity.getFullyQualifiedName() + " CASCADE";
+ /**
+ * @deprecated since 3.0
+ */
+ @Override
+ public String dropTable(DbEntity table) {
+ return "DROP TABLE IF EXISTS " + table.getFullyQualifiedName() + " CASCADE";
+ }
+
+ /**
+ * @since 3.0
+ */
+ @Override
+ public Collection<String> dropTableStatements(DbEntity table) {
+ // note that CASCADE is a noop as of MySQL 5.0, so we have to use FK checks
+ // statement
+ return Arrays.asList("SET FOREIGN_KEY_CHECKS=0", "DROP TABLE IF EXISTS "
+ + table.getFullyQualifiedName()
+ + " CASCADE", "SET FOREIGN_KEY_CHECKS=1");
}
/**
@@ -171,7 +188,7 @@
protected PkGenerator createPkGenerator() {
return new MySQLPkGenerator();
}
-
+
/**
* @since 3.0
*/
@@ -225,7 +242,7 @@
// Note that according to MySQL docs, FK indexes are created automatically when
// constraint is defined, starting at MySQL 4.1.2
if (supportsFkConstraints()) {
- for (Relationship r : entity.getRelationships()) {
+ for (Relationship r : entity.getRelationships()) {
DbRelationship relationship = (DbRelationship) r;
if (relationship.getJoins().size() > 0
&& relationship.isToPK()
@@ -233,7 +250,9 @@
sqlBuffer.append(", KEY (");
- Iterator<DbAttribute> columns = relationship.getSourceAttributes().iterator();
+ Iterator<DbAttribute> columns = relationship
+ .getSourceAttributes()
+ .iterator();
DbAttribute column = columns.next();
sqlBuffer.append(column.getName());
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/oracle/OracleAdapter.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/oracle/OracleAdapter.java?rev=606823&r1=606822&r2=606823&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/oracle/OracleAdapter.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/oracle/OracleAdapter.java Tue Dec 25 14:46:49 2007
@@ -23,6 +23,8 @@
import java.lang.reflect.Method;
import java.sql.PreparedStatement;
import java.sql.Types;
+import java.util.Collection;
+import java.util.Collections;
import java.util.List;
import org.apache.cayenne.CayenneRuntimeException;
@@ -48,8 +50,8 @@
import org.apache.cayenne.query.UpdateBatchQuery;
/**
- * DbAdapter implementation for <a href="http://www.oracle.com">Oracle RDBMS </a>. Sample connection
- * settings to use with Oracle are shown below:
+ * DbAdapter implementation for <a href="http://www.oracle.com">Oracle RDBMS </a>. Sample
+ * connection settings to use with Oracle are shown below:
*
* <pre>
* test-oracle.cayenne.adapter = org.apache.cayenne.dba.oracle.OracleAdapter
@@ -171,7 +173,7 @@
// enable batch updates by default
setSupportsBatchUpdates(true);
}
-
+
/**
* @since 3.0
*/
@@ -219,9 +221,14 @@
/**
* Returns a query string to drop a table corresponding to <code>ent</code>
* DbEntity. Changes superclass behavior to drop all related foreign key constraints.
+ *
+ * @since 3.0
*/
- public String dropTable(DbEntity ent) {
- return "DROP TABLE " + ent.getFullyQualifiedName() + " CASCADE CONSTRAINTS";
+ @Override
+ public Collection<String> dropTableStatements(DbEntity table) {
+ return Collections.singleton("DROP TABLE "
+ + table.getFullyQualifiedName()
+ + " CASCADE CONSTRAINTS");
}
/**
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/postgres/PostgresAdapter.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/postgres/PostgresAdapter.java?rev=606823&r1=606822&r2=606823&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/postgres/PostgresAdapter.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/postgres/PostgresAdapter.java Tue Dec 25 14:46:49 2007
@@ -20,6 +20,8 @@
package org.apache.cayenne.dba.postgres;
import java.sql.Types;
+import java.util.Collection;
+import java.util.Collections;
import java.util.Iterator;
import org.apache.cayenne.CayenneRuntimeException;
@@ -224,11 +226,12 @@
/**
* Adds the CASCADE option to the DROP TABLE clause.
- *
- * @see JdbcAdapter#dropTable(DbEntity)
*/
- public String dropTable(DbEntity ent) {
- return super.dropTable(ent) + " CASCADE";
+ @Override
+ public Collection<String> dropTableStatements(DbEntity table) {
+ return Collections.singleton("DROP TABLE "
+ + table.getFullyQualifiedName()
+ + " CASCADE");
}
/**
@@ -244,7 +247,7 @@
protected PkGenerator createPkGenerator() {
return new PostgresPkGenerator();
}
-
+
public MergerFactory mergerFactory() {
return new PostgresMergerFactory();
}
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/merge/DropTableToDb.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/merge/DropTableToDb.java?rev=606823&r1=606822&r2=606823&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/merge/DropTableToDb.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/merge/DropTableToDb.java Tue Dec 25 14:46:49 2007
@@ -40,7 +40,7 @@
sqls.addAll(adapter.getPkGenerator().dropAutoPkStatements(
Collections.singletonList(entity)));
*/
- sqls.add(adapter.dropTable(entity));
+ sqls.addAll(adapter.dropTableStatements(entity));
return sqls;
}
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/dba/MockDbAdapter.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/dba/MockDbAdapter.java?rev=606823&r1=606822&r2=606823&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/dba/MockDbAdapter.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/dba/MockDbAdapter.java Tue Dec 25 14:46:49 2007
@@ -85,6 +85,10 @@
return null;
}
+ public Collection<String> dropTableStatements(DbEntity table) {
+ return null;
+ }
+
public String createTable(DbEntity ent) {
return null;
}
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/AbstractAccessStack.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/AbstractAccessStack.java?rev=606823&r1=606822&r2=606823&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/AbstractAccessStack.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/AbstractAccessStack.java Tue Dec 25 14:46:49 2007
@@ -206,15 +206,16 @@
continue;
}
- try {
- String dropSql = node.getAdapter().dropTable(ent);
- logObj.info(dropSql);
- stmt.execute(dropSql);
- }
- catch (SQLException sqe) {
- logObj.warn(
- "Can't drop table " + ent.getName() + ", ignoring...",
- sqe);
+ for (String dropSql : node.getAdapter().dropTableStatements(ent)) {
+ try {
+ logObj.info(dropSql);
+ stmt.execute(dropSql);
+ }
+ catch (SQLException sqe) {
+ logObj.warn(
+ "Can't drop table " + ent.getName() + ", ignoring...",
+ sqe);
+ }
}
}
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/MySQLStackAdapter.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/MySQLStackAdapter.java?rev=606823&r1=606822&r2=606823&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/MySQLStackAdapter.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/MySQLStackAdapter.java Tue Dec 25 14:46:49 2007
@@ -22,7 +22,6 @@
import java.sql.Connection;
import java.util.Arrays;
import java.util.Collection;
-import java.util.Map;
import org.apache.cayenne.dba.DbAdapter;
import org.apache.cayenne.map.DataMap;
@@ -72,33 +71,6 @@
Connection conn,
DataMap map,
Collection<String> tablesToDrop) throws Exception {
-
- // special DROP CONSTRAINT syntax for MySQL
-
- Map<String, Collection<String>> constraintsMap = getConstraints(
- conn,
- map,
- tablesToDrop);
-
- for (Map.Entry<String, Collection<String>> entry : constraintsMap.entrySet()) {
-
- Collection<String> constraints = entry.getValue();
- if (constraints == null || constraints.isEmpty()) {
- continue;
- }
-
- Object tableName = entry.getKey();
-
- for (String constraint : constraints) {
- StringBuffer drop = new StringBuffer();
- drop
- .append("ALTER TABLE ")
- .append(tableName)
- .append(" DROP FOREIGN KEY ")
- .append(constraint);
- executeDDL(conn, drop.toString());
- }
- }
Procedure proc = map.getProcedure("cayenne_tst_select_proc");
if (proc != null && proc.getDataMap() == map) {