MCPcopy Create free account
hub / github.com/araddon/qlbridge / walkSelectList

Method walkSelectList

datasource/sqlite/sqlrewrite.go:90–134  ·  view source on GitHub ↗

Aggregations from the SELECT FROM ... WHERE

()

Source from the content-addressed store, hash-verified

88// SELECT <select_list> FROM ... WHERE
89//
90func (m *rewrite) walkSelectList() error {
91
92 m.result.Columns = m.sel.Columns
93
94 for i := len(m.result.Columns) - 1; i >= 0; i-- {
95 col := m.result.Columns[i]
96 //u.Debugf("i=%d of %d %v %#v ", i, len(m.sel.Columns), col.Key(), col)
97 if col.Expr != nil {
98 switch curNode := col.Expr.(type) {
99 // case *expr.NumberNode:
100 // return nil, value.NewNumberValue(curNode.Float64), nil
101 // case *expr.BinaryNode:
102 // return m.walkBinary(curNode)
103 // case *expr.TriNode: // Between
104 // return m.walkTri(curNode)
105 // case *expr.UnaryNode:
106 // return m.walkUnary(curNode)
107 case *expr.FuncNode:
108 // All Func Nodes are Aggregates?
109 newNode, err := m.selectFunc(curNode)
110 if err == nil {
111 col.Expr = newNode
112 } else if err != nil {
113 u.Error(err)
114 return err
115 }
116 //u.Debugf("esm: %v:%v", col.As, esm)
117 //u.Debugf(curNode.String())
118 // case *expr.ArrayNode:
119 // return m.walkArrayNode(curNode)
120 // case *expr.IdentityNode:
121 // return nil, value.NewStringValue(curNode.Text), nil
122 // case *expr.StringNode:
123 // return nil, value.NewStringValue(curNode.Text), nil
124 case *expr.IdentityNode:
125 //u.Debugf("likely a projection, not agg T:%T %v", curNode, curNode)
126 default:
127 u.Warnf("unrecognized not agg T:%T %v", curNode, curNode)
128 //panic("Unrecognized node type")
129 }
130 }
131
132 }
133 return nil
134}
135
136// Group By Clause: Mongo is a little weird where they move the
137// group by expressions INTO the aggregation clause:

Callers 1

rewriteMethod · 0.95

Calls 2

selectFuncMethod · 0.95
ErrorMethod · 0.45

Tested by

no test coverage detected