Re: BUG #15320: = any (array(SQL)) ERROR: invalid memory alloc request size 1073741824

From: Andres Freund <andres(at)anarazel(dot)de>
To: digoal(at)126(dot)com, pgsql-bugs(at)lists(dot)postgresql(dot)org
Subject: Re: BUG #15320: = any (array(SQL)) ERROR: invalid memory alloc request size 1073741824
Date: 2018-08-10 02:26:34
Message-ID: 20180810022634.ggxwlwm6avraufjv@alap3.anarazel.de
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

Hi,

On 2018-08-10 02:00:56 +0000, PG Bug reporting form wrote:
> postgres=# explain analyze select count(*) from tbl where uid = any
> (array(select uid from tbl limit 100000000)) ;
> ERROR: XX000: invalid memory alloc request size 1073741824
> LOCATION: repalloc, mcxt.c:1050
> Time: 24133.852 ms (00:24.134)
> ```
>
> is it a bug?

No, not in my opinion. You're building a very large array. Arrays are
stored in memory. Allocation sizes in postgres are limited in many
places.

You could argue for removing the limit in this case, but that'd not make
it a bug. And I doubt it's worth changing this. Your array is going to
be huge either way, and we limit arrays (and other datums) to 1GB. We
could fix the growth of the array here to fail a bit later, but that's
it.

Greetings,

Andres Freund

In response to

Browse pgsql-bugs by date

  From Date Subject
Next Message DEGLAVE Remi 2018-08-10 12:51:29 [PG_UPGRADE] 9.6 to 10.5
Previous Message PG Bug reporting form 2018-08-10 02:00:56 BUG #15320: = any (array(SQL)) ERROR: invalid memory alloc request size 1073741824