MCPcopy
hub / github.com/grafana/tempo / Run

Method Run

cmd/tempo-cli/cmd-list-column.go:24–86  ·  view source on GitHub ↗
(ctx *globalOptions)

Source from the content-addressed store, hash-verified

22}
23
24func (cmd *listColumnCmd) Run(ctx *globalOptions) error {
25 r, _, _, err := loadBackend(&cmd.backendOptions, ctx)
26 if err != nil {
27 return err
28 }
29
30 meta, err := r.BlockMeta(context.TODO(), uuid.MustParse(cmd.BlockID), cmd.TenantID)
31 if err != nil {
32 return err
33 }
34
35 rr := vparquet3.NewBackendReaderAt(context.Background(), r, vparquet3.DataFileName, meta)
36 pf, err := parquet.OpenFile(rr, int64(meta.Size_))
37 if err != nil {
38 return err
39 }
40
41 colIndex, _, _ := pq.GetColumnIndexByPath(pf, cmd.Column)
42
43 for i, rg := range pf.RowGroups() {
44
45 // choose the column mentioned in the cli param
46 cc := rg.ColumnChunks()[colIndex]
47
48 fmt.Printf("\n*************** rowgroup %d ********************\n\n\n", i)
49
50 pages := cc.Pages()
51 idx, err := cc.ColumnIndex()
52 if err != nil {
53 return err
54 }
55 numPages := idx.NumPages()
56 fmt.Println("Min Value of rowgroup", string(idx.MinValue(0).Bytes()))
57 fmt.Println("Max Value of rowgroup", string(idx.MaxValue(numPages-1).Bytes()))
58
59 buffer := make([]parquet.Value, 10000)
60 for {
61 pg, err := pages.ReadPage()
62 if pg == nil || errors.Is(err, io.EOF) {
63 break
64 }
65
66 vr := pg.Values()
67 for {
68 x, err := vr.ReadValues(buffer)
69 for y := 0; y < x; y++ {
70 fmt.Println(string(buffer[y].Bytes()))
71 }
72
73 // check for EOF after processing any returned data
74 if errors.Is(err, io.EOF) {
75 break
76 }
77 // todo: better error handling
78 if err != nil {
79 break
80 }
81 }

Callers

nothing calls this directly

Calls 5

NewBackendReaderAtFunction · 0.92
loadBackendFunction · 0.85
BytesMethod · 0.80
BlockMetaMethod · 0.65
ValuesMethod · 0.45

Tested by

no test coverage detected