private void processQueryEvent(Event event) { QueryEventData data = event.getData(); String sql = data.getSql(); if (createTablePattern.matcher(sql).find()) { schema.reset(); } }
private void processQueryEvent(BinlogConnectorEvent event) throws Exception { QueryEventData data = event.queryData(); processQueryEvent( data.getDatabase(), data.getSql(), this.schemaStore, Position.valueOf(event.getPosition(), getLastHeartbeatRead()), Position.valueOf(event.getNextPosition(), getLastHeartbeatRead()), event.getEvent().getHeader().getTimestamp() ); }
QueryEventData command = unwrapData(event); logger.debug("Received query command: {}", event); String sql = command.getSql().trim(); if (sql.equalsIgnoreCase("BEGIN")) { source.setBinlogThread(command.getThreadId()); if (initialEventsToSkip != 0) { logger.debug("Restarting partially-processed transaction; change events will not be created for the first {} events plus {} more rows in the next event", MySqlConnectorConfig.BUFFER_SIZE_FOR_BINLOG_READER.name()); context.dbSchema().applyDdl(context.source(), command.getDatabase(), command.getSql(), (dbName, statements) -> { if (recordSchemaChangesInSourceRecords && recordMakers.schemaChanges(dbName, statements, super::enqueueRecord) > 0) { logger.debug("Recorded DDL statements for database '{}': {}", dbName, statements);
@Override public QueryEventData deserialize(ByteArrayInputStream inputStream) throws IOException { QueryEventData eventData = new QueryEventData(); eventData.setThreadId(inputStream.readLong(4)); eventData.setExecutionTime(inputStream.readLong(4)); inputStream.skip(1); // length of the name of the database eventData.setErrorCode(inputStream.readInteger(2)); inputStream.skip(inputStream.readInteger(2)); // status variables block eventData.setDatabase(inputStream.readZeroTerminatedString()); eventData.setSql(inputStream.readString(inputStream.available())); return eventData; } }
case QUERY: QueryEventData qe = event.queryData(); String sql = qe.getSql(); if (BinlogConnectorEvent.BEGIN.equals(sql)) { try { rowBuffer.setThreadId(qe.getThreadId()); rowBuffer.setSchemaId(getSchemaId()); } else {
public boolean isCommitEvent() { EventType eventType = getType(); if (eventType == EventType.XID) { return true; } else if (eventType == EventType.QUERY) { // MyISAM will output a "COMMIT" QUERY_EVENT instead of a XID_EVENT. // There's no transaction ID but we can still set "commit: true" return COMMIT.equals(queryData().getSql()); } return false; }
case QUERY: QueryEventData queryEventData = event.getData(); currentDatabase = queryEventData.getDatabase(); String sql = queryEventData.getSql();
case QUERY: QueryEventData queryEventData = (QueryEventData) EventDataWrapper.internal(event.getData()); String sql = queryEventData.getSql(); if (sql == null) { break;
case QUERY: QueryEventData queryEventData = event.getData(); currentDatabase = queryEventData.getDatabase(); String sql = queryEventData.getSql();
QueryEventData command = reader.unwrapData(event); LOGGER.debug("Received query command: {}", event); String sql = command.getSql().trim(); if (sql.equalsIgnoreCase("BEGIN")) { beginTransaction(event);
/** * Test case that is normally commented out since it is only useful to print out the DDL statements recorded by * the binlog during a MySQL server initialization and startup. * * @throws Exception if there are problems */ @Ignore @Test public void shouldCaptureQueryEventData() throws Exception { // Testing.Print.enable(); startClient(client -> { client.setBinlogFilename("mysql-bin.000001"); client.setBinlogPosition(4); }); counters.consumeAll(5, TimeUnit.SECONDS); List<QueryEventData> allQueryEvents = recordedEventData(QueryEventData.class, -1); allQueryEvents.forEach(event -> { String sql = event.getSql(); if (sql.equalsIgnoreCase("BEGIN") || sql.equalsIgnoreCase("COMMIT")) return; System.out.println(event.getSql()); }); }
case QUERY: QueryEventData qe = event.queryData(); String sql = qe.getSql(); String upperCaseSql = sql.toUpperCase();
/** * Test case that is normally commented out since it is only useful to print out the DDL statements recorded by * the binlog during a MySQL server initialization and startup. * * @throws Exception if there are problems */ @Ignore @Test public void shouldCaptureQueryEventData() throws Exception { // Testing.Print.enable(); startClient(client -> { client.setBinlogFilename("mysql-bin.000001"); client.setBinlogPosition(4); }); counters.consumeAll(5, TimeUnit.SECONDS); List<QueryEventData> allQueryEvents = recordedEventData(QueryEventData.class, -1); allQueryEvents.forEach(event -> { String sql = event.getSql(); if (sql.equalsIgnoreCase("BEGIN") || sql.equalsIgnoreCase("COMMIT")) return; System.out.println(event.getSql()); }); }