| From: | "David Rowley" <dgrowley(at)gmail(dot)com> |
|---|---|
| To: | "'Hitoshi Harada'" <umi(dot)tanuki(at)gmail(dot)com> |
| Cc: | <pgsql-hackers(at)postgresql(dot)org> |
| Subject: | Windowing Function Patch Review -> NTILE function |
| Date: | 2008-11-09 12:32:02 |
| Message-ID: | F8B51ABADE2343029236663D0E64EAEB@amd64 |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-hackers |
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.
| From | Date | Subject | |
|---|---|---|---|
| Next Message | David Rowley | 2008-11-09 14:05:37 | Windowing Function Patch Review -> NTH_VALUE |
| Previous Message | David Rowley | 2008-11-09 11:30:17 | Re: Windowing Function Patch Review -> Standard Conformance |