Search in sources :

Example 1 with ExecType

use of com.pingcap.tidb.tipb.ExecType in project tispark by pingcap.

the class TiDAGRequest method validateRequest.

/**
 * Check if a DAG request is valid.
 *
 * <p>Note: When constructing a DAG request, a executor with an ExecType of higher priority should
 * always be placed before those lower ones.
 *
 * @param dagRequest Request DAG.
 */
private void validateRequest(DAGRequest dagRequest) {
    requireNonNull(dagRequest);
    // check encode type
    requireNonNull(dagRequest.getEncodeType());
    // A DAG request must has at least one executor.
    if (dagRequest.getExecutorsCount() < 1) {
        throw new DAGRequestException("Invalid executors count:" + dagRequest.getExecutorsCount());
    }
    // A DAG request must start with TableScan or IndexScan Executor
    ExecType formerType = dagRequest.getExecutors(0).getTp();
    if (formerType != ExecType.TypeTableScan && formerType != ExecType.TypeIndexScan) {
        throw new DAGRequestException("Invalid first executor type:" + formerType + ", must one of TypeTableScan or TypeIndexScan");
    }
    for (int i = 1; i < dagRequest.getExecutorsCount(); i++) {
        ExecType currentType = dagRequest.getExecutors(i).getTp();
        if (EXEC_TYPE_PRIORITY_MAP.get(currentType) < EXEC_TYPE_PRIORITY_MAP.get(formerType)) {
            throw new DAGRequestException("Invalid executor priority.");
        }
        formerType = currentType;
    }
}
Also used : ExecType(com.pingcap.tidb.tipb.ExecType) DAGRequestException(com.pingcap.tikv.exception.DAGRequestException)

Aggregations

ExecType (com.pingcap.tidb.tipb.ExecType)1 DAGRequestException (com.pingcap.tikv.exception.DAGRequestException)1