Skip to content

Commit 2f8f1c8

Browse files
committed
virtual: move IsSharedIngested to ReadEnv
We don't know the value of this flag just from the TableMetadata, which precludes pre-initializing `VirtualReaderParams`.
1 parent 4aeacab commit 2f8f1c8

File tree

5 files changed

+17
-13
lines changed

5 files changed

+17
-13
lines changed

data_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1289,7 +1289,7 @@ func runSSTablePropertiesCmd(t *testing.T, td *datadriven.TestData, d *DB) strin
12891289
props := r.Properties.String()
12901290
env := sstable.ReadEnv{}
12911291
if m != nil && m.Virtual != nil {
1292-
m.InitVirtual(false /* isShared */)
1292+
m.InitVirtual()
12931293
env.Virtual = m.Virtual
12941294
scaledProps := r.Properties.GetScaledProperties(m.FileBacking.Size, m.Size)
12951295
props = scaledProps.String()

file_cache.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -315,8 +315,9 @@ func createReader(v *fileCacheValue, file *tableMetadata) (*sstable.Reader, ssta
315315
r := v.mustSSTableReader()
316316
env := sstable.ReadEnv{}
317317
if file.Virtual != nil {
318-
file.InitVirtual(v.isShared)
318+
file.InitVirtual()
319319
env.Virtual = file.Virtual
320+
env.IsSharedIngested = v.isShared && file.SyntheticSeqNum() != 0
320321
}
321322
return r, env
322323
}
@@ -339,8 +340,9 @@ func (h *fileCacheHandle) withReader(
339340

340341
r := v.mustSSTableReader()
341342
if meta.Virtual != nil {
342-
meta.InitVirtual(v.isShared)
343+
meta.InitVirtual()
343344
env.Virtual = meta.Virtual
345+
env.IsSharedIngested = v.isShared && meta.SyntheticSeqNum() != 0
344346
}
345347

346348
return fn(r, env)
@@ -526,6 +528,7 @@ func (h *fileCacheHandle) newIters(
526528
v := vRef.Value()
527529
r, env := createReader(v, file)
528530
internalOpts.readEnv.Virtual = env.Virtual
531+
internalOpts.readEnv.IsSharedIngested = env.IsSharedIngested
529532

530533
var iters iterSet
531534
if kinds.RangeKey() && file.HasRangeKeys {

internal/manifest/version.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -350,11 +350,10 @@ type TableMetadata struct {
350350
SyntheticPrefixAndSuffix sstable.SyntheticPrefixAndSuffix
351351
}
352352

353-
func (m *TableMetadata) InitVirtual(isShared bool) {
353+
func (m *TableMetadata) InitVirtual() {
354354
m.Virtual.Lower = m.Smallest
355355
m.Virtual.Upper = m.Largest
356356
m.Virtual.FileNum = m.FileNum
357-
m.Virtual.IsSharedIngested = isShared && m.SyntheticSeqNum() != 0
358357
}
359358

360359
// Ref increments the table's ref count. If this is the table's first reference,

sstable/reader.go

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,10 @@ type Reader struct {
6969

7070
type ReadEnv struct {
7171
Virtual *virtual.VirtualReaderParams
72-
Block block.ReadEnv
72+
// IsSharedIngested is true if this is a shared table that was ingested. Can
73+
// only be set when Virtual is non-nil.
74+
IsSharedIngested bool
75+
Block block.ReadEnv
7376
}
7477

7578
var NoReadEnv = ReadEnv{}
@@ -188,7 +191,7 @@ func (r *Reader) NewCompactionIter(
188191
func (r *Reader) newCompactionIter(
189192
transforms IterTransforms, env ReadEnv, rp valblk.ReaderProvider, blobContext TableBlobContext,
190193
) (Iterator, error) {
191-
if env.Virtual != nil && env.Virtual.IsSharedIngested {
194+
if env.IsSharedIngested {
192195
transforms.HideObsoletePoints = true
193196
}
194197
ctx := context.Background()
@@ -272,7 +275,7 @@ func (r *Reader) NewRawRangeKeyIter(
272275
ctx context.Context, transforms FragmentIterTransforms, env ReadEnv,
273276
) (iter keyspan.FragmentIterator, err error) {
274277
syntheticSeqNum := transforms.SyntheticSeqNum
275-
if env.Virtual != nil && env.Virtual.IsSharedIngested {
278+
if env.IsSharedIngested {
276279
// Don't pass a synthetic sequence number for shared ingested sstables. We
277280
// need to know the materialized sequence numbers, and we will set up the
278281
// appropriate sequence number substitution below.
@@ -302,7 +305,7 @@ func (r *Reader) NewRawRangeKeyIter(
302305
//
303306
// TODO(bilal): Avoid these allocations by hoisting the transformer and
304307
// transform iter up.
305-
if env.Virtual.IsSharedIngested {
308+
if env.IsSharedIngested {
306309
transform := &rangekey.ForeignSSTTransformer{
307310
Equal: r.Comparer.Equal,
308311
SeqNum: base.SeqNum(syntheticSeqNum),

sstable/virtual/virtual_reader_params.go

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,9 @@ import "github.com/cockroachdb/pebble/internal/base"
44

55
// VirtualReaderParams are the parameters necessary for a reader to read virtual sstables.
66
type VirtualReaderParams struct {
7-
Lower base.InternalKey
8-
Upper base.InternalKey
9-
FileNum base.FileNum
10-
IsSharedIngested bool
7+
Lower base.InternalKey
8+
Upper base.InternalKey
9+
FileNum base.FileNum
1110
}
1211

1312
// Constrain bounds will narrow the start, end bounds if they do not fit within

0 commit comments

Comments
 (0)