• Tom Lane's avatar
    Support default arguments and named-argument notation for window functions. · bb45c640
    Tom Lane authored
    These things didn't work because the planner omitted to do the necessary
    preprocessing of a WindowFunc's argument list.  Add the few dozen lines
    of code needed to handle that.
    
    Although this sounds like a feature addition, it's really a bug fix because
    the default-argument case was likely to crash previously, due to lack of
    checking of the number of supplied arguments in the built-in window
    functions.  It's not a security issue because there's no way for a
    non-superuser to create a window function definition with defaults that
    refers to a built-in C function, but nonetheless people might be annoyed
    that it crashes rather than producing a useful error message.  So
    back-patch as far as the patch applies easily, which turns out to be 9.2.
    I'll put a band-aid in earlier versions as a separate patch.
    
    (Note that these features still don't work for aggregates, and fixing that
    case will be harder since we represent aggregate arg lists as target lists
    not bare expression lists.  There's no crash risk though because CREATE
    AGGREGATE doesn't accept defaults, and we reject named-argument notation
    when parsing an aggregate call.)
    bb45c640
clauses.c 142 KB