You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by dw...@apache.org on 2010/03/08 20:35:47 UTC
svn commit: r920476 -
/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/MySQLDictionary.java
Author: dwoods
Date: Mon Mar 8 19:35:47 2010
New Revision: 920476
URL: http://svn.apache.org/viewvc?rev=920476&view=rev
Log:
OPENJPA-740 In MySQLDictionary use LONGBLOB, MEDIUMBLOB, TINYBLOB based on the column size, instead of always using BLOB which can only hold 64KB. Patch contributed by Simone Gianni.
Modified:
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/MySQLDictionary.java
Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/MySQLDictionary.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/MySQLDictionary.java?rev=920476&r1=920475&r2=920476&view=diff
==============================================================================
--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/MySQLDictionary.java (original)
+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/MySQLDictionary.java Mon Mar 8 19:35:47 2010
@@ -75,6 +75,10 @@
*/
public boolean optimizeMultiTableDeletes = false;
+ public static final String tinyBlobTypeName = "TINYBLOB";
+ public static final String mediumBlobTypeName = "MEDIUMBLOB";
+ public static final String longBlobTypeName = "LONGBLOB";
+
public MySQLDictionary() {
platform = "MySQL";
validationSQL = "SELECT NOW()";
@@ -416,4 +420,27 @@
}
return result;
}
+
+ /**
+ * OPENJPA-740 Special case for MySql special column types,
+ * like LONGTEXT, LONGBLOG etc..
+ * @see org.apache.openjpa.jdbc.sql.DBDictionary#getTypeName(org.apache.openjpa.jdbc.schema.Column)
+ */
+ @Override
+ public String getTypeName(Column col) {
+ if (col.getType() == Types.BLOB) {
+ if (col.getSize() <= 255)
+ return tinyBlobTypeName;
+ else if (col.getSize() <= 65535)
+ return blobTypeName; // old default of 64KB
+ else if (col.getSize() <= 16777215)
+ return mediumBlobTypeName;
+ else
+ return longBlobTypeName;
+ } else {
+ return super.getTypeName(col);
+ }
+ }
+
}
+