Skip to content

Commit

Permalink
added more fields into Query struct
Browse files Browse the repository at this point in the history
  • Loading branch information
eze-kiel committed Feb 24, 2021
1 parent 0680beb commit 003c1bb
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 3 deletions.
7 changes: 6 additions & 1 deletion cmd/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,15 +31,20 @@ func main() {
if q.Query == "" {
break
}
fmt.Printf("Time: %s\nUser: %s\nHost: %s\nID: %d\nQuery_time: %s\nLock_time: %s\nRows_sent: %d\nRows_examined: %d\nQuery: %s\n\n",
fmt.Printf("Time: %s\nUser: %s\nHost: %s\nID: %d\nSchema: %s\nLast_errno: %d\nKilled: %d\nQuery_time: %s\nLock_time: %s\nRows_sent: %d\nRows_examined: %d\nRows_affected: %d\nBytes_sent: %d\nQuery: %s\n\n",
q.Time,
q.User,
q.Host,
q.ID,
q.Schema,
q.LastErrNo,
q.Killed,
q.QueryTime,
q.LockTime,
q.RowsSent,
q.RowsExamined,
q.RowsAffected,
q.BytesSent,
q.Query,
)
count++
Expand Down
37 changes: 35 additions & 2 deletions slowql.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,15 @@ type Query struct {
User string
Host string
ID int
Schema string
LastErrNo int
Killed int
QueryTime string
LockTime string
RowsSent int
RowsExamined int
RowsAffected int
BytesSent int
Query string
}

Expand All @@ -51,6 +56,11 @@ func (p Parser) GetNext() (Query, error) {
return q, nil
}

// Fingerprint returns Query.query's MD5 fingerprint
func (q *Query) Fingerprint() {

}

// NewParser creates the stack channel and launches background goroutines
func NewParser(r io.Reader) *Parser {
var p Parser
Expand Down Expand Up @@ -135,7 +145,7 @@ func (p *Parser) consume() {
if strings.HasPrefix(line, "#") {
q.parseHeader(line)
} else {
q.Query = line
q.Query = q.Query + line
}
}

Expand All @@ -144,6 +154,7 @@ func (p *Parser) consume() {
}
}

// parseHeader parses everything that begin with #
func (q *Query) parseHeader(line string) {
var err error
parts := strings.Split(line, " ")
Expand All @@ -167,8 +178,13 @@ func (q *Query) parseHeader(line string) {
if err != nil {
logrus.Errorf("error converting %s to int: %s", parts[idx+1], err)
}
} else if strings.Contains(part, "rows_affected") {
q.RowsAffected, err = strconv.Atoi(parts[idx+1])
if err != nil {
logrus.Errorf("error converting %s to int: %s", parts[idx+1], err)
}
} else if strings.Contains(part, "id") {
q.ID, err = strconv.Atoi(parts[idx+4]) // TODO(ezekiel): this is gross, need to find an alternative
q.ID, err = strconv.Atoi(parts[idx+1]) // TODO(ezekiel): this is gross, need to find an alternative
if err != nil {
logrus.Errorf("error converting %s to int: %s", parts[idx+1], err)
}
Expand All @@ -178,6 +194,23 @@ func (q *Query) parseHeader(line string) {
// square brackets
q.User = items[0][1 : len(items[0])-1]
q.Host = items[1][1 : len(items[1])-1]
} else if strings.Contains(part, "schema") {
q.Schema = parts[idx+1]
} else if strings.Contains(part, "last_errno") {
q.LastErrNo, err = strconv.Atoi(parts[idx+1])
if err != nil {
logrus.Errorf("error converting %s to int: %s", parts[idx+1], err)
}
} else if strings.Contains(part, "killed") {
q.Killed, err = strconv.Atoi(parts[idx+1])
if err != nil {
logrus.Errorf("error converting %s to int: %s", parts[idx+1], err)
}
} else if strings.Contains(part, "bytes_sent") {
q.BytesSent, err = strconv.Atoi(parts[idx+1])
if err != nil {
logrus.Errorf("error converting %s to int: %s", parts[idx+1], err)
}
}
}
}

0 comments on commit 003c1bb

Please sign in to comment.