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 2008/05/08 13:00:05 UTC
svn commit: r654473 - in /cayenne/main/trunk: docs/doc/src/main/resources/
framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/mysql/
Author: aadamchik
Date: Thu May 8 04:00:04 2008
New Revision: 654473
URL: http://svn.apache.org/viewvc?rev=654473&view=rev
Log:
CAY-1050 MySQLSniffer should configure created adapter to use MySQL default engine for tables
Modified:
cayenne/main/trunk/docs/doc/src/main/resources/RELEASE-NOTES.txt
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/mysql/MySQLSniffer.java
Modified: cayenne/main/trunk/docs/doc/src/main/resources/RELEASE-NOTES.txt
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/docs/doc/src/main/resources/RELEASE-NOTES.txt?rev=654473&r1=654472&r2=654473&view=diff
==============================================================================
--- cayenne/main/trunk/docs/doc/src/main/resources/RELEASE-NOTES.txt (original)
+++ cayenne/main/trunk/docs/doc/src/main/resources/RELEASE-NOTES.txt Thu May 8 04:00:04 2008
@@ -39,6 +39,7 @@
CAY-1035 Replace QueryMetadata String cache policies with an enum
CAY-1038 Upgrade to Ashwood 2.0
CAY-1049 Refactor QueryAssembler/SelectTranslator
+CAY-1050 MySQLSniffer should configure created adapter to use MySQL default engine for tables
Bug fixes since M3:
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=654473&r1=654472&r2=654473&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 Thu May 8 04:00:04 2008
@@ -65,12 +65,18 @@
* @author Andrus Adamchik
*/
public class MySQLAdapter extends JdbcAdapter {
+
+ final static String DEFAULT_STORAGE_ENGINE = "InnoDB";
+
+ protected String storageEngine;
public MySQLAdapter() {
+
// init defaults
- this.setSupportsFkConstraints(false);
- this.setSupportsUniqueConstraints(true);
- this.setSupportsGeneratedKeys(true);
+ this.storageEngine = DEFAULT_STORAGE_ENGINE;
+ setSupportsFkConstraints(true);
+ setSupportsUniqueConstraints(true);
+ setSupportsGeneratedKeys(true);
}
/**
@@ -210,8 +216,11 @@
@Override
public String createTable(DbEntity entity) {
String ddlSQL = super.createTable(entity);
- // force InnoDB tables - by default constraints are enabled
- ddlSQL += " ENGINE=InnoDB";
+
+ if (storageEngine != null) {
+ ddlSQL += " ENGINE=" + storageEngine;
+ }
+
return ddlSQL;
}
@@ -287,7 +296,7 @@
sqlBuffer.append(" AUTO_INCREMENT");
}
}
-
+
@Override
public MergerFactory mergerFactory() {
return new MySQLMergerFactory();
@@ -304,4 +313,18 @@
}
}
}
+
+ /**
+ * @since 3.0
+ */
+ public String getStorageEngine() {
+ return storageEngine;
+ }
+
+ /**
+ * @since 3.0
+ */
+ public void setStorageEngine(String engine) {
+ this.storageEngine = engine;
+ }
}
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/mysql/MySQLSniffer.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/mysql/MySQLSniffer.java?rev=654473&r1=654472&r2=654473&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/mysql/MySQLSniffer.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/mysql/MySQLSniffer.java Thu May 8 04:00:04 2008
@@ -44,14 +44,21 @@
// if InnoDB is used as a default engine, allow PK
Statement statement = md.getConnection().createStatement();
boolean supportFK = false;
+ String adapterStorageEngine = MySQLAdapter.DEFAULT_STORAGE_ENGINE;
try {
+ // http://dev.mysql.com/doc/refman/5.0/en/storage-engines.html
+ // per link above "table type" concept is deprecated in favor of "storage
+ // engine". Not sure if we should check "storage_engine" variable and in what
+ // version of MySQL it got introduced...
ResultSet rs = statement.executeQuery("SHOW VARIABLES LIKE 'table_type'");
try {
if (rs.next()) {
- String tableType = rs.getString(2);
- supportFK = tableType != null
- && tableType.toUpperCase().equals("INNODB");
+ String storageEngine = rs.getString(2);
+ if (storageEngine != null) {
+ adapterStorageEngine = storageEngine;
+ supportFK = storageEngine.toUpperCase().equals("INNODB");
+ }
}
}
finally {
@@ -64,6 +71,7 @@
MySQLAdapter adapter = new MySQLAdapter();
adapter.setSupportsFkConstraints(supportFK);
+ adapter.setStorageEngine(adapterStorageEngine);
return adapter;
}
}