diff --git a/go/cmd/flag_config.go b/go/cmd/flag_config.go index 56b33aa..11748ee 100644 --- a/go/cmd/flag_config.go +++ b/go/cmd/flag_config.go @@ -89,5 +89,8 @@ func csvFlagsToConfig(cmd *cobra.Command, flags csvFlags) data.CSVConfig { if cmd.Flags().Changed("csv-timestamp-field") { c.TimestampField = &flags.timestampField } + if cmd.Flags().Changed("csv-header") { + c.Header = flags.header + } return c } diff --git a/go/cmd/keys.go b/go/cmd/keys.go index ce3fb81..8acb18e 100644 --- a/go/cmd/keys.go +++ b/go/cmd/keys.go @@ -32,10 +32,8 @@ func keysCmd() *cobra.Command { Short: "Runs vexplain keys on all queries of the test file", Example: "vt keys file.test", Args: cobra.ExactArgs(1), - PreRun: func(cmd *cobra.Command, _ []string) { - csvConfig = csvFlagsToConfig(cmd, *flags) - }, RunE: func(c *cobra.Command, args []string) error { + csvConfig = csvFlagsToConfig(c, *flags) cfg := keys.Config{ FileName: args[0], } diff --git a/go/data/csv_log_parse.go b/go/data/csv_log_parse.go index b82ce0b..df10284 100644 --- a/go/data/csv_log_parse.go +++ b/go/data/csv_log_parse.go @@ -18,6 +18,7 @@ package data import ( "encoding/csv" + "fmt" "io" "os" "strconv" @@ -81,6 +82,10 @@ func (c *csvLogReaderState) Next() (Query, bool) { l, _ := c.reader.FieldPos(0) + helpfulPanic := func(err error, val string) { + panic(fmt.Sprintf("%s at line: %d for value: %s", err.Error(), l, val)) + } + recordToInt := func(idx *int) int { if idx == nil { return 0 @@ -88,7 +93,7 @@ func (c *csvLogReaderState) Next() (Query, bool) { val := record[*idx] i, err := strconv.Atoi(val) if err != nil { - panic(err) + helpfulPanic(err, val) } return i } @@ -100,7 +105,7 @@ func (c *csvLogReaderState) Next() (Query, bool) { val := record[*idx] f, err := strconv.ParseFloat(val, 64) if err != nil { - panic(err) + helpfulPanic(err, val) } return f } @@ -112,7 +117,7 @@ func (c *csvLogReaderState) Next() (Query, bool) { val := record[*idx] t, err := time.Parse(time.DateTime, val) if err != nil { - panic(err) + helpfulPanic(err, val) } return t.Unix() }