Skip to content

Commit 806f6cb

Browse files
post-debug
1 parent 5e12001 commit 806f6cb

2 files changed

Lines changed: 9 additions & 1 deletion

File tree

.vscode/launch.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,7 @@
198198
"select lhs.proj, lhs.bucket from (select 'testing-project' as proj, 'silly-bucket' as bucket) lhs LEFT OUTER join (select name from google.storage.buckets where project = 'testing-project') rhs on lhs.bucket = rhs.name where rhs.name;",
199199
"insert into google.storage.buckets( project, data__name) select lhs.proj, lhs.bucket from (select 'testing-project' as proj, 'silly-bucket' as bucket) lhs LEFT OUTER join (select name from google.storage.buckets where project = 'testing-project') rhs on lhs.bucket = rhs.name where rhs.name is null returning *;",
200200
"select description, price_monthly, price_hourly from digitalocean.sizes.sizes where price_monthly = 7.0 order by description desc;",
201+
"create or replace view vw_repos_name as select name from stackql_repositories; create or replace view vw_repos_url as select name, url from stackql_repositories; select v1.name from vw_repos_name v1 inner join vw_repos_url v2 on v1.name = v2.name;",
201202
],
202203
"default": "show providers;"
203204
},

internal/stackql/astvisit/from_rewrite.go

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -650,6 +650,7 @@ func (v *standardFromRewriteAstVisitor) Visit(node sqlparser.SQLNode) error {
650650

651651
case *sqlparser.AliasedTableExpr:
652652
var exprStr, partitionStr string
653+
aliasHandledByIndirect := false
653654
if node.Expr != nil {
654655
anCtx, ok := v.annotations[node]
655656
if !ok {
@@ -661,12 +662,18 @@ func (v *standardFromRewriteAstVisitor) Visit(node sqlparser.SQLNode) error {
661662
if indirect, isIndirect := anCtx.GetTableMeta().GetIndirect(); isIndirect {
662663
//
663664
name := indirect.GetName()
665+
// Use the user-specified alias if present, otherwise the view/indirect name.
666+
// This prevents double aliasing when the node.As fallthrough appends the alias again.
667+
if !node.As.IsEmpty() {
668+
name = node.As.GetRawVal()
669+
}
664670
indirectType := indirect.GetType()
665671
switch indirectType {
666672
case astindirect.ViewType:
667673
templateString := fmt.Sprintf(` ( %%s ) AS "%s" `, name)
668674
v.rewrittenQuery = templateString
669675
v.indirectContexts = append(v.indirectContexts, indirect.GetSelectContext())
676+
aliasHandledByIndirect = true
670677
case astindirect.SubqueryType:
671678
// Note: CTEs are converted to SubqueryType at AST level,
672679
// so this path handles both regular subqueries and CTEs.
@@ -726,7 +733,7 @@ func (v *standardFromRewriteAstVisitor) Visit(node sqlparser.SQLNode) error {
726733
partitionStr = v.GetRewrittenQuery()
727734
}
728735
q := fmt.Sprintf("%s%s", exprStr, partitionStr)
729-
if !node.As.IsEmpty() {
736+
if !node.As.IsEmpty() && !aliasHandledByIndirect {
730737
node.As.Accept(v)
731738
asStr := v.GetRewrittenQuery()
732739
q = fmt.Sprintf("%s as %v", q, asStr)

0 commit comments

Comments
 (0)