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

Method schema

crates/integrations/datafusion/src/catalog.rs:109–148  ·  view source on GitHub ↗
(&self, name: &str)

Source from the content-addressed store, hash-verified

107 }
108
109 fn schema(&self, name: &str) -> Option<Arc<dyn SchemaProvider>> {
110 let catalog = Arc::clone(&self.catalog);
111 let dynamic_options = Arc::clone(&self.dynamic_options);
112 let name = name.to_string();
113
114 let temp_provider = {
115 let databases = self.temp_tables.read().unwrap_or_else(|e| e.into_inner());
116 databases.get(&name).cloned()
117 };
118
119 block_on_with_runtime(
120 async move {
121 match catalog.get_database(&name).await {
122 Ok(_) => Some(Arc::new(PaimonSchemaProvider::new(
123 Arc::clone(&catalog),
124 name,
125 dynamic_options,
126 temp_provider,
127 )) as Arc<dyn SchemaProvider>),
128 Err(paimon::Error::DatabaseNotExist { .. }) => {
129 if temp_provider.is_some() {
130 Some(Arc::new(PaimonSchemaProvider::new(
131 Arc::clone(&catalog),
132 name,
133 dynamic_options,
134 temp_provider,
135 )) as Arc<dyn SchemaProvider>)
136 } else {
137 None
138 }
139 }
140 Err(e) => {
141 log::error!("failed to get database '{}': {e}", name);
142 None
143 }
144 }
145 },
146 "paimon catalog access thread panicked",
147 )
148 }
149
150 fn register_schema(
151 &self,

Calls 4

block_on_with_runtimeFunction · 0.85
readMethod · 0.45
getMethod · 0.45
get_databaseMethod · 0.45