Re: Add PRODUCT() aggregate function - Mailing list pgsql-hackers

From Jeevan Chalke
Subject Re: Add PRODUCT() aggregate function
Date
Msg-id CAM2+6=XhHS1W3MhRXANdZJn+4eJXoZc2nN-mQxqJ_m+sm+QJew@mail.gmail.com
Whole thread
In response to Re: Add PRODUCT() aggregate function  (Jim Jones <jim.jones@uni-muenster.de>)
Responses Re: Add PRODUCT() aggregate function
List pgsql-hackers


On Tue, Jun 23, 2026 at 4:32 PM Jim Jones <jim.jones@uni-muenster.de> wrote:
Hi Jeevan

On 23/06/2026 10:37, Dean Rasheed wrote:
> On Tue, 23 Jun 2026 at 08:49, Jeevan Chalke
> <jeevan.chalke@enterprisedb.com> wrote:
>> PRODUCT() returns the product of all non-null input values.  It is defined for
>> int2, int4, int8, float4, float8 and numeric input, and always returns numeric.
> I don't think that you need to define it for all those types. I
> suspect that you could just define it for numeric and float8, and let
> implicit casting do the rest.

+1

I've tested the patch in many different scenarios and all results look
fine -- valgrind also didn't report anything :)

The test coverage is comprehensive! For the sake of completeness I'd add
numeric tests for NaN and Infitinty with positive numeric values in the
set, e.g:

postgres=# WITH j (v) AS (VALUES
('NaN'::numeric),('Infinity'::numeric),(3.14))
SELECT product(v) FROM j;
 product
---------
     NaN
(1 row)

Other than that and the point mentioned by Dean I have nothing to add at
this point.

Thanks, Jim, for the thorough testing. 

I'll include that test case in the next version of the patch.

 

Thanks for the patch.

Best, Jim


--
Jeevan Chalke
Senior Principal Engineer, Engineering Manager
Product Development


enterprisedb.com

pgsql-hackers by date:

Previous
From: Jeevan Chalke
Date:
Subject: Re: Add PRODUCT() aggregate function
Next
From: solai v
Date:
Subject: Re: Show estimated number of groups for IncrementalSort in EXPLAIN