User: dsundstrom
Date: 02/04/12 13:00:47
Modified: src/main/org/jboss/ejb/plugins/cmp/jdbc JDBCStopCommand.java
SQLUtil.java
Log:
Fixed bug [ 532262 ] Relationship table names too long.
Names are now limited by the database meta data getMaxTableNameLength().
Revision Changes Path
1.13 +4 -2
jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCStopCommand.java
Index: JDBCStopCommand.java
===================================================================
RCS file:
/cvsroot/jboss/jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCStopCommand.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- JDBCStopCommand.java 10 Apr 2002 15:18:43 -0000 1.12
+++ JDBCStopCommand.java 12 Apr 2002 20:00:46 -0000 1.13
@@ -29,7 +29,7 @@
* @author <a href="mailto:[EMAIL PROTECTED]">Dain Sundstrom</a>
* @author <a href="mailto:[EMAIL PROTECTED]">Rickard �berg</a>
* @author <a href="mailto:[EMAIL PROTECTED]">Justin Forder</a>
- * @version $Revision: 1.12 $
+ * @version $Revision: 1.13 $
*/
public class JDBCStopCommand {
@@ -116,7 +116,9 @@
statement = con.createStatement();
// execute sql
- statement.executeUpdate("DROP TABLE " + tableName);
+ String sql = "DROP TABLE " + tableName;
+ log.debug("Executing SQL: " + sql);
+ statement.executeUpdate(sql);
}
finally
{
1.9 +16 -3 jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/SQLUtil.java
Index: SQLUtil.java
===================================================================
RCS file: /cvsroot/jboss/jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/SQLUtil.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- SQLUtil.java 10 Apr 2002 15:18:43 -0000 1.8
+++ SQLUtil.java 12 Apr 2002 20:00:46 -0000 1.9
@@ -15,6 +15,7 @@
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
+import java.util.zip.CRC32;
import org.jboss.deployment.DeploymentException;
import org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCEntityBridge;
@@ -26,7 +27,7 @@
* SQLUtil helps with building sql statements.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Dain Sundstrom</a>
- * @version $Revision: 1.8 $
+ * @version $Revision: 1.9 $
*/
public class SQLUtil {
public static String fixTableName(String tableName, DataSource dataSource)
@@ -35,13 +36,25 @@
Connection con = null;
try {
con = dataSource.getConnection();
+ DatabaseMetaData dmd = con.getMetaData();
+
+ // fix length
+ int maxLength = dmd.getMaxTableNameLength();
+ if(tableName.length() > maxLength) {
+ CRC32 crc = new CRC32();
+ crc.update(tableName.getBytes());
+ String nameCRC = Long.toString(crc.getValue(), 36);
+
+ tableName = tableName.substring(
+ 0,
+ maxLength - nameCRC.length() - 2);
+ tableName += "_" + nameCRC;
+ }
- // TODO: fix length
// TODO: check for SQL reserved word
// fix case
- DatabaseMetaData dmd = con.getMetaData();
if(dmd.storesLowerCaseIdentifiers()) {
tableName = tableName.toLowerCase();
} else if(dmd.storesUpperCaseIdentifiers()) {
_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development