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.
const ColumnConst * column_const = checkAndGetColumnConst<ColVecType>(&*mapped);
            if (!column_const)
                return false;
            const AggregationType x = column_const->template getValue<Element>(); 
            const typename ColVecType::Container & data
                = checkAndGetColumn<ColVecType>(&column_const->getDataColumn())->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)
            {
                if constexpr (aggregate_operation == AggregateOperation::sum)
                {
                    size_t array_size = offsets[i] - pos;
                    
                    res[i] = x * array_size;
                }
                else if constexpr (aggregate_operation == AggregateOperation::min ||
                                aggregate_operation == AggregateOperation::max)
                {
                    res[i] = x;
                }
                else if constexpr (aggregate_operation == AggregateOperation::average)
                {