I've done a little testing with NTILE(). I think a check should be added to the ntile() function in wfunc.c.
david=# select name,salary,ntile(0) over (order by salary) as n from employees; ERROR: floating-point exception DETAIL: An invalid floating-point operation was signaled. This probably means an out-of-range result or an invalid operation, such as division by zero. I tracked that message back to the signal handler in postgres.c :-( simple fix though. Any value less than 1 does not really make sense to me. Maybe we should add something like: if (PG_WINDOW_ARG(0) < 1) elog(ERROR, "negative or zero ntile argument not allowed"); What do you think? Oracle errors out on less than 1, Sybase seems not to have ntile. MSSQL 2008 also errors out on less than 1 David. -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers