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

Function expression_cache

src/catalog/src/expr_cache.rs:461–733  ·  view source on GitHub ↗

unsupported operation: returning ready events from epoll_wait is not yet implemented

()

Source from the content-addressed store, hash-verified

459 #[mz_ore::test(tokio::test)]
460 #[cfg_attr(miri, ignore)] // unsupported operation: returning ready events from epoll_wait is not yet implemented
461 async fn expression_cache() {
462 let first_version = Version::new(0, 1, 0);
463 let second_version = Version::new(0, 2, 0);
464 let persist = PersistClient::new_for_tests().await;
465 let shard_id = ShardId::new();
466
467 let mut current_ids = BTreeSet::new();
468 let mut remove_prior_versions = false;
469 // Compacting the shard takes too long, so we leave it to integration tests.
470 let compact_shard = false;
471 let dyncfgs = &mz_persist_client::cfg::all_dyncfgs(ConfigSet::default());
472
473 let mut next_id = 0;
474
475 let (mut local_exps, mut global_exps) = {
476 // Open a new empty cache.
477 let (cache, local_exprs, global_exprs) =
478 ExpressionCacheHandle::spawn_expression_cache(ExpressionCacheConfig {
479 build_version: first_version.clone(),
480 persist: persist.clone(),
481 shard_id,
482 current_ids: current_ids.clone(),
483 remove_prior_versions,
484 compact_shard,
485 dyncfgs: dyncfgs.clone(),
486 })
487 .await;
488 assert_eq!(local_exprs, BTreeMap::new(), "new cache should be empty");
489 assert_eq!(global_exprs, BTreeMap::new(), "new cache should be empty");
490
491 // Insert some expressions into the cache.
492 let mut local_exps = BTreeMap::new();
493 let mut global_exps = BTreeMap::new();
494 for _ in 0..4 {
495 let id = GlobalId::User(next_id);
496 let local_exp = gen_local_expressions();
497 let global_exp = gen_global_expressions();
498
499 cache
500 .update(
501 vec![(id, local_exp.clone())],
502 vec![(id, global_exp.clone())],
503 BTreeSet::new(),
504 )
505 .await;
506
507 current_ids.insert(id);
508 current_ids.extend(global_exp.index_imports());
509 local_exps.insert(id, local_exp);
510 global_exps.insert(id, global_exp);
511
512 next_id += 1;
513 }
514 (local_exps, global_exps)
515 };
516
517 {
518 // Re-open the cache.

Callers

nothing calls this directly

Calls 15

gen_local_expressionsFunction · 0.85
gen_global_expressionsFunction · 0.85
index_importsMethod · 0.80
expectMethod · 0.80
all_dyncfgsFunction · 0.50
UserClass · 0.50
cloneMethod · 0.45
updateMethod · 0.45
insertMethod · 0.45
extendMethod · 0.45
nextMethod · 0.45
keysMethod · 0.45

Tested by

no test coverage detected