MCPcopy Create free account
hub / github.com/MaterializeInc/materialize / try_open

Method try_open

src/catalog/src/expr_cache.rs:193–289  ·  view source on GitHub ↗
(
        &mut self,
        current_ids: &BTreeSet<GlobalId>,
        remove_prior_versions: bool,
        compact_shard: bool,
        dyncfgs: &ConfigSet,
    )

Source from the content-addressed store, hash-verified

191 }
192
193 async fn try_open(
194 &mut self,
195 current_ids: &BTreeSet<GlobalId>,
196 remove_prior_versions: bool,
197 compact_shard: bool,
198 dyncfgs: &ConfigSet,
199 ) -> Result<
200 (
201 BTreeMap<GlobalId, LocalExpressions>,
202 BTreeMap<GlobalId, GlobalExpressions>,
203 ),
204 mz_durable_cache::Error,
205 > {
206 let mut keys_to_remove = Vec::new();
207 let mut local_expressions = BTreeMap::new();
208 let mut global_expressions = BTreeMap::new();
209
210 for (key, expressions) in self.durable_cache.entries_local() {
211 let build_version = match key.build_version.parse::<Version>() {
212 Ok(build_version) => build_version,
213 Err(err) => {
214 warn!("unable to parse build version: {key:?}: {err:?}");
215 keys_to_remove.push((key.clone(), None));
216 continue;
217 }
218 };
219 if build_version == self.build_version {
220 // Only deserialize the current version.
221 match key.expr_type {
222 ExpressionType::Local => {
223 let expressions: LocalExpressions = match bincode::deserialize(expressions)
224 {
225 Ok(expressions) => expressions,
226 Err(err) => {
227 soft_panic_or_log!(
228 "unable to deserialize local expressions: ({key:?}, {expressions:?}): {err:?}"
229 );
230 continue;
231 }
232 };
233 // Remove dropped IDs.
234 if !current_ids.contains(&key.id) {
235 keys_to_remove.push((key.clone(), None));
236 } else {
237 local_expressions.insert(key.id, expressions);
238 }
239 }
240 ExpressionType::Global => {
241 let expressions: GlobalExpressions = match bincode::deserialize(expressions)
242 {
243 Ok(expressions) => expressions,
244 Err(err) => {
245 soft_panic_or_log!(
246 "unable to deserialize global expressions: ({key:?}, {expressions:?}): {err:?}"
247 );
248 continue;
249 }
250 };

Callers 1

openMethod · 0.80

Calls 15

entries_localMethod · 0.80
index_importsMethod · 0.80
is_subsetMethod · 0.80
try_set_manyMethod · 0.80
deserializeFunction · 0.50
pushMethod · 0.45
cloneMethod · 0.45
containsMethod · 0.45
insertMethod · 0.45
collectMethod · 0.45
mapMethod · 0.45

Tested by

no test coverage detected