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

Method walkSelectStmt

transpiler/transform/typecast.go:282–320  ·  view source on GitHub ↗
(stmt *pg_query.SelectStmt, changed *bool)

Source from the content-addressed store, hash-verified

280}
281
282func (t *TypeCastTransform) walkSelectStmt(stmt *pg_query.SelectStmt, changed *bool) {
283 if stmt == nil {
284 return
285 }
286
287 for _, target := range stmt.TargetList {
288 t.walkAndTransform(target, changed)
289 }
290 for _, from := range stmt.FromClause {
291 t.walkAndTransform(from, changed)
292 }
293 t.walkAndTransform(stmt.WhereClause, changed)
294 for _, group := range stmt.GroupClause {
295 t.walkAndTransform(group, changed)
296 }
297 t.walkAndTransform(stmt.HavingClause, changed)
298 for _, sort := range stmt.SortClause {
299 t.walkAndTransform(sort, changed)
300 }
301 t.walkAndTransform(stmt.LimitCount, changed)
302 t.walkAndTransform(stmt.LimitOffset, changed)
303
304 // VALUES (...) rows — e.g. INSERT INTO t VALUES ('{1,2}'::int[]) — so casts
305 // in a VALUES list (including PG array literals) are transformed.
306 for _, valuesList := range stmt.ValuesLists {
307 t.walkAndTransform(valuesList, changed)
308 }
309
310 if stmt.WithClause != nil {
311 t.walkAndTransform(&pg_query.Node{Node: &pg_query.Node_WithClause{WithClause: stmt.WithClause}}, changed)
312 }
313
314 if stmt.Larg != nil {
315 t.walkSelectStmt(stmt.Larg, changed)
316 }
317 if stmt.Rarg != nil {
318 t.walkSelectStmt(stmt.Rarg, changed)
319 }
320}
321
322// createRegclassFromNameSubquery creates a SubLink for 'tablename'::regclass or 'tablename'::text::regclass
323// This converts: 'users'::regclass or 'users'::text::regclass

Callers 1

walkAndTransformMethod · 0.95

Calls 1

walkAndTransformMethod · 0.95

Tested by

no test coverage detected