private void processTableMapEvent(Event event) { TableMapEventData data = event.getData(); String dbName = data.getDatabase(); String tableName = data.getTable(); Long tableId = data.getTableId(); Table table = schema.getTable(dbName, tableName); tableMap.put(tableId, table); }
/** * Handle a change in the table metadata. * <p> * This method should be called whenever we consume a TABLE_MAP event, and every transaction in the log should include one * of these for each table affected by the transaction. Each table map event includes a monotonically-increasing numeric * identifier, and this identifier is used within subsequent events within the same transaction. This table identifier can * change when: * <ol> * <li>the table structure is modified (e.g., via an {@code ALTER TABLE ...} command); or</li> * <li>MySQL rotates to a new binary log file, even if the table structure does not change.</li> * </ol> * * @param event the update event; never null */ protected void handleUpdateTableMetadata(Event event) { TableMapEventData metadata = unwrapData(event); long tableNumber = metadata.getTableId(); String databaseName = metadata.getDatabase(); String tableName = metadata.getTable(); TableId tableId = new TableId(databaseName, null, tableName); if (recordMakers.assign(tableNumber, tableId)) { logger.debug("Received update table metadata event: {}", event); } else { informAboutUnknownTableIfRequired(event, tableId, "update table metadata"); } }
skipTable = (databaseNamePattern != null && !databaseNamePattern.matcher(data.getDatabase()).matches()) || (tableNamePattern != null && !tableNamePattern.matcher(data.getTable()).matches()); TableInfoCacheKey key = new TableInfoCacheKey(this.getIdentifier(), data.getDatabase(), data.getTable(), data.getTableId()); if (cacheClient != null) { try {
case TABLE_MAP: TableMapEventData data = event.tableMapData(); tableCache.processEvent(getSchema(), this.filter, data.getTableId(), data.getDatabase(), data.getTable()); break; case ROWS_QUERY:
case TABLE_MAP: TableMapEventData data = event.tableMapData(); tableCache.processEvent(getSchema(), this.filter, data.getTableId(), data.getDatabase(), data.getTable()); break; case QUERY:
TableMapEventData tableMapEventData = (TableMapEventData) eventData; if (tableMapEventData.getDatabase().equals(databaseName) && tableMapEventData.getTable().equalsIgnoreCase(recordTableName)) {
skipTable = (databaseNamePattern != null && !databaseNamePattern.matcher(data.getDatabase()).matches()) || (tableNamePattern != null && !tableNamePattern.matcher(data.getTable()).matches()); TableInfoCacheKey key = new TableInfoCacheKey(this.getIdentifier(), data.getDatabase(), data.getTable(), data.getTableId()); if (cacheClient != null) { try {
if (((TableMapEventData) eventData).getDatabase().equals(catalog) && ((TableMapEventData) eventData).getTable().equalsIgnoreCase(SqlDatabase.RECORD_TABLE)) { tableMapEventData = (TableMapEventData) eventData;
case TABLE_MAP: { TableMapEventData tableMapEvent = event.getData(); if (tableMapEvent.getTable().equalsIgnoreCase(sourceTableName) && tableMapEvent.getDatabase().equalsIgnoreCase(sourceDatabase.getEventuateDatabaseSchema())) { tableMapEventByTableId.put(tableMapEvent.getTableId(), tableMapEvent);