Skip to content

Commit 407ceaf

Browse files
authored
Merge pull request #114 from stackql/claude/fix-window-function-execution-01WbDt4A6kMPzL5KJmLWAHBU
Claude/fix window function execution 01 wb dt4 a6k m pz l5 k jm lwahbu
2 parents de05d7e + e755b7a commit 407ceaf

File tree

4 files changed

+17
-1
lines changed

4 files changed

+17
-1
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:

internal/stackql/parserutil/parser_util.go

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -676,7 +676,14 @@ func inferColNameFromExpr(
676676
exprsDecorated = append(exprsDecorated, rv.DecoratedColumn)
677677
}
678678
}
679-
decoratedColumn := fmt.Sprintf("%s(%s)", funcNameLowered, strings.Join(exprsDecorated, ", "))
679+
// Use astformat.String for window functions to include OVER clause,
680+
// otherwise use the manually constructed decorated column for proper arg handling
681+
var decoratedColumn string
682+
if expr.Over != nil {
683+
decoratedColumn = astformat.String(expr, formatter)
684+
} else {
685+
decoratedColumn = fmt.Sprintf("%s(%s)", funcNameLowered, strings.Join(exprsDecorated, ", "))
686+
}
680687
if retVal.Name != constants.SQLFuncJSONExtractPostgres {
681688
retVal.DecoratedColumn = getDecoratedColRendition(decoratedColumn, alias)
682689
}

0 commit comments

Comments
 (0)