code: public boolean hasColumn(String columnName, int type, int size, boolean isNullable)
      {
          ColumnInfo info = (ColumnInfo) this.columnsByName.get(columnName.toUpperCase());
          if (info == null)
          {
              info = (ColumnInfo) this.columnsByName.get(columnName);
          }
          if (info != null)
          {
              if (info.isNullable() != isNullable) return false;
  
              type = normalizeType(type, -1);
              int infoType = normalizeType(info.getType(), info.getSize());
  
              if (type == Types.VARCHAR && size != info.getSize())
              {
                  return false;
              }
              if (type == Types.DOUBLE && info.getType() == Types.FLOAT)
              {
                  return info.getSize() == 8;
              }
  
              if (type == Types.DOUBLE && (info.getType() == Types.DECIMAL || info.getType() == Types.NUMERIC))
              {
                  return true;
              }
  
              if (type == Types.BIGINT)
              {
                  return infoType == type || infoType == Types.NUMERIC;
              }
  
              return infoType == type;
          }
  
          return false;
      }
docs: Does the table have a column matching the <code>name</code>, <code>type</code>, <code>size</code>
  and <code>isNullable</code> status?
  @param columnName The name of the column.
  @param type The JDBC {@link Types} type.
  @param size The size of the column.
  @param isNullable <code>true</code> if the column should be nullable.
  @return <code>true</code> if a matching column can be found, otherwise <code>false</code>.