common_meta/ddl/drop_table/
metadata.rs1use common_catalog::format_full_table_name;
16use snafu::OptionExt;
17use store_api::metric_engine_consts::METRIC_ENGINE_NAME;
18
19use crate::ddl::drop_table::DropTableProcedure;
20use crate::ddl::utils::extract_region_wal_options;
21use crate::error::{self, Result};
22
23impl DropTableProcedure {
24 pub(crate) async fn fill_table_metadata(&mut self) -> Result<()> {
26 let task = &self.data.task;
27 let (physical_table_id, physical_table_route_value) = self
28 .context
29 .table_metadata_manager
30 .table_route_manager()
31 .get_physical_table_route(task.table_id)
32 .await?;
33
34 if physical_table_id == self.data.table_id() {
35 let table_info_value = self
36 .context
37 .table_metadata_manager
38 .table_info_manager()
39 .get(task.table_id)
40 .await?
41 .with_context(|| error::TableInfoNotFoundSnafu {
42 table: format_full_table_name(&task.catalog, &task.schema, &task.table),
43 })?
44 .into_inner();
45
46 let engine = table_info_value.table_info.meta.engine;
47 self.data.allow_rollback = engine.as_str() == METRIC_ENGINE_NAME;
49
50 let datanode_table_values = self
52 .context
53 .table_metadata_manager
54 .datanode_table_manager()
55 .regions(physical_table_id, &physical_table_route_value)
56 .await?;
57 self.data.region_wal_options = extract_region_wal_options(&datanode_table_values)?;
58 }
59
60 self.data.physical_region_routes = physical_table_route_value.region_routes;
61 self.data.physical_table_id = Some(physical_table_id);
62
63 Ok(())
64 }
65}