Skip to content

Commit 1615712

Browse files
committed
fix: output OVER clause in rewritten SQL for window functions
The FuncExpr cases in astvisit files were manually constructing function output but not including the OVER clause, causing argument-less window functions like ROW_NUMBER() and RANK() to fail with "misuse of window function" errors.
1 parent 3874d91 commit 1615712

File tree

3 files changed

+9
-0
lines changed

3 files changed

+9
-0
lines changed

internal/stackql/astvisit/fragment_rewriting.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -905,6 +905,9 @@ func (v *standardFragmentRewriteAstVisitor) Visit(node sqlparser.SQLNode) error
905905
buf.WriteString(funcName)
906906
}
907907
buf.AstPrintf(node, "(%s%v)", distinct, node.Exprs)
908+
if node.Over != nil {
909+
buf.AstPrintf(node, " %v", node.Over)
910+
}
908911
v.rewrittenQuery = buf.String()
909912

910913
case *sqlparser.GroupConcatExpr:

internal/stackql/astvisit/from_rewrite.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -975,6 +975,9 @@ func (v *standardFromRewriteAstVisitor) Visit(node sqlparser.SQLNode) error {
975975
buf.WriteString(funcName)
976976
}
977977
buf.AstPrintf(node, "(%s%v)", distinct, node.Exprs)
978+
if node.Over != nil {
979+
buf.AstPrintf(node, " %v", node.Over)
980+
}
978981
v.rewrittenQuery = buf.String()
979982

980983
case *sqlparser.GroupConcatExpr:

internal/stackql/astvisit/provider_string_extract.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -904,6 +904,9 @@ func (v *standardProviderStringAstVisitor) Visit(node sqlparser.SQLNode) error {
904904
buf.WriteString(funcName)
905905
}
906906
buf.AstPrintf(node, "(%s%v)", distinct, node.Exprs)
907+
if node.Over != nil {
908+
buf.AstPrintf(node, " %v", node.Over)
909+
}
907910
// v.rewrittenQuery = buf.String()
908911

909912
case *sqlparser.GroupConcatExpr:

0 commit comments

Comments
 (0)