public UpdateRowsEventInfo(TableInfo tableInfo, Long timestamp, String binlogFilename, Long binlogPosition, UpdateRowsEventData data) { super(tableInfo, UPDATE_EVENT, timestamp, binlogFilename, binlogPosition, data.getIncludedColumns(), data.getRows()); includedColumnsBeforeUpdate = data.getIncludedColumnsBeforeUpdate(); }
long tableNumber = update.getTableId(); BitSet includedColumns = update.getIncludedColumns(); List<Entry<Serializable[], Serializable[]>> rows = update.getRows(); Long ts = context.getClock().currentTimeInMillis(); int count = 0;
@Override public UpdateRowsEventData deserialize(ByteArrayInputStream inputStream) throws IOException { UpdateRowsEventData eventData = new UpdateRowsEventData(); eventData.setTableId(inputStream.readLong(6)); inputStream.skip(2); // reserved if (mayContainExtraInformation) { int extraInfoLength = inputStream.readInteger(2); inputStream.skip(extraInfoLength - 2); } int numberOfColumns = inputStream.readPackedInteger(); eventData.setIncludedColumnsBeforeUpdate(inputStream.readBitSet(numberOfColumns, true)); eventData.setIncludedColumns(inputStream.readBitSet(numberOfColumns, true)); eventData.setRows(deserializeRows(eventData, inputStream)); return eventData; }
private void processUpdateEvent(Event event) { UpdateRowsEventData data = event.getData(); Long tableId = data.getTableId(); List<Map.Entry<Serializable[], Serializable[]>> list = data.getRows(); for (Map.Entry<Serializable[], Serializable[]> entry : list) { addRow("UPDATE", tableId, entry.getValue()); } }
private List<Map.Entry<Serializable[], Serializable[]>> deserializeRows(UpdateRowsEventData eventData, ByteArrayInputStream inputStream) throws IOException { long tableId = eventData.getTableId(); BitSet includedColumnsBeforeUpdate = eventData.getIncludedColumnsBeforeUpdate(), includedColumns = eventData.getIncludedColumns(); List<Map.Entry<Serializable[], Serializable[]>> rows = new ArrayList<Map.Entry<Serializable[], Serializable[]>>(); while (inputStream.available() > 0) { rows.add(new AbstractMap.SimpleEntry<Serializable[], Serializable[]>( deserializeRow(tableId, includedColumnsBeforeUpdate, inputStream), deserializeRow(tableId, includedColumns, inputStream) )); } return rows; }
protected void assertRows(UpdateRowsEventData eventData, RowBuilder rows) { assertThat(eventData.getRows().size()).isEqualTo(rows.rows().size()); for (Map.Entry<Serializable[], Serializable[]> row : eventData.getRows()) { if (!rows.findUpdatedRow(row.getKey(), row.getValue())) { fail("Failed to find updated row: " + eventData); } } }
public Long getTableID() { EventData data = event.getData(); switch ( event.getHeader().getEventType() ) { case EXT_WRITE_ROWS: case WRITE_ROWS: return ((WriteRowsEventData) data).getTableId(); case EXT_UPDATE_ROWS: case UPDATE_ROWS: return ((UpdateRowsEventData) data).getTableId(); case EXT_DELETE_ROWS: case DELETE_ROWS: return ((DeleteRowsEventData) data).getTableId(); case TABLE_MAP: return ((TableMapEventData) data).getTableId(); } return null; }
private List<Map.Entry<Serializable[], Serializable[]>> deserializeRows(UpdateRowsEventData eventData, ByteArrayInputStream inputStream) throws IOException { long tableId = eventData.getTableId(); BitSet includedColumnsBeforeUpdate = eventData.getIncludedColumnsBeforeUpdate(), includedColumns = eventData.getIncludedColumns(); List<Map.Entry<Serializable[], Serializable[]>> rows = new ArrayList<Map.Entry<Serializable[], Serializable[]>>(); while (inputStream.available() > 0) { rows.add(new AbstractMap.SimpleEntry<Serializable[], Serializable[]>( deserializeRow(tableId, includedColumnsBeforeUpdate, inputStream), deserializeRow(tableId, includedColumns, inputStream) )); } return rows; }
UpdateRowsEventData d = (UpdateRowsEventData) eventData; if (d.getTableId() == recordTableId) { d.getRows().stream().map(Map.Entry::getValue).forEach(row -> { if (LOGGER.isInfoEnabled()) { LOGGER.debug("Pending update: {}", StringUtils.hex((byte[]) row[0]));
protected void assertRows(UpdateRowsEventData eventData, RowBuilder rows) { assertThat(eventData.getRows().size()).isEqualTo(rows.rows().size()); for (Map.Entry<Serializable[], Serializable[]> row : eventData.getRows()) { if (!rows.findUpdatedRow(row.getKey(), row.getValue())) { fail("Failed to find updated row: " + eventData); } } }
tableId = ((WriteRowsEventData) eventData).getTableId(); } else if (EventType.isUpdate(eventType)) { tableId = ((UpdateRowsEventData) eventData).getTableId(); } else if (EventType.isDelete(eventType)) { tableId = ((DeleteRowsEventData) eventData).getTableId();
case UPDATE_ROWS: case EXT_UPDATE_ROWS: for ( Map.Entry<Serializable[], Serializable[]> e : updateRowsData().getRows() ) { Serializable[] data = e.getValue(); Serializable[] oldData = e.getKey(); RowMap r = buildRowMap("update", position, nextPosition, data, table, updateRowsData().getIncludedColumns(), rowQuery); writeOldData(table, r, oldData, updateRowsData().getIncludedColumnsBeforeUpdate()); list.add(r);
@Override public UpdateRowsEventData deserialize(ByteArrayInputStream inputStream) throws IOException { UpdateRowsEventData eventData = new UpdateRowsEventData(); eventData.setTableId(inputStream.readLong(6)); inputStream.skip(2); // reserved if (mayContainExtraInformation) { int extraInfoLength = inputStream.readInteger(2); inputStream.skip(extraInfoLength - 2); } int numberOfColumns = inputStream.readPackedInteger(); eventData.setIncludedColumnsBeforeUpdate(inputStream.readBitSet(numberOfColumns, true)); eventData.setIncludedColumns(inputStream.readBitSet(numberOfColumns, true)); eventData.setRows(deserializeRows(eventData, inputStream)); return eventData; }
for (Map.Entry<Serializable[], Serializable[]> row : ((UpdateRowsEventData) eventData).getRows()) { Serializable[] newValue = row.getValue(); byte[] data = newValue[2] instanceof byte[] ? (byte[]) newValue[2]
public UpdateRowsEventInfo(TableInfo tableInfo, Long timestamp, String binlogFilename, Long binlogPosition, UpdateRowsEventData data) { super(tableInfo, UPDATE_EVENT, timestamp, binlogFilename, binlogPosition, data.getIncludedColumns(), data.getRows()); includedColumnsBeforeUpdate = data.getIncludedColumnsBeforeUpdate(); }