MCPcopy Create free account
hub / github.com/PostHog/duckgres / transformSelectStmt

Method transformSelectStmt

transpiler/transform/operators.go:81–190  ·  view source on GitHub ↗
(stmt *pg_query.SelectStmt)

Source from the content-addressed store, hash-verified

79}
80
81func (t *OperatorTransform) transformSelectStmt(stmt *pg_query.SelectStmt) bool {
82 if stmt == nil {
83 return false
84 }
85
86 changed := false
87
88 // Transform target list
89 for _, target := range stmt.TargetList {
90 if resTarget := target.GetResTarget(); resTarget != nil && resTarget.Val != nil {
91 if newVal := t.transformExpression(resTarget.Val); newVal != nil {
92 resTarget.Val = newVal
93 changed = true
94 }
95 }
96 }
97
98 // Transform WHERE clause
99 if stmt.WhereClause != nil {
100 if newWhere := t.transformExpression(stmt.WhereClause); newWhere != nil {
101 stmt.WhereClause = newWhere
102 changed = true
103 }
104 }
105
106 // Transform HAVING clause
107 if stmt.HavingClause != nil {
108 if newHaving := t.transformExpression(stmt.HavingClause); newHaving != nil {
109 stmt.HavingClause = newHaving
110 changed = true
111 }
112 }
113
114 // Transform VALUES lists (e.g. INSERT INTO t VALUES ('abc' ~ 'b'))
115 for _, valuesList := range stmt.ValuesLists {
116 if list := valuesList.GetList(); list != nil {
117 for i, item := range list.Items {
118 if newItem := t.transformExpression(item); newItem != nil {
119 list.Items[i] = newItem
120 changed = true
121 }
122 }
123 }
124 }
125
126 // Transform DISTINCT ON expressions. Plain DISTINCT is represented as a
127 // single empty node, which transformExpression leaves untouched.
128 for i, distinct := range stmt.DistinctClause {
129 if newDistinct := t.transformExpression(distinct); newDistinct != nil {
130 stmt.DistinctClause[i] = newDistinct
131 changed = true
132 }
133 }
134
135 // Transform GROUP BY expressions (e.g. GROUP BY data->>'type')
136 for i, group := range stmt.GroupClause {
137 if newGroup := t.transformExpression(group); newGroup != nil {
138 stmt.GroupClause[i] = newGroup

Callers 4

TransformMethod · 0.95
transformInsertStmtMethod · 0.95
transformFromItemMethod · 0.95
transformExpressionMethod · 0.95

Calls 4

transformExpressionMethod · 0.95
transformSortClauseMethod · 0.95
transformWindowDefMethod · 0.95
transformFromItemMethod · 0.95

Tested by

no test coverage detected