odps-sdk/odps-sdk-core/src/main/java/com/aliyun/odps/tunnel/hasher/DefaultHashFactory.java [208:299]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      return hashVal;
    }
  }

  /**
   * String type hash
   */
  private static class BinaryHasher implements OdpsHasher<Binary> {

    @Override
    public int hash(Binary val) {
      if (val == null) {
        return 0;
      }

      return factoryMap.get(OdpsType.STRING).hash(val.toString());
    }
  }


  /**
   * String type hash
   */
  private static class CharHasher implements OdpsHasher<Char> {

    @Override
    public int hash(Char val) {
      if (val == null) {
        return 0;
      }

      return factoryMap.get(OdpsType.STRING).hash(val.getValue());
    }
  }

  /**
   * String type hash
   */
  private static class VarcharHasher implements OdpsHasher<Varchar> {

    @Override
    public int hash(Varchar val) {
      if (val == null) {
        return 0;
      }

      return factoryMap.get(OdpsType.STRING).hash(val.getValue());
    }
  }

  /**
   * Date type hash
   */
  private static class DateHasher implements OdpsHasher<LocalDate> {

    @Override
    public LocalDate normalizeType(Object value) {
      if (value instanceof java.util.Date) {
        return ZonedDateTime.ofInstant(Instant.ofEpochMilli(((Date) value).getTime()),
                                       ZoneId.of("UTC")).toLocalDate();
      }

      return OdpsHasher.super.normalizeType(value);
    }

    @Override
    public int hash(LocalDate val) {
      if (val == null) {
        return 0;
      }

      return factoryMap.get(OdpsType.BIGINT).hash(val.atStartOfDay(ZoneOffset.UTC).toEpochSecond());
    }
  }


  private static class DateTimeHasher implements OdpsHasher<ZonedDateTime> {

    @Override
    public ZonedDateTime normalizeType(Object value) {
      if (value instanceof java.util.Date) {
        return ZonedDateTime.ofInstant(Instant.ofEpochMilli(((Date) value).getTime()),
                                       ZoneId.of("UTC"));
      }

      return OdpsHasher.super.normalizeType(value);
    }

    @Override
    public int hash(ZonedDateTime val) {
      if (val == null) {
        return 0;
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



odps-sdk/odps-sdk-core/src/main/java/com/aliyun/odps/tunnel/hasher/LegacyHashFactory.java [189:280]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      return hashVal;
    }
  }

  /**
   * String type hash
   */
  private static class BinaryHasher implements OdpsHasher<Binary> {

    @Override
    public int hash(Binary val) {
      if (val == null) {
        return 0;
      }

      return factoryMap.get(OdpsType.STRING).hash(val.toString());
    }
  }


  /**
   * String type hash
   */
  private static class CharHasher implements OdpsHasher<Char> {

    @Override
    public int hash(Char val) {
      if (val == null) {
        return 0;
      }

      return factoryMap.get(OdpsType.STRING).hash(val.getValue());
    }
  }

  /**
   * String type hash
   */
  private static class VarcharHasher implements OdpsHasher<Varchar> {

    @Override
    public int hash(Varchar val) {
      if (val == null) {
        return 0;
      }

      return factoryMap.get(OdpsType.STRING).hash(val.getValue());
    }
  }

  /**
   * Date type hash
   */
  private static class DateHasher implements OdpsHasher<LocalDate> {

    @Override
    public LocalDate normalizeType(Object value) {
      if (value instanceof java.util.Date) {
        return ZonedDateTime.ofInstant(Instant.ofEpochMilli(((Date) value).getTime()),
                                       ZoneId.of("UTC")).toLocalDate();
      }

      return OdpsHasher.super.normalizeType(value);
    }

    @Override
    public int hash(LocalDate val) {
      if (val == null) {
        return 0;
      }

      return factoryMap.get(OdpsType.BIGINT).hash(val.atStartOfDay(ZoneOffset.UTC).toEpochSecond());
    }
  }


  private static class DateTimeHasher implements OdpsHasher<ZonedDateTime> {

    @Override
    public ZonedDateTime normalizeType(Object value) {
      if (value instanceof java.util.Date) {
        return ZonedDateTime.ofInstant(Instant.ofEpochMilli(((Date) value).getTime()),
                                       ZoneId.of("UTC"));
      }

      return OdpsHasher.super.normalizeType(value);
    }

    @Override
    public int hash(ZonedDateTime val) {
      if (val == null) {
        return 0;
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



