Thread

  1. Re: Qual push down to table AM

    Andres Freund <andres@anarazel.de> — 2025-12-18T19:49:49Z

    Hi,
    
    On 2025-12-18 20:40:31 +0100, Maxime Schoemans wrote:
    > > On 10 Dec 2025, at 00:08, Andres Freund <andres@anarazel.de> wrote:
    > > I don't really see this being viable without first tackling two nontrivial
    > > projects:
    > > 
    > > 2) Perform ScanKey evaluation in slot form, to be able to cache the deforming
    > >   and to make deforming of multiple columns sufficiently efficient.
    > 
    > Am I right in understanding that you think that the repeated calls to
    > heap_getattr in HeapKeyTest is not ideal if we have NULL or varlena
    > columns?
    
    That's part of it, but not all of it: The other aspect is that if you do a
    bunch of heap_getattr()s inside HeapKeyTest() and then project that column in
    nodeSeqscan.c, you'll do the work to deform twice.
    
    
    > > 1) Make slot deforming for expressions & projections selective, i.e. don't
    > >   deform all the leading columns, but only ones that will eventually be
    > >   needed
    > 
    > 
    > Concerning 1), I’m also not certain I understand why this is a prerequisite
    > for the pushdown work. It could certainly be beneficial, but it seems to be
    > complementary.
    
    As hinted at in [1] I suspect that you're just not going to see big enough
    wins without the above optimization. A decent portion of the win from using
    HeapKeyTest is to only selectively deform.
    
    Greetings,
    
    Andres Freund
    
    [1] https://postgr.es/m/CAAh00EQUwG5khqJO7nSV0nsqsG1OP%3DkA6ACfxV3rnNSVd4b6TQ%40mail.gmail.com