From f2c74a81f7d469f8ea6cf3aaf261e43040bedd0a Mon Sep 17 00:00:00 2001 From: Azat Khuzhin Date: Sat, 13 Nov 2021 20:05:03 +0300 Subject: [PATCH] Fix QueryScope in MaterializedMySQLSyncThread QueryScope should exist for the whole query execution time. --- src/Databases/MySQL/MaterializedMySQLSyncThread.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/Databases/MySQL/MaterializedMySQLSyncThread.cpp b/src/Databases/MySQL/MaterializedMySQLSyncThread.cpp index d0c5d12e848..8b6161c9bd0 100644 --- a/src/Databases/MySQL/MaterializedMySQLSyncThread.cpp +++ b/src/Databases/MySQL/MaterializedMySQLSyncThread.cpp @@ -52,8 +52,6 @@ static ContextMutablePtr createQueryContext(ContextPtr context) auto query_context = Context::createCopy(context); query_context->setSettings(new_query_settings); - CurrentThread::QueryScope query_scope(query_context); - query_context->getClientInfo().query_kind = ClientInfo::QueryKind::SECONDARY_QUERY; query_context->setCurrentQueryId(""); // generate random query_id return query_context; @@ -273,6 +271,8 @@ static inline void cleanOutdatedTables(const String & database_name, ContextPtr for (auto iterator = clean_database->getTablesIterator(context); iterator->isValid(); iterator->next()) { auto query_context = createQueryContext(context); + CurrentThread::QueryScope query_scope(query_context); + String comment = "Materialize MySQL step 1: execute MySQL DDL for dump data"; cleaning_table_name = backQuoteIfNeed(database_name) + "." + backQuoteIfNeed(iterator->name()); tryToExecuteQuery(" DROP TABLE " + cleaning_table_name, query_context, database_name, comment); @@ -324,6 +324,8 @@ static inline void dumpDataForTables( { const auto & table_name = iterator->first; auto query_context = createQueryContext(context); + CurrentThread::QueryScope query_scope(query_context); + String comment = "Materialize MySQL step 1: execute MySQL DDL for dump data"; tryToExecuteQuery(query_prefix + " " + iterator->second, query_context, database_name, comment); /// create table. @@ -742,6 +744,8 @@ void MaterializedMySQLSyncThread::executeDDLAtomic(const QueryEvent & query_even try { auto query_context = createQueryContext(getContext()); + CurrentThread::QueryScope query_scope(query_context); + String comment = "Materialize MySQL step 2: execute MySQL DDL for sync data"; String event_database = query_event.schema == mysql_database_name ? database_name : ""; tryToExecuteQuery(query_prefix + query_event.query, query_context, event_database, comment); @@ -791,6 +795,8 @@ void MaterializedMySQLSyncThread::Buffers::commit(ContextPtr context) for (auto & table_name_and_buffer : data) { auto query_context = createQueryContext(context); + CurrentThread::QueryScope query_scope(query_context); + auto input = std::make_shared(table_name_and_buffer.second->first); auto pipeline = getTableOutput(database, table_name_and_buffer.first, query_context, true); pipeline.complete(Pipe(std::move(input)));