pgsql: Support default arguments and named-argument notation for window

Поиск
Список
Период
Сортировка
От Tom Lane
Тема pgsql: Support default arguments and named-argument notation for window
Дата
Msg-id E1Ve7v3-0001aN-V8@gemulon.postgresql.org
обсуждение исходный текст
Список pgsql-committers
Support default arguments and named-argument notation for window functions.

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.)

Branch
------
master

Details
-------
http://git.postgresql.org/pg/commitdiff/bb45c640411af61279bea044f8d108f9da96b735

Modified Files
--------------
doc/src/sgml/syntax.sgml             |    5 ++--
src/backend/optimizer/util/clauses.c |   50 ++++++++++++++++++++++++++++++++++
src/backend/parser/parse_func.c      |   11 --------
src/backend/utils/adt/ruleutils.c    |    7 +++--
src/test/regress/expected/window.out |   35 ++++++++++++++++++++++++
src/test/regress/sql/window.sql      |   10 +++++++
6 files changed, 103 insertions(+), 15 deletions(-)


В списке pgsql-committers по дате отправления:

Предыдущее
От: Tom Lane
Дата:
Сообщение: pgsql: Prevent creating window functions with default arguments.
Следующее
От: Tom Lane
Дата:
Сообщение: pgsql: Be more robust when strerror() doesn't give a useful result.