- ds->compactor = (dict_compacting_would_shrink (ds->permanent_dict)
- ? dict_make_compactor (ds->permanent_dict)
+ struct dictionary *pd = ds->permanent_dict;
+ size_t compacted_value_cnt = dict_count_values (pd, 1u << DC_SCRATCH);
+ bool should_compact = compacted_value_cnt < dict_get_next_value_idx (pd);
+ ds->compactor = (should_compact
+ ? case_map_to_compact_dict (pd, 1u << DC_SCRATCH)