Skip to content

Commit 1d4d6cf

Browse files
committed
refactor: further extract AliasedTableExpr handling to fix linter issues
- Remove unused error return from processCTEReference (unparam fix) - Extract visitAliasedTableExpr helper method to reduce nesting (nestif fix)
1 parent d674161 commit 1d4d6cf

File tree

1 file changed

+46
-53
lines changed

1 file changed

+46
-53
lines changed

internal/stackql/astanalysis/earlyanalysis/ast_expand.go

Lines changed: 46 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -185,10 +185,10 @@ func (v *indirectExpandAstVisitor) IsReadOnly() bool {
185185
func (v *indirectExpandAstVisitor) processCTEReference(
186186
node *sqlparser.AliasedTableExpr,
187187
tableName string,
188-
) (bool, error) {
188+
) bool {
189189
cteSubquery, isCTE := v.cteRegistry[tableName]
190190
if !isCTE {
191-
return false, nil
191+
return false
192192
}
193193
// Use the CTE name as the effective alias if no explicit alias is set
194194
effectiveAlias := node.As.GetRawVal()
@@ -203,13 +203,50 @@ func (v *indirectExpandAstVisitor) processCTEReference(
203203
sq := internaldto.NewSubqueryDTO(syntheticExpr, cteSubquery)
204204
indirect, err := astindirect.NewSubqueryIndirect(sq)
205205
if err != nil {
206-
return true, nil //nolint:nilerr //TODO: investigate
206+
return true //nolint:nilerr //TODO: investigate
207207
}
208-
err = v.processIndirect(syntheticExpr, indirect)
209-
if err != nil {
210-
return true, nil //nolint:nilerr //TODO: investigate
208+
_ = v.processIndirect(syntheticExpr, indirect) //nolint:errcheck // errors handled via indirect pattern
209+
return true
210+
}
211+
212+
// visitAliasedTableExpr handles visiting an AliasedTableExpr node, including
213+
// subqueries, CTE references, and regular table expressions.
214+
func (v *indirectExpandAstVisitor) visitAliasedTableExpr(node *sqlparser.AliasedTableExpr) error {
215+
if node.Expr != nil {
216+
switch n := node.Expr.(type) { //nolint:gocritic // switch preferred for type assertions
217+
case *sqlparser.Subquery:
218+
sq := internaldto.NewSubqueryDTO(node, n)
219+
indirect, err := astindirect.NewSubqueryIndirect(sq)
220+
if err != nil {
221+
return nil //nolint:nilerr //TODO: investigate
222+
}
223+
_ = v.processIndirect(node, indirect) //nolint:errcheck // errors handled via indirect pattern
224+
return nil
225+
case sqlparser.TableName:
226+
if v.processCTEReference(node, n.GetRawVal()) {
227+
return nil
228+
}
229+
}
230+
if err := node.Expr.Accept(v); err != nil {
231+
return err
232+
}
211233
}
212-
return true, nil
234+
if node.Partitions != nil {
235+
if err := node.Partitions.Accept(v); err != nil {
236+
return err
237+
}
238+
}
239+
if !node.As.IsEmpty() {
240+
if err := node.As.Accept(v); err != nil {
241+
return err
242+
}
243+
}
244+
if node.Hints != nil {
245+
if err := node.Hints.Accept(v); err != nil {
246+
return err
247+
}
248+
}
249+
return nil
213250
}
214251

215252
func (v *indirectExpandAstVisitor) ContainsAnalyticsCacheMaterial() bool {
@@ -813,52 +850,8 @@ func (v *indirectExpandAstVisitor) Visit(node sqlparser.SQLNode) error {
813850
}
814851

815852
case *sqlparser.AliasedTableExpr:
816-
if node.Expr != nil {
817-
//nolint:gocritic // deferring cosmetics on visitors
818-
switch n := node.Expr.(type) {
819-
case *sqlparser.Subquery:
820-
sq := internaldto.NewSubqueryDTO(node, n)
821-
indirect, err := astindirect.NewSubqueryIndirect(sq)
822-
if err != nil {
823-
return nil //nolint:nilerr //TODO: investigate
824-
}
825-
err = v.processIndirect(node, indirect)
826-
if err != nil {
827-
return nil //nolint:nilerr //TODO: investigate
828-
}
829-
return nil
830-
case sqlparser.TableName:
831-
// Check if this table name is a CTE reference
832-
processed, err := v.processCTEReference(node, n.GetRawVal())
833-
if err != nil {
834-
return err
835-
}
836-
if processed {
837-
return nil
838-
}
839-
}
840-
err := node.Expr.Accept(v)
841-
if err != nil {
842-
return err
843-
}
844-
}
845-
if node.Partitions != nil {
846-
err := node.Partitions.Accept(v)
847-
if err != nil {
848-
return err
849-
}
850-
}
851-
if !node.As.IsEmpty() {
852-
err := node.As.Accept(v)
853-
if err != nil {
854-
return err
855-
}
856-
}
857-
if node.Hints != nil {
858-
err := node.Hints.Accept(v)
859-
if err != nil {
860-
return err
861-
}
853+
if err := v.visitAliasedTableExpr(node); err != nil {
854+
return err
862855
}
863856

864857
case sqlparser.TableNames:

0 commit comments

Comments
 (0)