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

Function CreateVector

db/data/vector.go:21–64  ·  view source on GitHub ↗

CreateVector writes the vectorized form of an existing Object in the CSUP format.

(ctx context.Context, engine storage.Engine, path *storage.URI, id ksuid.KSUID)

Source from the content-addressed store, hash-verified

19
20// CreateVector writes the vectorized form of an existing Object in the CSUP format.
21func CreateVector(ctx context.Context, engine storage.Engine, path *storage.URI, id ksuid.KSUID) error {
22 get, err := engine.Get(ctx, SequenceURI(path, id))
23 if err != nil {
24 if errors.Is(err, fs.ErrNotExist) {
25 // Make a cleaner error.
26 err = fmt.Errorf("object %s: %w", id, fs.ErrNotExist)
27 }
28 return err
29 }
30 w, err := NewVectorWriter(ctx, engine, path, id) //Pusher
31 if err != nil {
32 get.Close()
33 return err
34 }
35 // Note here that writer.Close closes the Put but reader.Close does not
36 // close the Get.
37 sctx := super.NewContext()
38 reader := bsupio.NewReader(sctx, get)
39 puller := sbuf.NewDematerializer(sctx, sbuf.NewPuller(reader))
40 for {
41 var vec vector.Any
42 vec, err = puller.Pull(false)
43 if vec == nil || err != nil {
44 break
45 }
46 err = w.Push(vec)
47 if err != nil {
48 break
49 }
50 }
51 if closeErr := w.Close(); err == nil {
52 err = closeErr
53 }
54 if closeErr := reader.Close(); err == nil {
55 err = closeErr
56 }
57 if closeErr := get.Close(); err == nil {
58 err = closeErr
59 }
60 if err != nil {
61 w.Abort()
62 }
63 return err
64}
65
66type VectorWriter struct {
67 *csup.Serializer

Callers 2

AddVectorsMethod · 0.92

Calls 13

PullMethod · 0.95
CloseMethod · 0.95
AbortMethod · 0.95
NewContextFunction · 0.92
NewReaderFunction · 0.92
NewDematerializerFunction · 0.92
NewPullerFunction · 0.92
SequenceURIFunction · 0.85
NewVectorWriterFunction · 0.85
IsMethod · 0.80
GetMethod · 0.65
CloseMethod · 0.65

Tested by 1