Skip to content

Commit 3056964

Browse files
committed
db: export FormatExperimentalValueSeparation
Export the format major version that allows use of value separation, but leaving FormatNewest pointing to the previous format major version. Exporting the format allows us to use the format major version from other packages (eg, the metamorphic tests, the tool package, etc).
1 parent c25e82e commit 3056964

File tree

4 files changed

+32
-28
lines changed

4 files changed

+32
-28
lines changed

compaction_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1232,8 +1232,8 @@ func TestCompaction(t *testing.T) {
12321232
maxVersion: internalFormatNewest,
12331233
},
12341234
"value_separation": {
1235-
minVersion: formatValueSeparation,
1236-
maxVersion: formatValueSeparation,
1235+
minVersion: FormatExperimentalValueSeparation,
1236+
maxVersion: FormatExperimentalValueSeparation,
12371237
verbose: true,
12381238
},
12391239
}

format_major_version.go

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -215,12 +215,16 @@ const (
215215
// This format major version does not yet enable use of value separation.
216216
FormatTableFormatV6
217217

218-
// formatValueSeparation enables the use of value separation, separating
219-
// values into external blob files that do not participate in every
220-
// compaction.
218+
// FormatExperimentalValueSeparation enables the use of value separation,
219+
// separating values into external blob files that do not participate in
220+
// every compaction.
221221
//
222-
// TODO(jackson): Export this format major version once stable.
223-
formatValueSeparation
222+
// This format major version is experimental and its physical file formats
223+
// are not yet stable. Do not use this format major version in production.
224+
//
225+
// TODO(jackson): Rename this format major version and update FormatNewest
226+
// once stable.
227+
FormatExperimentalValueSeparation
224228

225229
// -- Add new versions here --
226230

@@ -262,7 +266,7 @@ func (v FormatMajorVersion) MaxTableFormat() sstable.TableFormat {
262266
return sstable.TableFormatPebblev4
263267
case FormatColumnarBlocks, FormatWALSyncChunks:
264268
return sstable.TableFormatPebblev5
265-
case FormatTableFormatV6, formatValueSeparation:
269+
case FormatTableFormatV6, FormatExperimentalValueSeparation:
266270
return sstable.TableFormatPebblev6
267271
default:
268272
panic(fmt.Sprintf("pebble: unsupported format major version: %s", v))
@@ -276,7 +280,7 @@ func (v FormatMajorVersion) MinTableFormat() sstable.TableFormat {
276280
case FormatDefault, FormatFlushableIngest, FormatPrePebblev1MarkedCompacted,
277281
FormatDeleteSizedAndObsolete, FormatVirtualSSTables, FormatSyntheticPrefixSuffix,
278282
FormatFlushableIngestExcises, FormatColumnarBlocks, FormatWALSyncChunks,
279-
FormatTableFormatV6, formatValueSeparation:
283+
FormatTableFormatV6, FormatExperimentalValueSeparation:
280284
return sstable.TableFormatPebblev1
281285
default:
282286
panic(fmt.Sprintf("pebble: unsupported format major version: %s", v))
@@ -325,8 +329,8 @@ var formatMajorVersionMigrations = map[FormatMajorVersion]func(*DB) error{
325329
FormatTableFormatV6: func(d *DB) error {
326330
return d.finalizeFormatVersUpgrade(FormatTableFormatV6)
327331
},
328-
formatValueSeparation: func(d *DB) error {
329-
return d.finalizeFormatVersUpgrade(formatValueSeparation)
332+
FormatExperimentalValueSeparation: func(d *DB) error {
333+
return d.finalizeFormatVersUpgrade(FormatExperimentalValueSeparation)
330334
},
331335
}
332336

format_major_version_test.go

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ func TestFormatMajorVersionStableValues(t *testing.T) {
2828
require.Equal(t, FormatColumnarBlocks, FormatMajorVersion(19))
2929
require.Equal(t, FormatWALSyncChunks, FormatMajorVersion(20))
3030
require.Equal(t, FormatTableFormatV6, FormatMajorVersion(21))
31-
require.Equal(t, formatValueSeparation, FormatMajorVersion(22))
31+
require.Equal(t, FormatExperimentalValueSeparation, FormatMajorVersion(22))
3232

3333
// When we add a new version, we should add a check for the new version in
3434
// addition to updating these expected values.
@@ -68,8 +68,8 @@ func TestRatchetFormat(t *testing.T) {
6868
require.Equal(t, FormatWALSyncChunks, d.FormatMajorVersion())
6969
require.NoError(t, d.RatchetFormatMajorVersion(FormatTableFormatV6))
7070
require.Equal(t, FormatTableFormatV6, d.FormatMajorVersion())
71-
require.NoError(t, d.RatchetFormatMajorVersion(formatValueSeparation))
72-
require.Equal(t, formatValueSeparation, d.FormatMajorVersion())
71+
require.NoError(t, d.RatchetFormatMajorVersion(FormatExperimentalValueSeparation))
72+
require.Equal(t, FormatExperimentalValueSeparation, d.FormatMajorVersion())
7373

7474
require.NoError(t, d.Close())
7575

@@ -219,17 +219,17 @@ func TestFormatMajorVersions_TableFormat(t *testing.T) {
219219
// fixture is intentionally verbose.
220220

221221
m := map[FormatMajorVersion][2]sstable.TableFormat{
222-
FormatDefault: {sstable.TableFormatPebblev1, sstable.TableFormatPebblev3},
223-
FormatFlushableIngest: {sstable.TableFormatPebblev1, sstable.TableFormatPebblev3},
224-
FormatPrePebblev1MarkedCompacted: {sstable.TableFormatPebblev1, sstable.TableFormatPebblev3},
225-
FormatDeleteSizedAndObsolete: {sstable.TableFormatPebblev1, sstable.TableFormatPebblev4},
226-
FormatVirtualSSTables: {sstable.TableFormatPebblev1, sstable.TableFormatPebblev4},
227-
FormatSyntheticPrefixSuffix: {sstable.TableFormatPebblev1, sstable.TableFormatPebblev4},
228-
FormatFlushableIngestExcises: {sstable.TableFormatPebblev1, sstable.TableFormatPebblev4},
229-
FormatColumnarBlocks: {sstable.TableFormatPebblev1, sstable.TableFormatPebblev5},
230-
FormatWALSyncChunks: {sstable.TableFormatPebblev1, sstable.TableFormatPebblev5},
231-
FormatTableFormatV6: {sstable.TableFormatPebblev1, sstable.TableFormatPebblev6},
232-
formatValueSeparation: {sstable.TableFormatPebblev1, sstable.TableFormatPebblev6},
222+
FormatDefault: {sstable.TableFormatPebblev1, sstable.TableFormatPebblev3},
223+
FormatFlushableIngest: {sstable.TableFormatPebblev1, sstable.TableFormatPebblev3},
224+
FormatPrePebblev1MarkedCompacted: {sstable.TableFormatPebblev1, sstable.TableFormatPebblev3},
225+
FormatDeleteSizedAndObsolete: {sstable.TableFormatPebblev1, sstable.TableFormatPebblev4},
226+
FormatVirtualSSTables: {sstable.TableFormatPebblev1, sstable.TableFormatPebblev4},
227+
FormatSyntheticPrefixSuffix: {sstable.TableFormatPebblev1, sstable.TableFormatPebblev4},
228+
FormatFlushableIngestExcises: {sstable.TableFormatPebblev1, sstable.TableFormatPebblev4},
229+
FormatColumnarBlocks: {sstable.TableFormatPebblev1, sstable.TableFormatPebblev5},
230+
FormatWALSyncChunks: {sstable.TableFormatPebblev1, sstable.TableFormatPebblev5},
231+
FormatTableFormatV6: {sstable.TableFormatPebblev1, sstable.TableFormatPebblev6},
232+
FormatExperimentalValueSeparation: {sstable.TableFormatPebblev1, sstable.TableFormatPebblev6},
233233
}
234234

235235
// Valid versions.
@@ -286,12 +286,12 @@ func TestFormatMajorVersions_ColumnarBlocks(t *testing.T) {
286286
want: sstable.TableFormatPebblev4,
287287
},
288288
{
289-
fmv: formatValueSeparation,
289+
fmv: FormatExperimentalValueSeparation,
290290
colBlks: true,
291291
want: sstable.TableFormatPebblev6,
292292
},
293293
{
294-
fmv: formatValueSeparation,
294+
fmv: FormatExperimentalValueSeparation,
295295
colBlks: false,
296296
want: sstable.TableFormatPebblev4,
297297
},

value_separation.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ var neverSeparateValues getValueSeparation = func(JobID, *compaction, sstable.Ta
3030
func (d *DB) determineCompactionValueSeparation(
3131
jobID JobID, c *compaction, tableFormat sstable.TableFormat,
3232
) compact.ValueSeparation {
33-
if tableFormat < sstable.TableFormatPebblev6 || d.FormatMajorVersion() < formatValueSeparation ||
33+
if tableFormat < sstable.TableFormatPebblev6 || d.FormatMajorVersion() < FormatExperimentalValueSeparation ||
3434
d.opts.Experimental.ValueSeparationPolicy == nil {
3535
return compact.NeverSeparateValues{}
3636
}

0 commit comments

Comments
 (0)