@@ -122,6 +122,13 @@ type Properties struct {
122
122
// The compression statistics encoded as a string. The format is:
123
123
// "<setting1>:<compressed1>/<uncompressed1>,<setting2>:<compressed2>/<uncompressed2>,..."
124
124
CompressionStats string `prop:"pebble.compression_stats"`
125
+ // The value separation policy that was used when writing this sstable.
126
+ // This indicates how values were handled during writing (separated into
127
+ // blob files, preserved references, or kept in-place). See ValueSeparationKind type
128
+ // for possible values.
129
+ ValueSeparationKind uint8 `prop:"pebble.value-separation.kind"`
130
+ // The minimum size a value must be to be separated into a blob file during writing.
131
+ ValueSeparationMinSize uint64 `prop:"pebble.value-separation.min-size"`
125
132
// User collected properties. Currently, we only use them to store block
126
133
// properties aggregated at the table level.
127
134
UserProperties map [string ]string
@@ -224,6 +231,28 @@ func (p *Properties) toAttributes() Attributes {
224
231
return attributes
225
232
}
226
233
234
+ // ValueSeparationKind indicates the value separation policy that was used
235
+ // when writing an sstable.
236
+ type ValueSeparationKind uint8
237
+
238
+ const (
239
+ // ValueSeparationNone indicates that no value separation was used.
240
+ // All values are stored in-place within the sstable.
241
+ ValueSeparationNone ValueSeparationKind = iota
242
+
243
+ // ValueSeparationDefault indicates that values were separated into
244
+ // new blob files during writing.
245
+ ValueSeparationDefault
246
+
247
+ // ValueSeparationSpanPolicy indicates that values were separated
248
+ // based on a span policy during writing.
249
+ ValueSeparationSpanPolicy
250
+
251
+ // ValueSeparationPreservedRefs indicates that existing blob references
252
+ // were preserved without creating new blob files.
253
+ ValueSeparationPreservedRefs
254
+ )
255
+
227
256
var (
228
257
singleZeroSlice = []byte {0x00 }
229
258
maxInt32Slice = binary .AppendUvarint ([]byte (nil ), math .MaxInt32 )
0 commit comments