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