presto-connector/src/main/java/com/facebook/presto/maxcompute/MaxComputeSplitManager.java [109:159]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    private List<PartitionSpec> extractPartition(Table table, TupleDomain<ColumnHandle> constraint)
            throws OdpsException
    {
        List<PartitionSpec> res = new ArrayList<>();
        List<PartitionSpec> allPartitions = table.getPartitionSpecs();
        Optional<Map<ColumnHandle, Domain>> domains = constraint.getDomains();
        if (domains.isPresent()) {
            Map<ColumnHandle, Domain> columnHandleDomainMap = domains.get();
            Map<String, Domain> columnConstant = columnHandleDomainMap.entrySet().stream().collect(Collectors.toMap(k -> ((MaxComputeColumnHandle) k.getKey()).getName(), k -> k.getValue()));

            for (PartitionSpec partition : allPartitions) {
                if (validateColumnValues(columnConstant, partition)) {
                    res.add(partition);
                }
            }
        }
        else {
            // If there is no constraint, default scan all partitions
            return allPartitions;
        }
        return res;
    }

    public static boolean validateColumnValues(Map<String, Domain> columnConstant, PartitionSpec partition)
    {
        Set<String> partitionColumns = partition.keys();
        for (String partitionColumn : partitionColumns) {
            if (!columnConstant.containsKey(partitionColumn)) {
                continue;
            }
            Domain domain = columnConstant.get(partitionColumn);
            Type columnType = domain.getType();

            String valueString = partition.get(partitionColumn);
            Object value;
            if (columnType instanceof BigintType) {
                value = Long.parseLong(valueString);
            }
            else if (columnType instanceof IntegerType) {
                value = Integer.parseInt(valueString);
            }
            else if (columnType instanceof DoubleType) {
                value = Double.parseDouble(valueString);
            }
            else if (columnType instanceof VarcharType) {
                value = Slices.utf8Slice(valueString);
            }
            else if (columnType instanceof BooleanType) {
                value = Boolean.parseBoolean(valueString);
            }
            else {
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



trino-connector/src/main/java/io/trino/plugin/maxcompute/MaxComputeSplitManager.java [109:159]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    private List<PartitionSpec> extractPartition(Table table, TupleDomain<ColumnHandle> constraint)
            throws OdpsException
    {
        List<PartitionSpec> res = new ArrayList<>();
        List<PartitionSpec> allPartitions = table.getPartitionSpecs();
        Optional<Map<ColumnHandle, Domain>> domains = constraint.getDomains();
        if (domains.isPresent()) {
            Map<ColumnHandle, Domain> columnHandleDomainMap = domains.get();
            Map<String, Domain> columnConstant = columnHandleDomainMap.entrySet().stream().collect(Collectors.toMap(k -> ((MaxComputeColumnHandle) k.getKey()).getName(), k -> k.getValue()));

            for (PartitionSpec partition : allPartitions) {
                if (validateColumnValues(columnConstant, partition)) {
                    res.add(partition);
                }
            }
        }
        else {
            // If there is no constraint, default scan all partitions
            return allPartitions;
        }
        return res;
    }

    public static boolean validateColumnValues(Map<String, Domain> columnConstant, PartitionSpec partition)
    {
        Set<String> partitionColumns = partition.keys();
        for (String partitionColumn : partitionColumns) {
            if (!columnConstant.containsKey(partitionColumn)) {
                continue;
            }
            Domain domain = columnConstant.get(partitionColumn);
            Type columnType = domain.getType();

            String valueString = partition.get(partitionColumn);
            Object value;
            if (columnType instanceof BigintType) {
                value = Long.parseLong(valueString);
            }
            else if (columnType instanceof IntegerType) {
                value = Integer.parseInt(valueString);
            }
            else if (columnType instanceof DoubleType) {
                value = Double.parseDouble(valueString);
            }
            else if (columnType instanceof VarcharType) {
                value = Slices.utf8Slice(valueString);
            }
            else if (columnType instanceof BooleanType) {
                value = Boolean.parseBoolean(valueString);
            }
            else {
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



