@Override
    public List<Column> getPartitionColumns(Map<ColumnId, Column> idToColumn) {
        List<Column> columns = MetaUtils.getColumnsByColumnIds(idToColumn, partitionColumnIds);
        for (int i = 0; i < columns.size(); i++) {
            Expr expr = partitionExprs.get(i).convertToColumnNameExpr(idToColumn);
            Column column = columns.get(i);
            if (expr.getType().getPrimitiveType() != PrimitiveType.INVALID_TYPE
                    && expr.getType().getPrimitiveType() != column.getType().getPrimitiveType()) {
                Column newColumn = new Column(column);
                newColumn.setType(expr.getType());
                columns.set(i, newColumn);
            }
        }
        return columns;
    }
@Test
    public void testInitUseSlotRef() {
        Column k1 = new Column("k1", new ScalarType(PrimitiveType.DATETIME), true, null, "", "");
        SlotRef slotRef = new SlotRef(tableName, "k1");
        partitionExprs.add(ColumnIdExpr.create(slotRef));
        List<Column> schema = Collections.singletonList(k1);
        ExpressionRangePartitionInfo expressionRangePartitionInfo = new ExpressionRangePartitionInfo(partitionExprs,
                schema, PartitionType.RANGE);
        List<Column> partitionColumns = expressionRangePartitionInfo.getPartitionColumns(
                MetaUtils.buildIdToColumn(schema));
        Assert.assertEquals(partitionColumns.size(), 1);
        Assert.assertEquals(partitionColumns.get(0), k1);
    }