| 340 | for _, from := range stmt.FromClause { |
| 341 | walkNode(from, fn) |
| 342 | } |
| 343 | walkNode(stmt.WhereClause, fn) |
| 344 | for _, group := range stmt.GroupClause { |
| 345 | walkNode(group, fn) |
| 346 | } |
| 347 | walkNode(stmt.HavingClause, fn) |
| 348 | for _, window := range stmt.WindowClause { |
| 349 | walkNode(window, fn) |
| 350 | } |
| 351 | for _, sort := range stmt.SortClause { |
| 352 | walkNode(sort, fn) |
| 353 | } |
| 354 | // VALUES rows (INSERT ... VALUES, bare VALUES, VALUES in set-ops/CTEs): |
| 355 | // each entry wraps a Node_List that walkNode recurses into. |
| 356 | for _, vl := range stmt.ValuesLists { |
| 357 | walkNode(vl, fn) |
| 358 | } |
| 359 | walkNode(stmt.LimitCount, fn) |
| 360 | walkNode(stmt.LimitOffset, fn) |