package com.zendesk.maxwell.replication;
import java.util.Iterator;
import java.util.List;
import com.google.code.or.binlog.impl.event.DeleteRowsEventV2;
import com.google.code.or.common.glossary.Row;
import com.google.code.or.common.glossary.column.BitColumn;
import com.zendesk.maxwell.MaxwellFilter;
import com.zendesk.maxwell.schema.Table;
public class DeleteRowsEvent extends AbstractRowsEvent {
private final com.google.code.or.binlog.impl.event.DeleteRowsEvent event;
public DeleteRowsEvent(com.google.code.or.binlog.impl.event.DeleteRowsEvent e, Table table, MaxwellFilter f, long lastHeartbeat) {
super(e, table, f, lastHeartbeat);
this.event = e;
}
public DeleteRowsEvent(DeleteRowsEventV2 e2, Table table, MaxwellFilter filter, long lastHeartbeat) {
super(e2, table, filter, lastHeartbeat);
com.google.code.or.binlog.impl.event.DeleteRowsEvent e = new com.google.code.or.binlog.impl.event.DeleteRowsEvent(e2.getHeader());
e.setBinlogFilename(e2.getBinlogFilename());
e.setColumnCount(e2.getColumnCount());
e.setRows(e2.getRows());
e.setTableId(e2.getTableId());
e.setUsedColumns(e2.getUsedColumns());
e.setReserved(e2.getReserved());
this.event = e;
}
@Override
public List<Row> getRows() {
return event.getRows();
}
@Override
public String sqlOperationString() {
return null;
}
@Override
public String toSQL() {
List<Row> rows = getRows();
if ( rows.isEmpty()) {
return null;
}
StringBuilder s = new StringBuilder();
s.append("DELETE FROM `" + this.table.getName() + "` WHERE id in (");
for(Iterator<Row> rowIter = getRows().iterator(); rowIter.hasNext(); ) {
int pkIndex = this.table.getPKIndex();
s.append(rowIter.next().getColumns().get(pkIndex).toString());
if ( rowIter.hasNext() )
s.append(",");
}
s.append(")");
return s.toString();
}
@Override
protected BitColumn getUsedColumns() {
return event.getUsedColumns();
}
@Override
public String getType() {
return "delete";
}
}