Thread

  1. Change the bool member of the Query structure to bits

    Quan Zongliang <quanzongliang@yeah.net> — 2024-02-20T10:07:46Z

    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
  2. Re: Change the bool member of the Query structure to bits

    Quan Zongliang <quanzongliang@yeah.net> — 2024-02-20T10:11:55Z

    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.
    > 
    > -- 
    > Quan Zongliang
  3. Re: Change the bool member of the Query structure to bits

    Tomas Vondra <tomas.vondra@enterprisedb.com> — 2024-02-20T11:18:46Z

    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
    
    
    
    
  4. Re: Change the bool member of the Query structure to bits

    Tom Lane <tgl@sss.pgh.pa.us> — 2024-02-20T15:45:51Z

    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
    
    
    
    
  5. Re: Change the bool member of the Query structure to bits

    Quan Zongliang <quanzongliang@yeah.net> — 2024-02-20T23:45:22Z

    
    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.
    
    
    
    
    
  6. Re: Change the bool member of the Query structure to bits

    Quan Zongliang <quanzongliang@yeah.net> — 2024-02-20T23:46:53Z

    
    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.