MCPcopy Create free account
hub / github.com/apache/paimon-rust / execute_call

Function execute_call

crates/integrations/datafusion/src/procedures.rs:127–154  ·  view source on GitHub ↗
(
    ctx: &SessionContext,
    catalogs: &HashMap<String, Arc<dyn Catalog>>,
    current_catalog: &str,
    func: &Function,
)

Source from the content-addressed store, hash-verified

125}
126
127pub async fn execute_call(
128 ctx: &SessionContext,
129 catalogs: &HashMap<String, Arc<dyn Catalog>>,
130 current_catalog: &str,
131 func: &Function,
132) -> DFResult<DataFrame> {
133 let (explicit_catalog, proc_name) = extract_procedure_name(&func.name)?;
134 let catalog_name = explicit_catalog.as_deref().unwrap_or(current_catalog);
135 let catalog = catalogs
136 .get(catalog_name)
137 .ok_or_else(|| DataFusionError::Plan(format!("Unknown catalog '{catalog_name}'")))?;
138 let args = extract_named_args(&func.args)?;
139
140 match proc_name.as_str() {
141 "create_tag" => proc_create_tag(ctx, catalog, catalog_name, &args).await,
142 "delete_tag" => proc_delete_tag(ctx, catalog, catalog_name, &args).await,
143 "rollback_to" => proc_rollback_to(ctx, catalog, catalog_name, &args).await,
144 "rollback_to_timestamp" => {
145 proc_rollback_to_timestamp(ctx, catalog, catalog_name, &args).await
146 }
147 "create_tag_from_timestamp" => {
148 proc_create_tag_from_timestamp(ctx, catalog, catalog_name, &args).await
149 }
150 _ => Err(DataFusionError::Plan(format!(
151 "Unknown procedure: {proc_name}"
152 ))),
153 }
154}
155
156/// Returns (optional_catalog_name, procedure_name).
157fn extract_procedure_name(name: &ObjectName) -> DFResult<(Option<String>, String)> {

Callers 1

sqlMethod · 0.85

Calls 9

extract_procedure_nameFunction · 0.85
extract_named_argsFunction · 0.85
proc_create_tagFunction · 0.85
proc_delete_tagFunction · 0.85
proc_rollback_toFunction · 0.85
PlanClass · 0.50
getMethod · 0.45

Tested by

no test coverage detected