(ctx *globalOptions)
| 22 | } |
| 23 | |
| 24 | func (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 | } |
nothing calls this directly
no test coverage detected