The attached patch implements the width_bucket() function (as specified by Section 6.27 of the SQL2003 standard, in particular page 250 in my copy). This function accepts an operand, a lower bound, an upper bound, and a number of buckets. It returns the number of the bucket to which the operand would be assigned in an equidepth histogram with the specified characteristics. I believe the function comes from Oracle 9i, so you can search the web for more information.

Questions / Issues:

(1) This patch only implements width_bucket() for the 'numeric' type (I thought I would get the behaviour right for a single type before writing the other variants). What other types should I provide implementations for?

(2) SQL2003 says that the fourth argument to the function should be an "exact numeric with scale 0" (and the function's return value must have the same type). I chose to make this argument an int4 -- does anyone think that int2 or int8 would be more appropriate?

This patch includes some basic regression tests for the function, but I haven't bothered updating the docs yet -- a subsequent version of this patch will do so.

Comments welcome.


Attachment: width_bucket-9.patch
Description: Binary data

---------------------------(end of broadcast)---------------------------
TIP 2: you can get off all lists at once with the unregister command
    (send "unregister YourEmailAddressHere" to [EMAIL PROTECTED])

Reply via email to