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.IReplace; public class PutNode extends DMLNode<PutNode> { public PutNode(TableNode table){ super(table); } public IDataNodeExecutor toDataNodeExecutor() { IReplace put = ASTNodeFactory.getInstance().createReplace(); if (this.getNode().getActualTableName() != null) { put.setTableName(this.getNode().getActualTableName()); } else if (this.getNode() instanceof KVIndexNode) { put.setTableName(((KVIndexNode) this.getNode()).getIndexName()); } else { put.setTableName(this.getNode().getTableName()); } put.setIndexName(this.getNode().getIndexUsed().getName()); put.setConsistent(true); put.setUpdateColumns(this.getColumns()); put.setUpdateValues(this.getValues()); put.executeOn(this.getDataNode()); return put; } public PutNode deepCopy() { PutNode put = new PutNode(null); super.deepCopySelfTo(put); return put; } public PutNode copy() { PutNode put = new PutNode(null); super.copySelfTo(put); return put; } }