Search in sources :

Example 11 with ColumnRef

use of com.pingcap.tikv.expression.ColumnRef in project tispark by pingcap.

the class TiDAGRequestTest method selectRequestEquals.

private static boolean selectRequestEquals(TiDAGRequest lhs, TiDAGRequest rhs) {
    assertEquals(lhs.getFields().size(), rhs.getFields().size());
    Map<String, Integer> lhsMap = new HashMap<>();
    Map<String, Integer> rhsMap = new HashMap<>();
    for (int i = 0; i < lhs.getFields().size(); i++) {
        ColumnRef lCol = lhs.getFields().get(i);
        ColumnRef rCol = rhs.getFields().get(i);
        lhsMap.put(lCol.getName(), i);
        rhsMap.put(rCol.getName(), i);
    }
    for (int i = 0; i < lhs.getFields().size(); i++) {
        Expression lhsExpr = lhs.getFields().get(i);
        Expression rhsExpr = rhs.getFields().get(i);
        Expr lhsExprProto = ProtoConverter.toProto(lhsExpr, lhsMap);
        Expr rhsExprProto = ProtoConverter.toProto(rhsExpr, rhsMap);
        if (!lhsExprProto.equals(rhsExprProto))
            return false;
    }
    assertEquals(lhs.getAggregates().size(), rhs.getAggregates().size());
    for (int i = 0; i < lhs.getAggregates().size(); i++) {
        Expression lhsExpr = lhs.getAggregates().get(i);
        Expression rhsExpr = rhs.getAggregates().get(i);
        Expr lhsExprProto = ProtoConverter.toProto(lhsExpr, lhsMap);
        Expr rhsExprProto = ProtoConverter.toProto(rhsExpr, rhsMap);
        if (!lhsExprProto.equals(rhsExprProto))
            return false;
    }
    assertEquals(lhs.getGroupByItems().size(), rhs.getGroupByItems().size());
    for (int i = 0; i < lhs.getGroupByItems().size(); i++) {
        ByItem lhsItem = lhs.getGroupByItems().get(i);
        ByItem rhsItem = rhs.getGroupByItems().get(i);
        if (!lhsItem.toProto(lhsMap).equals(rhsItem.toProto(rhsMap)))
            return false;
    }
    assertEquals(lhs.getOrderByItems().size(), rhs.getOrderByItems().size());
    for (int i = 0; i < lhs.getOrderByItems().size(); i++) {
        ByItem lhsItem = lhs.getOrderByItems().get(i);
        ByItem rhsItem = rhs.getOrderByItems().get(i);
        if (!lhsItem.toProto(lhsMap).equals(rhsItem.toProto(rhsMap)))
            return false;
    }
    assertEquals(lhs.getRangesMaps().size(), rhs.getRangesMaps().size());
    assertEquals(lhs.getRangesMaps(), rhs.getRangesMaps());
    assertEquals(lhs.getFilters().size(), rhs.getFilters().size());
    for (int i = 0; i < lhs.getFilters().size(); i++) {
        Expression lhsItem = lhs.getFilters().get(i);
        Expression rhsItem = rhs.getFilters().get(i);
        Expr lhsExprProto = ProtoConverter.toProto(lhsItem);
        Expr rhsExprProto = ProtoConverter.toProto(rhsItem);
        if (!lhsExprProto.equals(rhsExprProto))
            return false;
    }
    assertEquals(lhs.getTableInfo().toProto(), rhs.getTableInfo().toProto());
    assertEquals(lhs.getLimit(), rhs.getLimit());
    assertEquals(lhs.isDistinct(), rhs.isDistinct());
    assertEquals(lhs.getIndexInfo().toProto(lhs.getTableInfo()), rhs.getIndexInfo().toProto(rhs.getTableInfo()));
    assertEquals(lhs.getStartTs(), rhs.getStartTs());
    assertEquals(lhs.getTimeZoneOffset(), rhs.getTimeZoneOffset());
    assertEquals(lhs.getFlags(), rhs.getFlags());
    return true;
}
Also used : ByItem(com.pingcap.tikv.expression.ByItem) Expr(com.pingcap.tidb.tipb.Expr) HashMap(java.util.HashMap) Expression(com.pingcap.tikv.expression.Expression) ByteString(com.google.protobuf.ByteString) ColumnRef(com.pingcap.tikv.expression.ColumnRef)

Aggregations

ColumnRef (com.pingcap.tikv.expression.ColumnRef)11 Expression (com.pingcap.tikv.expression.Expression)7 Test (org.junit.Test)7 Constant (com.pingcap.tikv.expression.Constant)5 TiTableInfo (com.pingcap.tikv.meta.TiTableInfo)5 TypedKey (com.pingcap.tikv.key.TypedKey)3 TiIndexInfo (com.pingcap.tikv.meta.TiIndexInfo)3 Range (com.google.common.collect.Range)2 IndexMatcher (com.pingcap.tikv.expression.visitor.IndexMatcher)2 TiIndexColumn (com.pingcap.tikv.meta.TiIndexColumn)2 HashMap (java.util.HashMap)2 ImmutableList (com.google.common.collect.ImmutableList)1 ByteString (com.google.protobuf.ByteString)1 ColumnInfo (com.pingcap.tidb.tipb.ColumnInfo)1 DAGRequest (com.pingcap.tidb.tipb.DAGRequest)1 Executor (com.pingcap.tidb.tipb.Executor)1 Expr (com.pingcap.tidb.tipb.Expr)1 IndexScan (com.pingcap.tidb.tipb.IndexScan)1 TableScan (com.pingcap.tidb.tipb.TableScan)1 DAGRequestException (com.pingcap.tikv.exception.DAGRequestException)1