**Describe the bug**
`SELECT i FROM generateRandom('i Array(Int8)', 1048575, 10, 1048577) LIMIT 1048575`

Memory limit should be respected.
{
        Int64 addition = new_size - old_size;
        if (addition > 0)
            alloc(addition);
        else
            free(-addition);
    }
    /** This function should be called after memory deallocation.
      */
    void free(Int64 size);
    Int64 get() const
    {
        return amount.load(std::memory_order_relaxed);
    }
    Int64 getPeak() const
    {
        return peak.load(std::memory_order_relaxed);
    }
    /** Set limit if it was not set.
      * Otherwise, set limit to new value, if new value is greater than previous limit.
      */
    void setOrRaiseHardLimit(Int64 value);
    void setOrRaiseProfilerLimit(Int64 value);
    void setFaultProbability(double value)