code: Integer getColCharOctLen(int i) {
  
          int          size;
          int          type;
          ColumnSchema column;
  
          column = table.getColumn(i);
          type   = column.getDataType().getJDBCTypeCode();
  
          switch (type) {
  
              case Types.SQL_CHAR :
              case Types.SQL_CLOB :
              case Types.VARCHAR_IGNORECASE :
              case Types.SQL_VARCHAR : {
                  size = column.getDataType().precision > Integer.MAX_VALUE
                         ? Integer.MAX_VALUE
                         : (int) column.getDataType().precision;
  
                  if (size == 0) {}
                  else if (size > HALF_MAX_INT) {
                      size = 0;
                  } else {
                      size = 2 * size;
                  }
  
                  break;
              }
              default : {
                  size = 0;
  
                  break;
              }
          }
  
          return (size == 0) ? null
                             : ValuePool.getInt(size);
      }
docs: Retrieves the declared size, in bytes, for character-valued
  columns. <p>
  
  If the size cannot be represented in the range [0,Integer.MAX_VALUE],
  this returns null. <p>
  
  @param i zero-based column index
  @return the size, in bytes, for character-valued columns