long tableNumber = write.getTableId(); BitSet includedColumns = write.getIncludedColumns(); RecordsForTable recordMaker = recordMakers.forTable(tableNumber, includedColumns, super::enqueueRecord); if (recordMaker != null) { List<Serializable[]> rows = write.getRows(); Long ts = context.getClock().currentTimeInMillis(); int count = 0;
@Override public WriteRowsEventData deserialize(ByteArrayInputStream inputStream) throws IOException { WriteRowsEventData eventData = new WriteRowsEventData(); 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.setIncludedColumns(inputStream.readBitSet(numberOfColumns, true)); eventData.setRows(deserializeRows(eventData.getTableId(), eventData.getIncludedColumns(), inputStream)); return eventData; }
public InsertRowsEventInfo(TableInfo tableInfo, Long timestamp, String binlogFilename, Long binlogPosition, WriteRowsEventData data) { super(tableInfo, INSERT_EVENT, timestamp, binlogFilename, binlogPosition, data.getIncludedColumns(), data.getRows()); this.data = data; } }
private void processWriteEvent(Event event) { WriteRowsEventData data = event.getData(); Long tableId = data.getTableId(); List<Serializable[]> list = data.getRows(); for (Serializable[] row : list) { addRow("WRITE", tableId, row); } }
protected void assertRows(WriteRowsEventData eventData, int numRowsInEvent, Serializable... expectedValuesInRows) { assertThat(eventData.getRows().size()).isEqualTo(numRowsInEvent); int valuePosition = 0; for (Serializable[] row : eventData.getRows()) { for (Serializable value : row) { assertThat(value).isEqualTo(expectedValuesInRows[valuePosition++]); } } }
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; }
case WRITE_ROWS: case EXT_WRITE_ROWS: for ( Serializable[] data : writeRowsData().getRows() ) { list.add(buildRowMap("insert", position, nextPosition, data, table, writeRowsData().getIncludedColumns(), rowQuery));
WriteRowsEventData d = (WriteRowsEventData) eventData; if (d.getTableId() == recordTableId) { d.getRows().forEach(row -> { if (LOGGER.isInfoEnabled()) { LOGGER.debug("Pending write: {}", StringUtils.hex((byte[]) row[0]));
private void handleWriteRowsEvent(Event event, Consumer<M> eventConsumer) { logger.debug("Got binlog event {}", event); offset = ((EventHeaderV4) event.getHeader()).getPosition(); WriteRowsEventData eventData = event.getData(); if (tableMapEventByTableId.containsKey(eventData.getTableId())) { try { eventConsumer.accept(writeRowsEventDataParser.parseEventData(eventData, getCurrentBinlogFilename(), offset ) ); } catch (IOException e) { throw new RuntimeException("Event row parsing exception", e); } } }
private Serializable getValue(WriteRowsEventData eventData, String columnName) { if(columnOrders.containsKey(columnName)) { return eventData.getRows().get(0)[columnOrders.get(columnName) - 1]; } throw new RuntimeException("Column with name [" + columnName + "] not found"); }
@Override public WriteRowsEventData deserialize(ByteArrayInputStream inputStream) throws IOException { WriteRowsEventData eventData = new WriteRowsEventData(); 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.setIncludedColumns(inputStream.readBitSet(numberOfColumns, true)); eventData.setRows(deserializeRows(eventData.getTableId(), eventData.getIncludedColumns(), inputStream)); return eventData; }
public InsertRowsEventInfo(TableInfo tableInfo, Long timestamp, String binlogFilename, Long binlogPosition, WriteRowsEventData data) { super(tableInfo, INSERT_EVENT, timestamp, binlogFilename, binlogPosition, data.getIncludedColumns(), data.getRows()); this.data = data; } }
tableId = ((WriteRowsEventData) eventData).getTableId(); } else if (EventType.isUpdate(eventType)) { tableId = ((UpdateRowsEventData) eventData).getTableId();
private Serializable getValue(WriteRowsEventData eventData, String columnName) { if(columnOrders.containsKey(columnName)) { return eventData.getRows().get(0)[columnOrders.get(columnName) - 1]; } throw new RuntimeException("Column with name [" + columnName + "] not found"); }
offset = ((EventHeaderV4) event.getHeader()).getPosition(); WriteRowsEventData eventData = event.getData(); if (tableMapEventByTableId.containsKey(eventData.getTableId())) { try { eventConsumer.accept(writeRowsEventDataParser.parseEventData(eventData,
private Serializable getValue(WriteRowsEventData eventData, String columnName) { if(columnOrders.containsKey(columnName)) { return eventData.getRows().get(0)[columnOrders.get(columnName) - 1]; } throw new RuntimeException("Column with name [" + columnName + "] not found. Have " + columnOrders.keySet()); }
private Serializable getValue(WriteRowsEventData eventData, String columnName) { if(columnOrders.containsKey(columnName)) { return eventData.getRows().get(0)[columnOrders.get(columnName) - 1]; } throw new RuntimeException("Column with name [" + columnName + "] not found. Have " + columnOrders.keySet()); }
protected void assertRows(WriteRowsEventData eventData, int numRowsInEvent, Serializable... expectedValuesInRows) { assertThat(eventData.getRows().size()).isEqualTo(numRowsInEvent); int valuePosition = 0; for (Serializable[] row : eventData.getRows()) { for (Serializable value : row) { assertThat(value).isEqualTo(expectedValuesInRows[valuePosition++]); } } }