package com.taobao.tddl.optimizer.core.plan; import java.util.Map; import com.taobao.tddl.common.jdbc.ParameterContext; import com.taobao.tddl.optimizer.core.CanVisit; /** * 描述执行计划 * * @since 5.0.0 */ public interface IDataNodeExecutor<RT extends IDataNodeExecutor> extends CanVisit { /** * 设定当前的查询在哪里执行 * * @param targetNode 执行的逻辑节点名字 * @return .. */ RT executeOn(String targetNode); /** * 获取当前执行节点在哪里执行 * * @return */ String getDataNode(); /** * 设定当前节点是要求一个实时一致性读写读取。 * * @param consistent * @return */ RT setConsistent(boolean consistent); /** * 当前查询是否要求是一个实时一致性读写请求。 * * @return */ boolean getConsistent(); /** * 设置发起请求的源hostName.可选,主要是结合requestID 两个属性来唯一的标志这个请求用的。 * * @param srcHostName * @return */ RT setRequestHostName(String srcHostName); /** * 获取请求的源hostName,主要是结合requestId两个属性来唯一的标志这个请求。 * 用于让所有的机器都能追踪到这个请求,并且能够估算请求运行的百分比。 * * @return */ String getRequestHostName(); /** * 设置这个请求的全局requestID * * @param requestId * @return */ RT setRequestID(Long requestId); /** * 获取这个请求的requestID * * @return */ Long getRequestID(); /** * 设置子请求ID. 用于标记一个查询是否能够被trace.如果能够被trace * 那么就应该设置hostName,全局requestID并且设置subRequestID * * @param subRequestID * @return */ RT setSubRequestID(Integer subRequestID); /** * 获取子请求ID 用于标记一个查询是否能够被trace.如果能够被trace * 那么就应该设置hostName,全局requestID并且设置subRequestID * * @return */ Integer getSubRequestID(); /** * 用于输出带缩进的字符串 * * @param inden * @return */ public String toStringWithInden(int inden); public Integer getThread(); /** * 表明一个建议的用于执行该节点的线程id * * @param thread */ public RT setThread(Integer thread); public RT assignment(Map<Integer, ParameterContext> parameterSettings); public Object getExtra(); public RT setExtra(Object obj); public boolean isUseBIO(); public RT setUseBIO(boolean useBIO); public boolean isStreaming(); public RT setStreaming(boolean streaming); public String getSql(); public RT setSql(String sql); // ------------------复制---------------- public RT copy(); }