I wrote: > * Support creation of user-defined window functions. I think this is > a "must have" for 8.4 --- we are not in the habit of building > nonextensible basic features. It doesn't seem that hard either. > I think all we need do is to allow "WINDOW" as an attribute keyword > in CREATE FUNCTION. Does anyone have an objection or a better idea?
What I had in mind when I wrote that was something like create [or replace] function mywindow(...) returns ... as 'mymodule, 'mywindow' language c window; but on reflection there seems to be a case also for create [or replace] window function mywindow(...) returns ... as 'mymodule, 'mywindow' language c; The main argument in favor of the latter is that window-ness will need to be a fixed property of a function that you can't change except by dropping and recreating it, because any existing views calling the function will have its window-ness embedded in them in the form of whether they use a FuncExpr or WindowFunc node to call it. So it doesn't feel quite like an optional attribute. However, if we do that then for consistency we'd have to invent DROP WINDOW FUNCTION, ALTER WINDOW FUNCTION, RENAME WINDOW FUNCTION, COMMENT ON WINDOW FUNCTION, yadda yadda, and insist that you refer to a function properly (with or without WINDOW) in each one of these commands. Which would be a real PITA to implement and document, and I can't see that it's doing anything much for users either. So I'm still leaning to the first way. Comments? regards, tom lane -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers