diff --git a/field.go b/field.go index 5a76b38ef..a60022735 100644 --- a/field.go +++ b/field.go @@ -543,26 +543,6 @@ func (f *Field) Type() string { return f.options.Type } -// SetCacheSize sets the cache size for ranked fames. Persists to meta file on update. -// defaults to DefaultCacheSize 50000 -func (f *Field) SetCacheSize(v uint32) error { - f.mu.Lock() - defer f.mu.Unlock() - - // Ignore if no change occurred. - if v == 0 || f.options.CacheSize == v { - return nil - } - - // Persist meta data to disk on change. - f.options.CacheSize = v - if err := f.saveMeta(); err != nil { - return errors.Wrap(err, "saving") - } - - return nil -} - // CacheSize returns the ranked field cache size. func (f *Field) CacheSize() uint32 { f.mu.RLock() @@ -902,10 +882,7 @@ func (f *Field) applyOptions(opt FieldOptions) error { Scale: opt.Scale, BitDepth: opt.BitDepth, } - // Validate bsiGroup. - if err := bsig.validate(); err != nil { - return err - } + // Validate and create bsiGroup. if err := f.createBSIGroup(bsig); err != nil { return errors.Wrap(err, "creating bsigroup") } @@ -919,11 +896,11 @@ func (f *Field) applyOptions(opt FieldOptions) error { f.options.BitDepth = 0 f.options.Keys = opt.Keys f.options.NoStandardView = opt.NoStandardView - // Set the time quantum. - if err := f.setTimeQuantum(opt.TimeQuantum); err != nil { - f.Close() - return errors.Wrap(err, "setting time quantum") + // Validate the time quantum. + if !opt.TimeQuantum.Valid() { + return ErrInvalidTimeQuantum } + f.options.TimeQuantum = opt.TimeQuantum f.options.ForeignIndex = opt.ForeignIndex case FieldTypeBool: f.options.Type = FieldTypeBool @@ -1016,17 +993,6 @@ func (f *Field) createBSIGroup(bsig *bsiGroup) error { defer f.mu.Unlock() // Append bsiGroup. - if err := f.addBSIGroup(bsig); err != nil { - return err - } - if err := f.saveMeta(); err != nil { - return errors.Wrap(err, "saving") - } - return nil -} - -// addBSIGroup adds a single bsiGroup to bsiGroups. -func (f *Field) addBSIGroup(bsig *bsiGroup) error { if err := bsig.validate(); err != nil { return errors.Wrap(err, "validating bsigroup") } else if f.hasBSIGroup(bsig.Name) { @@ -1051,27 +1017,6 @@ func (f *Field) TimeQuantum() TimeQuantum { return f.options.TimeQuantum } -// setTimeQuantum sets the time quantum for the field. -func (f *Field) setTimeQuantum(q TimeQuantum) error { - f.mu.Lock() - defer f.mu.Unlock() - - // Validate input. - if !q.Valid() { - return ErrInvalidTimeQuantum - } - - // Update value on field. - f.options.TimeQuantum = q - - // Persist meta data to disk. - if err := f.saveMeta(); err != nil { - return errors.Wrap(err, "saving meta") - } - - return nil -} - // RowTime gets the row at the particular time with the granularity specified by // the quantum. func (f *Field) RowTime(tx Tx, rowID uint64, time time.Time, quantum string) (*Row, error) { diff --git a/field_internal_test.go b/field_internal_test.go index d187d5ab9..88529d32d 100644 --- a/field_internal_test.go +++ b/field_internal_test.go @@ -297,13 +297,11 @@ func TestField_CreateViewIfNotExists(t *testing.T) { } func TestField_SetTimeQuantum(t *testing.T) { - f := OpenField(t, OptFieldTypeTime(TimeQuantum(""))) + f := OpenField(t, OptFieldTypeTime(TimeQuantum("YMDH"))) defer f.Close() - // Set & retrieve time quantum. - if err := f.setTimeQuantum(TimeQuantum("YMDH")); err != nil { - t.Fatal(err) - } else if q := f.TimeQuantum(); q != TimeQuantum("YMDH") { + // Retrieve time quantum. + if q := f.TimeQuantum(); q != TimeQuantum("YMDH") { t.Fatalf("unexpected quantum: %s", q) } @@ -316,17 +314,13 @@ func TestField_SetTimeQuantum(t *testing.T) { } func TestField_RowTime(t *testing.T) { - f := OpenField(t, OptFieldTypeTime(TimeQuantum(""))) + f := OpenField(t, OptFieldTypeTime(TimeQuantum("YMDH"))) defer f.Close() // Obtain transaction. tx := f.idx.holder.txf.NewTx(Txo{Write: writable, Index: f.idx, Field: f.Field, Shard: 0}) defer tx.Rollback() - if err := f.setTimeQuantum(TimeQuantum("YMDH")); err != nil { - t.Fatal(err) - } - f.MustSetBit(tx, 1, 1, time.Date(2010, time.January, 5, 12, 0, 0, 0, time.UTC)) f.MustSetBit(tx, 1, 2, time.Date(2011, time.January, 5, 12, 0, 0, 0, time.UTC)) f.MustSetBit(tx, 1, 3, time.Date(2010, time.February, 5, 12, 0, 0, 0, time.UTC)) diff --git a/test/field.go b/test/field.go index 817a72153..4663e4c0a 100644 --- a/test/field.go +++ b/test/field.go @@ -15,72 +15,10 @@ package test import ( - "os" - "testing" - "github.com/pilosa/pilosa/v2" - "github.com/pilosa/pilosa/v2/testhook" ) // Field represents a test wrapper for pilosa.Field. type Field struct { *pilosa.Field } - -// newField returns a new instance of Field. -func newField(tb testing.TB, opts pilosa.FieldOption) *Field { - path, err := testhook.TempDir(tb, "pilosa-field-") - if err != nil { - panic(err) - } - // This path is probably wrong, but we don't care much because it's a scratch holder anyway. - field, err := pilosa.NewField(pilosa.NewHolder(path, nil), path, "i", "f", opts) - if err != nil { - panic(err) - } - return &Field{Field: field} -} - -// mustOpenField returns a new, opened field at a temporary path. Panic on error. -func mustOpenField(tb testing.TB, opts pilosa.FieldOption) *Field { - f := newField(tb, opts) - if err := f.Open(); err != nil { - panic(err) - } - return f -} - -// close closes the field and removes the underlying data. -func (f *Field) close() error { // nolint: unparam - defer os.RemoveAll(f.Path()) - return f.Field.Close() -} - -// reopen closes the index and reopens it. -func (f *Field) reopen() error { - if err := f.Field.Close(); err != nil { - return err - } - return f.Field.Open() -} - -// Ensure field can set its cache -func TestField_SetCacheSize(t *testing.T) { - f := mustOpenField(t, pilosa.OptFieldTypeDefault()) - defer f.close() - cacheSize := uint32(100) - - // Set & retrieve field cache size. - if err := f.SetCacheSize(cacheSize); err != nil { - t.Fatal(err) - } else if q := f.CacheSize(); q != cacheSize { - t.Fatalf("unexpected field cache size: %d", q) - } - - // Reload field and verify that it is persisted. - if err := f.reopen(); err != nil { - t.Fatal(err) - } else if q := f.CacheSize(); q != cacheSize { - t.Fatalf("unexpected field cache size (reopen): %d", q) - } -}