- mtbl_reader* mtbl = mtbl_reader_init(filename, NULL);
- const mtbl_source *src = mtbl_reader_source(mtbl);
- mtbl_iter *it = mtbl_source_get_prefix(src, prefix, prefix_len);
+ int bucket = hash_key_to_bucket((const char *)bpfen, bpfen_len, num_buckets);
+ if (mtbls[bucket] == NULL) {
+ char filename[256];
+ snprintf(filename, sizeof(filename), "%s.part%04d", argv[1], bucket);
+
+ mtbls[bucket] = mtbl_reader_init(filename, NULL);
+ srcs[bucket] = mtbl_reader_source(mtbls[bucket]);
+ }
+
+ mtbl_iter *it = mtbl_source_get(srcs[bucket], bpfen, bpfen_len);