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

Reply via email to