@@ -2,6 +2,7 @@ package runtime
22
33import (
44 "fmt"
5+ "strconv"
56 "log"
67 "strings"
78
@@ -26,7 +27,7 @@ func walkCommits(n *parser.NodeProgram, visitor *RuntimeVisitor) (*TableData, er
2627 resultFields := fields // These are the fields in output with wildcards expanded
2728 rows := make ([]tableRow , s .Limit )
2829 usingOrder := false
29- if s .Order != nil {
30+ if s .Order != nil && ! s . Count {
3031 usingOrder = true
3132 // Check if the order by field is in the selected fields. If not, add them to selected fields list
3233 if ! utilities .IsFieldPresentInArray (fields , s .Order .Field ) {
@@ -38,15 +39,16 @@ func walkCommits(n *parser.NodeProgram, visitor *RuntimeVisitor) (*TableData, er
3839 boolRegister = true
3940 visitor .VisitExpr (where )
4041 if boolRegister {
41- newRow := make (tableRow )
42- for _ , f := range fields {
43- newRow [f ] = metadataCommit (f , object )
42+ if ! s .Count {
43+ newRow := make (tableRow )
44+ for _ , f := range fields {
45+ newRow [f ] = metadataCommit (f , object )
46+ }
47+ rows = append (rows , newRow )
4448 }
45- rows = append (rows , newRow )
46-
4749 counter = counter + 1
4850 }
49- if ! usingOrder && counter > s .Limit {
51+ if ! usingOrder && ! s . Count && counter > s .Limit {
5052 return false
5153 }
5254 return true
@@ -56,13 +58,20 @@ func walkCommits(n *parser.NodeProgram, visitor *RuntimeVisitor) (*TableData, er
5658 if err != nil {
5759 fmt .Printf (err .Error ())
5860 }
61+ if s .Count {
62+ newRow := make (tableRow )
63+ // counter was started from 1!
64+ newRow [COUNT_FIELD_NAME ] = strconv .Itoa (counter - 1 )
65+ counter = 2
66+ rows = append (rows , newRow )
67+ }
5968 rowsSliced := rows [len (rows )- counter + 1 :]
6069 rowsSliced , err = orderTable (rowsSliced , s .Order )
6170 if err != nil {
6271 return nil , err
6372 }
6473
65- if usingOrder && counter > s .Limit {
74+ if usingOrder && ! s . Count && counter > s .Limit {
6675 counter = s .Limit
6776 rowsSliced = rowsSliced [0 :counter ]
6877 }
0 commit comments