public inbox for [email protected]  
help / color / mirror / Atom feed
From: Shaozhong SHI <[email protected]>
To: Pavel Stehule <[email protected]>
Cc: Tom Lane <[email protected]>
Cc: pgsql-sql <[email protected]>
Subject: Re: Memory allocation error
Date: Fri, 14 Jul 2023 23:44:08 +0100
Message-ID: <CA+i5JwbNMAsqF3maZ3iY3YLYo5bPJCiFwYcQh=X0UVAk6Nzbkg@mail.gmail.com> (raw)
In-Reply-To: <CAFj8pRCLpzCrGBk-i7ZQm+jKdiqJZQrj1Vt_KbvhwWqFqN7sRQ@mail.gmail.com>
References: <CA+i5JwYtVS9z2E71PcNKAVPbOn4R2wuj-LqbJsYr_XOz73q7dQ@mail.gmail.com>
	<CAFj8pRCr=Qvsys2FKYscjWw5VR7wOYMFsHRoUwLsTZjgRV5yjQ@mail.gmail.com>
	<CA+i5JwYy-=tbN8P59mxd3rEE6aWo9dy=5PrYM3Fq1f67eA1ytw@mail.gmail.com>
	<CAFj8pRBDkNo1viX2DYdLQLkO+Qf7__xZVNRYtzHQ_RvumgvLpQ@mail.gmail.com>
	<[email protected]>
	<CAFj8pRCLpzCrGBk-i7ZQm+jKdiqJZQrj1Vt_KbvhwWqFqN7sRQ@mail.gmail.com>

Well.  I think that I made significant advancement by thinking of how to
increase the functionality.
Adding a height of preceding must greater than the height of succeeding and
reduce the likelihood of infinity in recursion.
Regards,  David

On Fri, 14 Jul 2023 at 12:54, Pavel Stehule <[email protected]> wrote:

>
>
> pá 14. 7. 2023 v 13:13 odesílatel Tom Lane <[email protected]> napsal:
>
>> Pavel Stehule <[email protected]> writes:
>> > pá 14. 7. 2023 v 9:36 odesílatel Shaozhong SHI <[email protected]>
>> > napsal:
>> >> On Fri, 14 Jul 2023 at 08:14, Pavel Stehule <[email protected]>
>> >> wrote:
>> >>> It depends what you do. Postgres doesn't allow to allocate bigger
>> blocks
>> >>> than 1GB. Maybe you create too big string or too big value of some
>> other
>> >>> type. But it can be signal of some cache bloating.
>>
>> > The best way - do it all in one recursive query without any recursive
>> > function.
>> > This issue you can fix only by rewriting your code.
>>
>> Yeah, but nonetheless this error message is pretty user-unfriendly.
>>
>> The given example is too incomplete to run as-is, but I guessed that
>> maybe the array_agg() was accumulating too many values, and sure
>> enough it's possible to reproduce:
>>
>> regression=# select array_agg(x::text) from generate_series(1,100000000)
>> x;
>> ERROR:  invalid memory alloc request size 1073741824
>>
>> We can do better than that.  The attached patch causes the error to be
>>
>> regression=# select array_agg(x::text) from generate_series(1,100000000)
>> x;
>> ERROR:  array size exceeds the maximum allowed (1073741823)
>>
>
> +1
>
> it is significantly better
>
> Regards
>
> Pavel
>
>>
>> I'm not wedded to that wording, but it's an existing translatable string
>> that at least points you in the direction of "my array is too big".
>> (This is also what you get if the eventual array construction overruns
>> the 1G limit, cf construct_md_array().)
>>
>>                         regards, tom lane
>>
>>


view thread (7+ messages)

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: [email protected]
  Cc: [email protected], [email protected], [email protected], [email protected]
  Subject: Re: Memory allocation error
  In-Reply-To: <CA+i5JwbNMAsqF3maZ3iY3YLYo5bPJCiFwYcQh=X0UVAk6Nzbkg@mail.gmail.com>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox