package com.taobao.tddl.optimizer.core.ast.dml;
import com.taobao.tddl.optimizer.core.ASTNodeFactory;
import com.taobao.tddl.optimizer.core.ast.DMLNode;
import com.taobao.tddl.optimizer.core.ast.query.KVIndexNode;
import com.taobao.tddl.optimizer.core.ast.query.TableNode;
import com.taobao.tddl.optimizer.core.plan.IDataNodeExecutor;
import com.taobao.tddl.optimizer.core.plan.dml.IDelete;
import com.taobao.tddl.optimizer.exceptions.QueryException;
public class DeleteNode extends DMLNode<DeleteNode> {
public DeleteNode(TableNode table){
super(table);
}
public IDataNodeExecutor toDataNodeExecutor() throws QueryException {
IDelete delete = ASTNodeFactory.getInstance().createDelete();
delete.setConsistent(true);
delete.executeOn(this.getDataNode());
delete.setQueryTree(this.getNode().toDataNodeExecutor());
if (this.getNode().getActualTableName() != null) {
delete.setTableName(this.getNode().getActualTableName());
} else if (this.getNode() instanceof KVIndexNode) {
delete.setTableName(((KVIndexNode) this.getNode()).getIndexName());
} else {
delete.setTableName(this.getNode().getTableName());
}
delete.setIndexName(this.getNode().getIndexUsed().getName());
return delete;
}
public DeleteNode deepCopy() {
DeleteNode delete = new DeleteNode(null);
super.deepCopySelfTo(delete);
return delete;
}
public DeleteNode copy() {
DeleteNode delete = new DeleteNode(null);
super.copySelfTo(delete);
return delete;
}
}