()
| 26 | } |
| 27 | |
| 28 | func main() { |
| 29 | log.Println("sqlread build:", buildString) |
| 30 | // return |
| 31 | log.Println("starting initial pass") |
| 32 | |
| 33 | unbuff, err := os.Open(filename) |
| 34 | if err != nil { |
| 35 | log.Fatal(err) |
| 36 | } |
| 37 | |
| 38 | buff := bufra.NewBufReaderAt(unbuff, 100000000) |
| 39 | |
| 40 | cache := mapcache.New(unbuff) |
| 41 | tree, err := cache.Get() |
| 42 | if err != nil && err != mapcache.ErrCacheMiss { |
| 43 | log.Fatal(err) |
| 44 | } |
| 45 | |
| 46 | if err == mapcache.ErrCacheMiss || *nocache { |
| 47 | l, li := sqlread.Lex(buff) |
| 48 | go func() { |
| 49 | l.Run(sqlread.StartState) |
| 50 | }() |
| 51 | |
| 52 | sp := sqlread.NewSummaryParser() |
| 53 | |
| 54 | p := sqlread.Parse(li) |
| 55 | err = p.Run(sp.ParseStart) |
| 56 | if err != nil { |
| 57 | log.Fatal(err) |
| 58 | } |
| 59 | |
| 60 | if !*nocache { |
| 61 | cache.Store(sp.Tree) |
| 62 | } |
| 63 | |
| 64 | tree = sp.Tree |
| 65 | } else { |
| 66 | log.Println("loaded from cache") |
| 67 | } |
| 68 | |
| 69 | log.Println("finished initial pass") |
| 70 | |
| 71 | //for tbl, _ := range t { |
| 72 | // fmt.Println(tbl) |
| 73 | //} |
| 74 | |
| 75 | _ = tree |
| 76 | |
| 77 | interactive(tree, buff) |
| 78 | } |
| 79 | |
| 80 | func interactive(tree sqlread.SummaryTree, buff io.ReaderAt) { |
| 81 | w := csv.NewWriter(os.Stdout) |
nothing calls this directly
no test coverage detected