MCPcopy Create free account
hub / github.com/brimdata/super / Compact

Function Compact

runtime/exec/compact.go:16–57  ·  view source on GitHub ↗
(ctx context.Context, _ *db.Root, pool *db.Pool, branchName string, objectIDs []ksuid.KSUID, writeVectors bool, author, message, info string)

Source from the content-addressed store, hash-verified

14)
15
16func Compact(ctx context.Context, _ *db.Root, pool *db.Pool, branchName string, objectIDs []ksuid.KSUID, writeVectors bool, author, message, info string) (ksuid.KSUID, error) {
17 if len(objectIDs) < 2 {
18 return ksuid.Nil, errors.New("compact: two or more source objects required")
19 }
20 branch, err := pool.OpenBranchByName(ctx, branchName)
21 if err != nil {
22 return ksuid.Nil, err
23 }
24 base, err := pool.Snapshot(ctx, branch.Commit)
25 if err != nil {
26 return ksuid.Nil, err
27 }
28 compact := commits.NewSnapshot()
29 for _, oid := range objectIDs {
30 o, err := base.Lookup(oid)
31 if err != nil {
32 return ksuid.Nil, err
33 }
34 compact.AddDataObject(o)
35 }
36 sctx := super.NewContext()
37 lister := meta.NewSortedListerFromSnap(ctx, super.NewContext(), pool, compact, nil)
38 rctx := runtime.NewContext(ctx, sctx)
39 slicer := meta.NewSlicer(lister, sctx)
40 puller := meta.NewSequenceScanner(rctx, slicer, pool, nil, nil, nil)
41 w := db.NewSortedWriter(ctx, sctx, pool, writeVectors)
42 if err := sbuf.CopyPuller(w, puller); err != nil {
43 puller.Pull(true)
44 w.Abort()
45 return ksuid.Nil, err
46 }
47 if err := w.Close(); err != nil {
48 w.Abort()
49 return ksuid.Nil, err
50 }
51 commit, err := branch.CommitCompact(ctx, compact.SelectAll(), w.Objects(), w.Vectors(), author, message, info)
52 if err != nil {
53 w.Abort()
54 return ksuid.Nil, err
55 }
56 return commit, nil
57}

Callers 2

handleCompactFunction · 0.92
CompactMethod · 0.92

Calls 15

AddDataObjectMethod · 0.95
PullMethod · 0.95
AbortMethod · 0.95
CloseMethod · 0.95
SelectAllMethod · 0.95
ObjectsMethod · 0.95
VectorsMethod · 0.95
NewSnapshotFunction · 0.92
NewContextFunction · 0.92
NewSortedListerFromSnapFunction · 0.92
NewContextFunction · 0.92
NewSlicerFunction · 0.92

Tested by

no test coverage detected