Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nbhgm-0004c3-M0 for pgsql-hackers@arkaria.postgresql.org; Tue, 05 Apr 2022 11:49:36 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1nbhgl-0006hI-DT for pgsql-hackers@arkaria.postgresql.org; Tue, 05 Apr 2022 11:49:35 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nbhgl-0006h8-2s for pgsql-hackers@lists.postgresql.org; Tue, 05 Apr 2022 11:49:35 +0000 Received: from mail-oi1-x22d.google.com ([2607:f8b0:4864:20::22d]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1nbhgf-0007y7-CJ for pgsql-hackers@lists.postgresql.org; Tue, 05 Apr 2022 11:49:34 +0000 Received: by mail-oi1-x22d.google.com with SMTP id q189so13085871oia.9 for ; Tue, 05 Apr 2022 04:49:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=Y7VLZ5Hv2Z4POR6EV5DhFPlXnn/ssDBiGeEREh3l27Y=; b=RJzmVhR8hdQ5ckcHiTN22CtRM95GgnRKo8dtFrDhfb7M3Ff2WEkcs01hewP8StALgc 9nhUKWSfIbH0FnsXBJNFnszFMookIdL+3NfbhX7q8f8qFBRJ0rc/08GZgdnLmcqMw5fy xNH7yMp/RTuxqOmr1h7ydjM5NaOAkpfao0KMc4k3RvMS6G4qw2091Mo7FnBVvv1ETvq7 KScMaok4ER5R30nQlJoNl5WAgNs4t71as72gSCwhiXxRhqk36a4im/N3T34qCaP73ntd bcOuJV0VRCZ1jbVFPCFP4QrMSb2xiTDwr6Hk1JqFFp7aDho5TF5uyE4gUgcOhUYjL5f2 RfXg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=Y7VLZ5Hv2Z4POR6EV5DhFPlXnn/ssDBiGeEREh3l27Y=; b=Azkt8At4UFjqv+umIMibJKJ022/BhyAkD/uwJi33xd8/Avpt+3YOiV+rOXYedWDk21 CmcEwnAu/hdpkr6Yfzj+DF6PEUQ/45oIaJlHEMfoIXlCUKC0lKlDATp+HMCYB4ezReIg R+xZ2QYhbQo+49o3IDFTy3ds7BpKD2YPSAnrlL1DYcxxXOFqo4JmRytpgaOdxY7B3o+s +tt+u4tWhMGYKMJxIaUzco0f4X5z76BA19bKlwD97hApX0i5e5pe0UsmYpFK8vB+jqcF TwNXS1Ez3KIDge71+7KPt53b2FOUJrgRRFrJ6s4cbKiFuvCcGVQg/Ar36mxQAeB8nGIX BSMA== X-Gm-Message-State: AOAM532S378IANSSN6XNygjfghBO63wko9IPCYr4RwTAX3M03OGWjJHW xTyWdCprleKos0b9CYvsmBerLsMB+FyJaCc/GzI= X-Google-Smtp-Source: ABdhPJxvHj9/rCvYCczeYyqVVh3nslaWfSveI4jVia5BKzjIQSKZQYNE124cb3vEWCqz+n3gbuEuYWhrN9geWGTebZM= X-Received: by 2002:a05:6808:199c:b0:2da:854a:204d with SMTP id bj28-20020a056808199c00b002da854a204dmr1268758oib.184.1649159368794; Tue, 05 Apr 2022 04:49:28 -0700 (PDT) MIME-Version: 1.0 References: <20220329221615.hule724qcaarhe3y@alap3.anarazel.de> In-Reply-To: From: David Rowley Date: Tue, 5 Apr 2022 23:49:15 +1200 Message-ID: Subject: Re: Window Function "Run Conditions" To: Andy Fan Cc: Andres Freund , Zhihong Yu , PostgreSQL Developers Content-Type: multipart/mixed; boundary="0000000000005b03df05dbe6d637" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000005b03df05dbe6d637 Content-Type: text/plain; charset="UTF-8" On Tue, 5 Apr 2022 at 19:38, Andy Fan wrote: > 1. We can do more on PASSTHROUGH, we just bypass the window function > currently, but IIUC we can ignore all of the following tuples in current partition > once we go into this mode. patch 0001 shows what I mean. Yeah, there is more performance to be had than even what you've done there. There's no reason really for spool_tuples() to do tuplestore_puttupleslot() when we're not in run mode. The attached should give slightly more performance. I'm unsure if there's more that can be done for window aggregates, i.e. eval_windowaggregates() I'll consider the idea about doing all the filtering in nodeWindowAgg.c. For now I made find_window_run_conditions() keep the qual so that it's still filtered in the subquery level when there is a PARTITION BY clause. Probably the best way would be to make nodeWindowAgg.c just loop with a for(;;) loop. I'll need to give it more thought. I'll do that in the morning. David --0000000000005b03df05dbe6d637 Content-Type: text/plain; charset="US-ASCII"; name="windowagg_hacks.patch" Content-Disposition: attachment; filename="windowagg_hacks.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l1m2q6tj0 ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYwppbmRleCA4NjlkY2Q3NGRmLi4xOWZlNzIw ZDljIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlV2luZG93QWdnLmMKKysr IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5jCkBAIC0xMjQ4LDYgKzEyNDgs OSBAQCBzcG9vbF90dXBsZXMoV2luZG93QWdnU3RhdGUgKndpbnN0YXRlLCBpbnQ2NCBwb3MpCiAJ aWYgKHdpbnN0YXRlLT5wYXJ0aXRpb25fc3Bvb2xlZCkKIAkJcmV0dXJuOwkJCQkJLyogd2hvbGUg cGFydGl0aW9uIGRvbmUgYWxyZWFkeSAqLwogCisJaWYgKHdpbnN0YXRlLT5zdGF0dXMgPT0gV0lO RE9XQUdHX1BBU1NUSFJPVUdIKQorCQlwb3MgPSAtMTsKKwogCS8qCiAJICogSWYgdGhlIHR1cGxl c3RvcmUgaGFzIHNwaWxsZWQgdG8gZGlzaywgYWx0ZXJuYXRlIHJlYWRpbmcgYW5kIHdyaXRpbmcK IAkgKiBiZWNvbWVzIHF1aXRlIGV4cGVuc2l2ZSBkdWUgdG8gZnJlcXVlbnQgYnVmZmVyIGZsdXNo ZXMuICBJdCdzIGNoZWFwZXIKQEAgLTEyNTYsNyArMTI1OSw3IEBAIHNwb29sX3R1cGxlcyhXaW5k b3dBZ2dTdGF0ZSAqd2luc3RhdGUsIGludDY0IHBvcykKIAkgKiBYWFggdGhpcyBpcyBhIGhvcnJp ZCBrbHVnZSAtLS0gaXQnZCBiZSBiZXR0ZXIgdG8gZml4IHRoZSBwZXJmb3JtYW5jZQogCSAqIHBy b2JsZW0gaW5zaWRlIHR1cGxlc3RvcmUuICBGSVhNRQogCSAqLwotCWlmICghdHVwbGVzdG9yZV9p bl9tZW1vcnkod2luc3RhdGUtPmJ1ZmZlcikpCisJZWxzZSBpZiAoIXR1cGxlc3RvcmVfaW5fbWVt b3J5KHdpbnN0YXRlLT5idWZmZXIpKQogCQlwb3MgPSAtMTsKIAogCW91dGVyUGxhbiA9IG91dGVy UGxhblN0YXRlKHdpbnN0YXRlKTsKQEAgLTEyOTUsOSArMTI5OCwxMiBAQCBzcG9vbF90dXBsZXMo V2luZG93QWdnU3RhdGUgKndpbnN0YXRlLCBpbnQ2NCBwb3MpCiAJCQl9CiAJCX0KIAotCQkvKiBT dGlsbCBpbiBwYXJ0aXRpb24sIHNvIHNhdmUgaXQgaW50byB0aGUgdHVwbGVzdG9yZSAqLwotCQl0 dXBsZXN0b3JlX3B1dHR1cGxlc2xvdCh3aW5zdGF0ZS0+YnVmZmVyLCBvdXRlcnNsb3QpOwotCQl3 aW5zdGF0ZS0+c3Bvb2xlZF9yb3dzKys7CisJCWlmICh3aW5zdGF0ZS0+c3RhdHVzID09IFdJTkRP V0FHR19SVU4pCisJCXsKKwkJCS8qIFN0aWxsIGluIHBhcnRpdGlvbiwgc28gc2F2ZSBpdCBpbnRv IHRoZSB0dXBsZXN0b3JlICovCisJCQl0dXBsZXN0b3JlX3B1dHR1cGxlc2xvdCh3aW5zdGF0ZS0+ YnVmZmVyLCBvdXRlcnNsb3QpOworCQkJd2luc3RhdGUtPnNwb29sZWRfcm93cysrOworCQl9CiAJ fQogCiAJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOwo= --0000000000005b03df05dbe6d637--