for the last year I replied 3 times with a silly snippet:
```
SELECT
    [2, 3, 4] AS x,
    pow(2, arraySum(i -> log2(i), x)) AS arrayProduct
┌─x───────┬─arrayProduct─┐
│ [2,3,4] │           24 │
└─────────┴──────────────┘
```

I think we need a function to multiply elements of an array.
if constexpr (IsDecimalNumber<Element>)
                    {
                        res[i] = DecimalUtils::convertTo<Result>(x, data.getScale());
                    }
                    else
                    {
                        res[i] = x;
                    }
                }
                pos = offsets[i];
            }
            res_ptr = std::move(res_column);
            return true;
        }
        const typename ColVecType::Container & data = column->getData();
        typename ColVecResult::MutablePtr res_column;
        if constexpr (IsDecimalNumber<Element>)
            res_column = ColVecResult::create(offsets.size(), data.getScale());
        else
            res_column = ColVecResult::create(offsets.size());
        typename ColVecResult::Container & res = res_column->getData();
        size_t pos = 0;
        for (size_t i = 0; i < offsets.size(); ++i)
        {
            AggregationType s = 0;
            
            if (offsets[i] == pos)
            {
                res[i] = s;
                continue;