From 4cdcf2ef39137e293d870849d8df0894d6241392 Mon Sep 17 00:00:00 2001 From: fys <40801205+fengys1996@users.noreply.github.com> Date: Thu, 9 Oct 2025 10:16:50 +0800 Subject: [PATCH] chore: add trigger querier factory trait (#7053) feat: add trigger-querier-factory-ent --- src/frontend/src/instance/builder.rs | 14 +++++++------- src/operator/src/statement.rs | 13 +++++++++++-- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/src/frontend/src/instance/builder.rs b/src/frontend/src/instance/builder.rs index 88f8b781b3..7a32e0adcb 100644 --- a/src/frontend/src/instance/builder.rs +++ b/src/frontend/src/instance/builder.rs @@ -186,14 +186,14 @@ impl FrontendBuilder { table_route_cache, Some(process_manager.clone()), ); + #[cfg(feature = "enterprise")] - let statement_executor = if let Some(trigger_querier) = - plugins.get::() - { - statement_executor.with_trigger_querier(trigger_querier.clone()) - } else { - statement_executor - }; + let statement_executor = + if let Some(factory) = plugins.get::() { + statement_executor.with_trigger_querier(factory.create(kv_backend.clone())) + } else { + statement_executor + }; let statement_executor = Arc::new(statement_executor); diff --git a/src/operator/src/statement.rs b/src/operator/src/statement.rs index 91bf290f34..2d361e48a7 100644 --- a/src/operator/src/statement.rs +++ b/src/operator/src/statement.rs @@ -105,10 +105,19 @@ pub struct StatementExecutor { pub type StatementExecutorRef = Arc; +/// Trait for creating [`TriggerQuerier`] instance. +#[cfg(feature = "enterprise")] +pub trait TriggerQuerierFactory: Send + Sync { + fn create(&self, kv_backend: KvBackendRef) -> TriggerQuerierRef; +} + +#[cfg(feature = "enterprise")] +pub type TriggerQuerierFactoryRef = Arc; + /// Trait for querying trigger info, such as `SHOW CREATE TRIGGER` etc. #[cfg(feature = "enterprise")] #[async_trait::async_trait] -pub trait TriggerQuerier { +pub trait TriggerQuerier: Send + Sync { // Query the `SHOW CREATE TRIGGER` statement for the given trigger. async fn show_create_trigger( &self, @@ -121,7 +130,7 @@ pub trait TriggerQuerier { } #[cfg(feature = "enterprise")] -pub type TriggerQuerierRef = Arc; +pub type TriggerQuerierRef = Arc; impl StatementExecutor { #[allow(clippy::too_many_arguments)]