Change the bool member of the Query structure to bits
The Query structure has an increasing number of bool attributes. This is
likely to increase in the future. And they have the same properties.
Wouldn't it be better to store them in bits? Common statements don't use
them, so they have little impact. This also saves memory space.
--
Quan Zongliang
Attachments:
query-bits.patchtext/plain; charset=UTF-8; name=query-bits.patchDownload+303-257
Sorry. I forgot to save a file. This is the latest.
Show quoted text
On 2024/2/20 18:07, Quan Zongliang wrote:
The Query structure has an increasing number of bool attributes. This is
likely to increase in the future. And they have the same properties.
Wouldn't it be better to store them in bits? Common statements don't use
them, so they have little impact. This also saves memory space.--
Quan Zongliang
Attachments:
query-bits.patchtext/plain; charset=UTF-8; name=query-bits.patchDownload+303-257
On 2/20/24 11:11, Quan Zongliang wrote:
Sorry. I forgot to save a file. This is the latest.
On 2024/2/20 18:07, Quan Zongliang wrote:
The Query structure has an increasing number of bool attributes. This
is likely to increase in the future. And they have the same
properties. Wouldn't it be better to store them in bits? Common
statements don't use them, so they have little impact. This also saves
memory space.
Hi,
Are we really adding bools to Query that often? A bit of git-blame says
it's usually multiple years to add a single new flag, which is what I'd
expect. I doubt that'll change.
As for the memory savings, can you quantify how much memory this would save?
I highly doubt that's actually true (or at least measurable). The Query
struct has ~256B, the patch cuts that to ~232B. But we allocate stuff in
power-of-2, so we'll allocate 256B chunk anyway. And we allocate very
few of those objects anyway ...
regards
--
Tomas Vondra
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company
Quan Zongliang <quanzongliang@yeah.net> writes:
The Query structure has an increasing number of bool attributes. This is
likely to increase in the future. And they have the same properties.
Wouldn't it be better to store them in bits? Common statements don't use
them, so they have little impact. This also saves memory space.
I'm -1 on that, for three reasons:
* The amount of space saved is quite negligible. If queries had many
Query structs then it could matter, but they don't.
* This causes enough code churn to create a headache for back-patching.
* This'll completely destroy the readability of these flags in
pprint output.
I'm not greatly in love with the macro layer you propose, either,
but those details don't matter because I think we should just
leave well enough alone.
regards, tom lane
On 2024/2/20 23:45, Tom Lane wrote:
Quan Zongliang <quanzongliang@yeah.net> writes:
The Query structure has an increasing number of bool attributes. This is
likely to increase in the future. And they have the same properties.
Wouldn't it be better to store them in bits? Common statements don't use
them, so they have little impact. This also saves memory space.I'm -1 on that, for three reasons:
* The amount of space saved is quite negligible. If queries had many
Query structs then it could matter, but they don't.* This causes enough code churn to create a headache for back-patching.
* This'll completely destroy the readability of these flags in
pprint output.I'm not greatly in love with the macro layer you propose, either,
but those details don't matter because I think we should just
leave well enough alone.regards, tom lane
I get it. Withdraw.
On 2024/2/20 19:18, Tomas Vondra wrote:
On 2/20/24 11:11, Quan Zongliang wrote:
Sorry. I forgot to save a file. This is the latest.
On 2024/2/20 18:07, Quan Zongliang wrote:
The Query structure has an increasing number of bool attributes. This
is likely to increase in the future. And they have the same
properties. Wouldn't it be better to store them in bits? Common
statements don't use them, so they have little impact. This also saves
memory space.Hi,
Are we really adding bools to Query that often? A bit of git-blame says
it's usually multiple years to add a single new flag, which is what I'd
expect. I doubt that'll change.As for the memory savings, can you quantify how much memory this would save?
I highly doubt that's actually true (or at least measurable). The Query
struct has ~256B, the patch cuts that to ~232B. But we allocate stuff in
power-of-2, so we'll allocate 256B chunk anyway. And we allocate very
few of those objects anyway ...regards
That makes sense. Withdraw.