chore: add trigger querier factory trait (#7053)

feat: add trigger-querier-factory-ent
This commit is contained in:
fys
2025-10-09 10:16:50 +08:00
committed by GitHub
parent b24a55cea4
commit 4cdcf2ef39
2 changed files with 18 additions and 9 deletions

View File

@@ -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::<operator::statement::TriggerQuerierRef>()
{
statement_executor.with_trigger_querier(trigger_querier.clone())
} else {
statement_executor
};
let statement_executor =
if let Some(factory) = plugins.get::<operator::statement::TriggerQuerierFactoryRef>() {
statement_executor.with_trigger_querier(factory.create(kv_backend.clone()))
} else {
statement_executor
};
let statement_executor = Arc::new(statement_executor);

View File

@@ -105,10 +105,19 @@ pub struct StatementExecutor {
pub type StatementExecutorRef = Arc<StatementExecutor>;
/// 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<dyn TriggerQuerierFactory>;
/// 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<dyn TriggerQuerier + Send + Sync>;
pub type TriggerQuerierRef = Arc<dyn TriggerQuerier>;
impl StatementExecutor {
#[allow(clippy::too_many_arguments)]