// getDataTableRaw returns a db.DataTable with the X-axis as time, all other // columns sorted by name, and no specified row order. func getDataTableRaw(D db.DB, req db.RowRangeRequests) (dTable *db.DataTable, err error) { t2 := time.Now() if len(req.FilteredSources) == 0 { return dTable, errors.New("No sources selected.") } dTable, err = D.ReadRows(req) if err != nil { return nil, err } t1 := time.Now() if len(dTable.ColumnNames) > 0 { originalName := dTable.ColumnNames[0] dTable.ColumnNames[0] = "!" + originalName // Force first column to sort first. dTable.SortDataColumns() dTable.ColumnNames[0] = originalName // Now remove "!" glog.V(2).Infof("PERF: Data column sort time: %v\n", time.Now().Sub(t1)) } t2Delay := time.Now().Sub(t2) glog.V(2).Infof("PERF: DB read time: %v\n", t2Delay) if glog.V(2) && t2Delay.Seconds() > 0 && len(dTable.ColumnNames) > 0 { glog.Infof("PERF: DB row reads/sec: %d\n", int64(float64(len(dTable.Data))/t2Delay.Seconds())) } return dTable, nil }