TestMeta: incorrect result after downloading external file
RaduBerinde opened this issue · comments
RaduBerinde commented
Init(0 /* dbs */, 41 /* batches */, 57 /* iters */, 44 /* snapshots */, 1 /* externalObjs */)
batch5 = db1.NewIndexedBatch()
batch5.Set("t", "bdgepzgefnbmoadh")
batch5.Delete("n")
batch5.Merge("r", "bswhibfochbzhriv")
external0 = batch5.NewExternalObj()
db1.IngestExternalFiles(external0, "aoaaaiumi" /* start */, "avqkpipyc" /* end */, "" /* syntheticSuffix */, "a" /* syntheticPrefix */, external0, "fppaqamjaiyf" /* start */, "vph" /* end */, "" /* syntheticSuffix */, "" /* syntheticPrefix */)
db1.Download("a" /* start */, "p" /* end */, true /* viaBackingFileDownload */, "i" /* start */, "l" /* end */, false /* viaBackingFileDownload */, "b" /* start */, "g" /* end */, true /* viaBackingFileDownload */, "d" /* start */, "q" /* end */, false /* viaBackingFileDownload */, "c" /* start */, "k" /* end */, true /* viaBackingFileDownload */, "h" /* start */, "o" /* end */, false /* viaBackingFileDownload */, "e" /* start */, "f" /* end */, false /* viaBackingFileDownload */, "j" /* start */, "m" /* end */, false /* viaBackingFileDownload */)
iter34 = db1.NewIter("", "", 0 /* key types */, 59, 85, false /* use L6 filters */, "" /* masking suffix */)
iter34.SeekLT("s", "")
-iter34.SeekLT("s", "") // [true,"r","bswhibfochbzhriv",<no range>] <nil> #9
+iter34.SeekLT("s", "") // [true,"at","bdgepzgefnbmoadh",<no range>] <nil> #9
Issue seems to be in the CopySpan path. If I force it to fall back to copyWholeFileBecauseOfUnsupportedFeature
, the problem goes away.
RaduBerinde commented
Probably related to block property filters. Problem goes away if I remove the filter:
opts.PointKeyFilters = []pebble.BlockPropertyFilter{
sstable.NewTestKeysBlockPropertyFilter(o.filterMin, o.filterMax),
}
RaduBerinde commented
I think our solution of having no block properties in the index block doesn't work. It looks like it assumes an empty encoded data, which translates to an empty interval for the interval block filter.