func (s *file) CreateIndex(unique bool) ( /* handle */ int64, btreeIndex, error) { t, h, err := lldb.CreateBTree(s.a, s.collate) if err != nil { return -1, nil, err } return h, &fileIndex{s, h, t, unique, newGobCoder()}, nil }
func (s *file) CreateTemp(asc bool) (bt temp, err error) { f, err := s.tempFile("", "ql-tmp-") if err != nil { return nil, err } fn := f.Name() filer := lldb.NewOSFiler(f) a, err := lldb.NewAllocator(filer, &lldb.Options{}) if err != nil { f.Close() os.Remove(fn) return nil, err } k := 1 if !asc { k = -1 } t, _, err := lldb.CreateBTree(a, func(a, b []byte) int { //TODO w/ error return return k * s.collate(a, b) }) if err != nil { f.Close() if fn != "" { os.Remove(fn) } return nil, err } x := &fileTemp{file: &file{ a: a, codec: newGobCoder(), f0: f, }, t: t} return x, nil }