Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vYeGX-00A1Rz-1k for pgsql-hackers@arkaria.postgresql.org; Thu, 25 Dec 2025 05:52:02 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vYeGW-006l8j-0H for pgsql-hackers@arkaria.postgresql.org; Thu, 25 Dec 2025 05:52:00 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vYeGV-006l8b-2I for pgsql-hackers@lists.postgresql.org; Thu, 25 Dec 2025 05:52:00 +0000 Received: from mail-ej1-x630.google.com ([2a00:1450:4864:20::630]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vYeGT-002dnh-0H for pgsql-hackers@lists.postgresql.org; Thu, 25 Dec 2025 05:51:59 +0000 Received: by mail-ej1-x630.google.com with SMTP id a640c23a62f3a-b83122f9d78so131418266b.0 for ; Wed, 24 Dec 2025 21:51:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1766641915; x=1767246715; darn=lists.postgresql.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=kgMTkoziYIm+vBHvGomWevGU3CY6+uoKGyiltD+6cfk=; b=hmoIHCS+GcU8n4xS5FJ/HNhhm0O599q7WrdjRNQO5hro21badh+T73DoIbB/o56+Y2 MLbVaHf1KYx1MdfxragNQd2tSDiOPtv8VbwJBoTY0V/J5+AzYcNqSDRyo5KqhhtKJD0s e1xSSiB3lv5Mx4pI4ioL0C7nZ6T7VBibKf3Vv+ocINHEgUA1yZcjNwLdn4KKKCyTa7m6 PEEANIouLTU4oR/xRpxI7gHmBOWvSq3B6SJo9W7q/FUDrIRv2ars/txz1Jh8pfblvcdD 2MaupIKKZVh+EW973O+1oNzWp0TW7QdVC/UxOq//nkgCxAFeF97fnAE0XCMimJ+2+eSX o8yQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766641915; x=1767246715; h=to:subject:message-id:date:from:mime-version:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=kgMTkoziYIm+vBHvGomWevGU3CY6+uoKGyiltD+6cfk=; b=hNu6c4IcbqO/mcKV1ulA/lXrc8nbN6Qio74Lsugg1AJeWb+KEiw+EUNSgpI875tB2z 1uyPrj8q20ny+nsAJlmx5q7ejRwIz/bfsa+0AiLA6BzLaRttQWwyB0hv68Eqlujr3V1B yVSATq5tNj70jynuSQhv4h+vBKD55eh33ek0+At5Sk/L1MBkiDU8bgIP0nvty3qVtlet SLzUnOcZ22WFeGIpuhTVSE8l87X3ZXg79ogeydYLFksHX5NKwHljo59ODZzaacRNfdjr e4o4sNLWkEOTIo2vJ8uqAvUezXeB6jtN3uZLsjEZ+IHNHrU0daJJHNoXCFdyWVnIYrfj /tbw== X-Gm-Message-State: AOJu0Yxp/oec8YbHhJjh4T87R871TN3AJCsJmeAYwBo0Bj17f4/V2jwN 2Chc/zOWb8UMnjAQhup0oEXo9DQPz1v0WPuk5fuPQdwGN8MBj2DO3nUM69fxKRWraKuLfJcJLhV blFBiddnZtBStbaUCYteQe1xTX4f/KyOb8eIm X-Gm-Gg: AY/fxX7yJVr7Rtc41mZOMzFUPUuDCygYJB8YF2momqmT3MflSYcOf5fSMe5YT44e0gh E5kGzp/mcbj3zTubfh59c7lDSwuNlBDDGrJdSgNGUKo9h3spsoRSe7uQIum/dB0AUPR8Vt+bPy5 ujcxZXdLXw5Fn/GBway1B0v/OWULM6Wwl4E1d+Wx1+8Hb/dZblK/ImQjwqVBu6J+nlC75IApHth OsR82vtY9Vv09d5NBDF9dnRs4rih4r9sJU1k9QLK+6MoTB8vhqS4wfs9vOXfdA4CTupGpQ6lF4T N2GM4xj7/+VKML6x9UMLI7lhDGrqNfbp3ogYR1PLo7mcGb8KOxuqn532I6fLl2HCkhp2A4P20l0 6fhibBA== X-Google-Smtp-Source: AGHT+IFZDo3Ais9uTXjHQEWvCPtz5tLgvnqKdtsfc/6b3ofZEUmO0gYi1eXO1c069oDHcG4OW0OBDx7+zs7XeVAFF9g= X-Received: by 2002:a17:907:7703:b0:b80:3fc0:834 with SMTP id a640c23a62f3a-b803fc0088dmr1484415066b.10.1766641914820; Wed, 24 Dec 2025 21:51:54 -0800 (PST) MIME-Version: 1.0 From: Xuneng Zhou Date: Thu, 25 Dec 2025 13:51:41 +0800 X-Gm-Features: AQt7F2ppsh5i3AS0BL48IMbGUfG_xdDRit-LjX121-u1lpdhIaOKIr_60Fj-dg4 Message-ID: Subject: Streamify more code paths To: pgsql-hackers Content-Type: multipart/mixed; boundary="000000000000c775e90646c05fa6" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000c775e90646c05fa6 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi Hackers, I noticed several additional paths in contrib modules, beyond [1], that are potentially suitable for streamification: 1) pgstattuple =E2=80=94 pgstatapprox.c and parts of pgstattuple_approx_int= ernal 2) Bloom =E2=80=94 scan paths in blgetbitmap() and maintenance paths in blb= ulkdelete() The following patches streamify those code paths. No benchmarks have been run yet. [1] https://www.postgresql.org/message-id/flat/CABPTF7UeN2o-trr9r7K76rZExnO= 2M4SLfvTfbUY2CwQjCekgnQ%40mail.gmail.com Feedbacks welcome. -- Best, Xuneng --000000000000c775e90646c05fa6 Content-Type: application/x-patch; name="v1-0003-Streamify-heap-bloat-estimation-scan.patch" Content-Disposition: attachment; filename="v1-0003-Streamify-heap-bloat-estimation-scan.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjl0scnb2 RnJvbSA4NDQ0MTA3MTEzYTNiOWEyMzc1MjBiNDFkMzIyZjcyMDJlOGMxNTAyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBhbHRlcmVnbzY1NSA8ODI0NjYyNTI2QHFxLmNvbT4KRGF0ZTog VGh1LCAyNSBEZWMgMjAyNSAxMzo0MDoxMyArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjEgMy8zXSBT dHJlYW1pZnkgaGVhcCBibG9hdCBlc3RpbWF0aW9uIHNjYW4uCgpJbnRyb2R1Y2UgYSByZWFkLXN0 cmVhbSBjYWxsYmFjayB0byBza2lwIGFsbC12aXNpYmxlIHBhZ2VzIHZpYSBWTS9GU00gbG9va3Vw IGFuZCBzdHJlYW0tcmVhZCB0aGUgcmVzdCwgcmVkdWNpbmcgcGFnZSByZWFkcyBhbmQgaW1wcm92 aW5nIHBnc3RhdHR1cGxlX2FwcHJveCBleGVjdXRpb24gdGltZSBvbiBsYXJnZSByZWxhdGlvbnMu Ci0tLQogY29udHJpYi9wZ3N0YXR0dXBsZS9wZ3N0YXRhcHByb3guYyB8IDEyNSArKysrKysrKysr KysrKysrKysrKysrLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDk0IGluc2VydGlvbnMoKyksIDMx IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdzdGF0dHVwbGUvcGdzdGF0YXBw cm94LmMgYi9jb250cmliL3Bnc3RhdHR1cGxlL3Bnc3RhdGFwcHJveC5jCmluZGV4IGE1OWZmNGU5 ZDRmLi5lYjVjMjZmZmMxMCAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ3N0YXR0dXBsZS9wZ3N0YXRh cHByb3guYworKysgYi9jb250cmliL3Bnc3RhdHR1cGxlL3Bnc3RhdGFwcHJveC5jCkBAIC0yMyw2 ICsyMyw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdl L2ZyZWVzcGFjZS5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY2FycmF5LmgiCisjaW5jbHVkZSAi c3RvcmFnZS9yZWFkX3N0cmVhbS5oIgogCiBQR19GVU5DVElPTl9JTkZPX1YxKHBnc3RhdHR1cGxl X2FwcHJveCk7CiBQR19GVU5DVElPTl9JTkZPX1YxKHBnc3RhdHR1cGxlX2FwcHJveF92MV81KTsK QEAgLTQ1LDYgKzQ2LDYxIEBAIHR5cGVkZWYgc3RydWN0IG91dHB1dF90eXBlCiAKICNkZWZpbmUg TlVNX09VVFBVVF9DT0xVTU5TIDEwCiAKKy8qCisgKiBTdHJ1Y3QgZm9yIHN0YXRhcHByb3hfaGVh cCByZWFkIHN0cmVhbSBjYWxsYmFjay4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgU3RhdEFwcHJveFJl YWRTdHJlYW1Qcml2YXRlCit7CisJUmVsYXRpb24JcmVsOworCW91dHB1dF90eXBlICpzdGF0Owor CUJsb2NrTnVtYmVyIGN1cnJlbnRfYmxvY2tudW07CisJQmxvY2tOdW1iZXIgbmJsb2NrczsKKwlC bG9ja051bWJlciBzY2FubmVkOwkJLyogY291bnQgb2YgcGFnZXMgYWN0dWFsbHkgcmVhZCAqLwor CUJ1ZmZlcgkJdm1idWZmZXI7CQkvKiBmb3IgVk0gbG9va3VwcyAqLworfQkJCVN0YXRBcHByb3hS ZWFkU3RyZWFtUHJpdmF0ZTsKKworLyoKKyAqIFJlYWQgc3RyZWFtIGNhbGxiYWNrIGZvciBzdGF0 YXBwcm94X2hlYXAuCisgKgorICogVGhpcyBjYWxsYmFjayBjaGVja3MgdGhlIHZpc2liaWxpdHkg bWFwIGZvciBlYWNoIGJsb2NrLiBJZiB0aGUgYmxvY2sgaXMKKyAqIGFsbC12aXNpYmxlLCB3ZSBj YW4gZ2V0IHRoZSBmcmVlIHNwYWNlIGZyb20gdGhlIEZTTSB3aXRob3V0IHJlYWRpbmcgdGhlCisg KiBhY3R1YWwgcGFnZSwgYW5kIHNraXAgdG8gdGhlIG5leHQgYmxvY2suIE9ubHkgYmxvY2tzIHRo YXQgYXJlIG5vdAorICogYWxsLXZpc2libGUgYXJlIHJldHVybmVkIGZvciBhY3R1YWwgcmVhZGlu Zy4KKyAqLworc3RhdGljIEJsb2NrTnVtYmVyCitzdGF0YXBwcm94X2hlYXBfcmVhZF9zdHJlYW1f bmV4dChSZWFkU3RyZWFtICpzdHJlYW0sCisJCQkJCQkJCSB2b2lkICpjYWxsYmFja19wcml2YXRl X2RhdGEsCisJCQkJCQkJCSB2b2lkICpwZXJfYnVmZmVyX2RhdGEpCit7CisJU3RhdEFwcHJveFJl YWRTdHJlYW1Qcml2YXRlICpwID0gY2FsbGJhY2tfcHJpdmF0ZV9kYXRhOworCisJd2hpbGUgKHAt PmN1cnJlbnRfYmxvY2tudW0gPCBwLT5uYmxvY2tzKQorCXsKKwkJQmxvY2tOdW1iZXIgYmxrbm8g PSBwLT5jdXJyZW50X2Jsb2NrbnVtKys7CisJCVNpemUJCWZyZWVzcGFjZTsKKworCQlDSEVDS19G T1JfSU5URVJSVVBUUygpOworCisJCS8qCisJCSAqIElmIHRoZSBwYWdlIGhhcyBvbmx5IHZpc2li bGUgdHVwbGVzLCB0aGVuIHdlIGNhbiBmaW5kIG91dCB0aGUgZnJlZQorCQkgKiBzcGFjZSBmcm9t IHRoZSBGU00gYW5kIG1vdmUgb24gd2l0aG91dCByZWFkaW5nIHRoZSBwYWdlLgorCQkgKi8KKwkJ aWYgKFZNX0FMTF9WSVNJQkxFKHAtPnJlbCwgYmxrbm8sICZwLT52bWJ1ZmZlcikpCisJCXsKKwkJ CWZyZWVzcGFjZSA9IEdldFJlY29yZGVkRnJlZVNwYWNlKHAtPnJlbCwgYmxrbm8pOworCQkJcC0+ c3RhdC0+dHVwbGVfbGVuICs9IEJMQ0tTWiAtIGZyZWVzcGFjZTsKKwkJCXAtPnN0YXQtPmZyZWVf c3BhY2UgKz0gZnJlZXNwYWNlOworCQkJY29udGludWU7CisJCX0KKworCQkvKiBUaGlzIGJsb2Nr IG5lZWRzIHRvIGJlIHJlYWQgKi8KKwkJcC0+c2Nhbm5lZCsrOworCQlyZXR1cm4gYmxrbm87CisJ fQorCisJcmV0dXJuIEludmFsaWRCbG9ja051bWJlcjsKK30KKwogLyoKICAqIFRoaXMgZnVuY3Rp b24gdGFrZXMgYW4gYWxyZWFkeSBvcGVuIHJlbGF0aW9uIGFuZCBzY2FucyBpdHMgcGFnZXMsCiAg KiBza2lwcGluZyB0aG9zZSB0aGF0IGhhdmUgdGhlIGNvcnJlc3BvbmRpbmcgdmlzaWJpbGl0eSBt YXAgYml0IHNldC4KQEAgLTU4LDUzICsxMTQsNTggQEAgdHlwZWRlZiBzdHJ1Y3Qgb3V0cHV0X3R5 cGUKIHN0YXRpYyB2b2lkCiBzdGF0YXBwcm94X2hlYXAoUmVsYXRpb24gcmVsLCBvdXRwdXRfdHlw ZSAqc3RhdCkKIHsKLQlCbG9ja051bWJlciBzY2FubmVkLAotCQkJCW5ibG9ja3MsCi0JCQkJYmxr bm87Ci0JQnVmZmVyCQl2bWJ1ZmZlciA9IEludmFsaWRCdWZmZXI7CisJQmxvY2tOdW1iZXIgbmJs b2NrczsKIAlCdWZmZXJBY2Nlc3NTdHJhdGVneSBic3RyYXRlZ3k7CiAJVHJhbnNhY3Rpb25JZCBP bGRlc3RYbWluOworCVN0YXRBcHByb3hSZWFkU3RyZWFtUHJpdmF0ZSBwOworCVJlYWRTdHJlYW0g KnN0cmVhbTsKIAogCU9sZGVzdFhtaW4gPSBHZXRPbGRlc3ROb25SZW1vdmFibGVUcmFuc2FjdGlv bklkKHJlbCk7CiAJYnN0cmF0ZWd5ID0gR2V0QWNjZXNzU3RyYXRlZ3koQkFTX0JVTEtSRUFEKTsK IAogCW5ibG9ja3MgPSBSZWxhdGlvbkdldE51bWJlck9mQmxvY2tzKHJlbCk7Ci0Jc2Nhbm5lZCA9 IDA7CiAKLQlmb3IgKGJsa25vID0gMDsgYmxrbm8gPCBuYmxvY2tzOyBibGtubysrKQorCS8qIElu aXRpYWxpemUgcmVhZCBzdHJlYW0gcHJpdmF0ZSBkYXRhICovCisJcC5yZWwgPSByZWw7CisJcC5z dGF0ID0gc3RhdDsKKwlwLmN1cnJlbnRfYmxvY2tudW0gPSAwOworCXAubmJsb2NrcyA9IG5ibG9j a3M7CisJcC5zY2FubmVkID0gMDsKKwlwLnZtYnVmZmVyID0gSW52YWxpZEJ1ZmZlcjsKKworCS8q CisJICogQ3JlYXRlIHRoZSByZWFkIHN0cmVhbS4gV2UgZG9uJ3QgdXNlIFJFQURfU1RSRUFNX1VT RV9CQVRDSElORyBiZWNhdXNlCisJICogdGhlIGNhbGxiYWNrIGFjY2Vzc2VzIHRoZSB2aXNpYmls aXR5IG1hcCB3aGljaCBtYXkgbmVlZCB0byByZWFkIFZNCisJICogcGFnZXMuIFdoaWxlIHRoaXMg c2hvdWxkbid0IGNhdXNlIGRlYWRsb2Nrcywgd2UgZXJyIG9uIHRoZSBzaWRlIG9mCisJICogY2F1 dGlvbi4KKwkgKi8KKwlzdHJlYW0gPSByZWFkX3N0cmVhbV9iZWdpbl9yZWxhdGlvbihSRUFEX1NU UkVBTV9GVUxMLAorCQkJCQkJCQkJCWJzdHJhdGVneSwKKwkJCQkJCQkJCQlyZWwsCisJCQkJCQkJ CQkJTUFJTl9GT1JLTlVNLAorCQkJCQkJCQkJCXN0YXRhcHByb3hfaGVhcF9yZWFkX3N0cmVhbV9u ZXh0LAorCQkJCQkJCQkJCSZwLAorCQkJCQkJCQkJCTApOworCisJZm9yICg7OykKIAl7CiAJCUJ1 ZmZlcgkJYnVmOwogCQlQYWdlCQlwYWdlOwogCQlPZmZzZXROdW1iZXIgb2ZmbnVtLAogCQkJCQlt YXhvZmY7Ci0JCVNpemUJCWZyZWVzcGFjZTsKLQotCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwot Ci0JCS8qCi0JCSAqIElmIHRoZSBwYWdlIGhhcyBvbmx5IHZpc2libGUgdHVwbGVzLCB0aGVuIHdl IGNhbiBmaW5kIG91dCB0aGUgZnJlZQotCQkgKiBzcGFjZSBmcm9tIHRoZSBGU00gYW5kIG1vdmUg b24uCi0JCSAqLwotCQlpZiAoVk1fQUxMX1ZJU0lCTEUocmVsLCBibGtubywgJnZtYnVmZmVyKSkK LQkJewotCQkJZnJlZXNwYWNlID0gR2V0UmVjb3JkZWRGcmVlU3BhY2UocmVsLCBibGtubyk7Ci0J CQlzdGF0LT50dXBsZV9sZW4gKz0gQkxDS1NaIC0gZnJlZXNwYWNlOwotCQkJc3RhdC0+ZnJlZV9z cGFjZSArPSBmcmVlc3BhY2U7Ci0JCQljb250aW51ZTsKLQkJfQorCQlCbG9ja051bWJlciBibGtu bzsKIAotCQlidWYgPSBSZWFkQnVmZmVyRXh0ZW5kZWQocmVsLCBNQUlOX0ZPUktOVU0sIGJsa25v LAotCQkJCQkJCQkgUkJNX05PUk1BTCwgYnN0cmF0ZWd5KTsKKwkJYnVmID0gcmVhZF9zdHJlYW1f bmV4dF9idWZmZXIoc3RyZWFtLCBOVUxMKTsKKwkJaWYgKGJ1ZiA9PSBJbnZhbGlkQnVmZmVyKQor CQkJYnJlYWs7CiAKIAkJTG9ja0J1ZmZlcihidWYsIEJVRkZFUl9MT0NLX1NIQVJFKTsKIAogCQlw YWdlID0gQnVmZmVyR2V0UGFnZShidWYpOworCQlibGtubyA9IEJ1ZmZlckdldEJsb2NrTnVtYmVy KGJ1Zik7CiAKIAkJc3RhdC0+ZnJlZV9zcGFjZSArPSBQYWdlR2V0RXhhY3RGcmVlU3BhY2UocGFn ZSk7CiAKLQkJLyogV2UgbWF5IGNvdW50IHRoZSBwYWdlIGFzIHNjYW5uZWQgZXZlbiBpZiBpdCdz IG5ldy9lbXB0eSAqLwotCQlzY2FubmVkKys7Ci0KIAkJaWYgKFBhZ2VJc05ldyhwYWdlKSB8fCBQ YWdlSXNFbXB0eShwYWdlKSkKIAkJewogCQkJVW5sb2NrUmVsZWFzZUJ1ZmZlcihidWYpOwpAQCAt MTY5LDYgKzIzMCw4IEBAIHN0YXRhcHByb3hfaGVhcChSZWxhdGlvbiByZWwsIG91dHB1dF90eXBl ICpzdGF0KQogCQlVbmxvY2tSZWxlYXNlQnVmZmVyKGJ1Zik7CiAJfQogCisJcmVhZF9zdHJlYW1f ZW5kKHN0cmVhbSk7CisKIAlzdGF0LT50YWJsZV9sZW4gPSAodWludDY0KSBuYmxvY2tzICogQkxD S1NaOwogCiAJLyoKQEAgLTE3OSw3ICsyNDIsNyBAQCBzdGF0YXBwcm94X2hlYXAoUmVsYXRpb24g cmVsLCBvdXRwdXRfdHlwZSAqc3RhdCkKIAkgKiB0dXBsZXMgaW4gYWxsLXZpc2libGUgcGFnZXMs IHNvIG5vIGNvcnJlY3Rpb24gaXMgbmVlZGVkIGZvciB0aGF0LCBhbmQKIAkgKiB3ZSBhbHJlYWR5 IGFjY291bnRlZCBmb3IgdGhlIHNwYWNlIGluIHRob3NlIHBhZ2VzLCB0b28uCiAJICovCi0Jc3Rh dC0+dHVwbGVfY291bnQgPSB2YWNfZXN0aW1hdGVfcmVsdHVwbGVzKHJlbCwgbmJsb2Nrcywgc2Nh bm5lZCwKKwlzdGF0LT50dXBsZV9jb3VudCA9IHZhY19lc3RpbWF0ZV9yZWx0dXBsZXMocmVsLCBu YmxvY2tzLCBwLnNjYW5uZWQsCiAJCQkJCQkJCQkJCSAgIHN0YXQtPnR1cGxlX2NvdW50KTsKIAog CS8qIEl0J3Mgbm90IGNsZWFyIGlmIHdlIGNvdWxkIGdldCAtMSBoZXJlLCBidXQgYmUgc2FmZS4g Ki8KQEAgLTE5MCwxNiArMjUzLDE2IEBAIHN0YXRhcHByb3hfaGVhcChSZWxhdGlvbiByZWwsIG91 dHB1dF90eXBlICpzdGF0KQogCSAqLwogCWlmIChuYmxvY2tzICE9IDApCiAJewotCQlzdGF0LT5z Y2FubmVkX3BlcmNlbnQgPSAxMDAuMCAqIHNjYW5uZWQgLyBuYmxvY2tzOworCQlzdGF0LT5zY2Fu bmVkX3BlcmNlbnQgPSAxMDAuMCAqIHAuc2Nhbm5lZCAvIG5ibG9ja3M7CiAJCXN0YXQtPnR1cGxl X3BlcmNlbnQgPSAxMDAuMCAqIHN0YXQtPnR1cGxlX2xlbiAvIHN0YXQtPnRhYmxlX2xlbjsKIAkJ c3RhdC0+ZGVhZF90dXBsZV9wZXJjZW50ID0gMTAwLjAgKiBzdGF0LT5kZWFkX3R1cGxlX2xlbiAv IHN0YXQtPnRhYmxlX2xlbjsKIAkJc3RhdC0+ZnJlZV9wZXJjZW50ID0gMTAwLjAgKiBzdGF0LT5m cmVlX3NwYWNlIC8gc3RhdC0+dGFibGVfbGVuOwogCX0KIAotCWlmIChCdWZmZXJJc1ZhbGlkKHZt YnVmZmVyKSkKKwlpZiAoQnVmZmVySXNWYWxpZChwLnZtYnVmZmVyKSkKIAl7Ci0JCVJlbGVhc2VC dWZmZXIodm1idWZmZXIpOwotCQl2bWJ1ZmZlciA9IEludmFsaWRCdWZmZXI7CisJCVJlbGVhc2VC dWZmZXIocC52bWJ1ZmZlcik7CisJCXAudm1idWZmZXIgPSBJbnZhbGlkQnVmZmVyOwogCX0KIH0K IAotLSAKMi41MS4wCgo= --000000000000c775e90646c05fa6 Content-Type: application/x-patch; name="v1-0002-Streamify-Bloom-VACUUM-paths.patch" Content-Disposition: attachment; filename="v1-0002-Streamify-Bloom-VACUUM-paths.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjl0scna1 RnJvbSBkM2IxNTc5MmVlMDlkN2FiYTRkZjc2MjczZDg4ODNhNzM5ZDIxNWNlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBhbHRlcmVnbzY1NSA8ODI0NjYyNTI2QHFxLmNvbT4KRGF0ZTog VGh1LCAyNSBEZWMgMjAyNSAxMzo0MDowMiArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjEgMi8zXSBT dHJlYW1pZnkgQmxvb20gVkFDVVVNIHBhdGhzLgoKVXNlIHN0cmVhbWluZyByZWFkcyBpbiBibGJ1 bGtkZWxldGUoKSBhbmQgYmx2YWN1dW1jbGVhbnVwKCkgdG8gaXRlcmF0ZSBpbmRleCBwYWdlcyB3 aXRob3V0IHJlcGVhdGVkIFJlYWRCdWZmZXIgY2FsbHMsIGltcHJvdmluZyBWQUNVVU0gcGVyZm9y bWFuY2UgYW5kIHJlZHVjaW5nIGJ1ZmZlciBtYW5hZ2VyIG92ZXJoZWFkIGR1cmluZyBtYWludGVu YW5jZSBvcGVyYXRpb25zLgotLS0KIGNvbnRyaWIvYmxvb20vYmx2YWN1dW0uYyB8IDU1ICsrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0KIDEgZmlsZSBjaGFuZ2VkLCA1MSBp bnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYmxvb20v Ymx2YWN1dW0uYyBiL2NvbnRyaWIvYmxvb20vYmx2YWN1dW0uYwppbmRleCBlNjhhOTAwOGY1Ni4u NzQ1MjMwMmYwMjIgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYmxvb20vYmx2YWN1dW0uYworKysgYi9j b250cmliL2Jsb29tL2JsdmFjdXVtLmMKQEAgLTE3LDYgKzE3LDcgQEAKICNpbmNsdWRlICJjb21t YW5kcy92YWN1dW0uaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1Zm1nci5oIgogI2luY2x1ZGUgInN0 b3JhZ2UvaW5kZXhmc20uaCIKKyNpbmNsdWRlICJzdG9yYWdlL3JlYWRfc3RyZWFtLmgiCiAKIAog LyoKQEAgLTQwLDYgKzQxLDggQEAgYmxidWxrZGVsZXRlKEluZGV4VmFjdXVtSW5mbyAqaW5mbywg SW5kZXhCdWxrRGVsZXRlUmVzdWx0ICpzdGF0cywKIAlQYWdlCQlwYWdlOwogCUJsb29tTWV0YVBh Z2VEYXRhICptZXRhRGF0YTsKIAlHZW5lcmljWExvZ1N0YXRlICpneGxvZ1N0YXRlOworCUJsb2Nr UmFuZ2VSZWFkU3RyZWFtUHJpdmF0ZSBwOworCVJlYWRTdHJlYW0gKnN0cmVhbTsKIAogCWlmIChz dGF0cyA9PSBOVUxMKQogCQlzdGF0cyA9IHBhbGxvYzBfb2JqZWN0KEluZGV4QnVsa0RlbGV0ZVJl c3VsdCk7CkBAIC01MSw2ICs1NCwyNSBAQCBibGJ1bGtkZWxldGUoSW5kZXhWYWN1dW1JbmZvICpp bmZvLCBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKnN0YXRzLAogCSAqIHRoZXkgY2FuJ3QgY29udGFp biB0dXBsZXMgdG8gZGVsZXRlLgogCSAqLwogCW5wYWdlcyA9IFJlbGF0aW9uR2V0TnVtYmVyT2ZC bG9ja3MoaW5kZXgpOworCisJLyogU2NhbiBhbGwgYmxvY2tzIGV4Y2VwdCB0aGUgbWV0YXBhZ2Ug dXNpbmcgc3RyZWFtaW5nIHJlYWRzICovCisJcC5jdXJyZW50X2Jsb2NrbnVtID0gQkxPT01fSEVB RF9CTEtOTzsKKwlwLmxhc3RfZXhjbHVzaXZlID0gbnBhZ2VzOworCisJLyoKKwkgKiBJdCBpcyBz YWZlIHRvIHVzZSBiYXRjaG1vZGUgYXMgYmxvY2tfcmFuZ2VfcmVhZF9zdHJlYW1fY2IgdGFrZXMg bm8KKwkgKiBsb2Nrcy4KKwkgKi8KKwlzdHJlYW0gPSByZWFkX3N0cmVhbV9iZWdpbl9yZWxhdGlv bihSRUFEX1NUUkVBTV9NQUlOVEVOQU5DRSB8CisJCQkJCQkJCQkJUkVBRF9TVFJFQU1fRlVMTCB8 CisJCQkJCQkJCQkJUkVBRF9TVFJFQU1fVVNFX0JBVENISU5HLAorCQkJCQkJCQkJCWluZm8tPnN0 cmF0ZWd5LAorCQkJCQkJCQkJCWluZGV4LAorCQkJCQkJCQkJCU1BSU5fRk9SS05VTSwKKwkJCQkJ CQkJCQlibG9ja19yYW5nZV9yZWFkX3N0cmVhbV9jYiwKKwkJCQkJCQkJCQkmcCwKKwkJCQkJCQkJ CQkwKTsKKwogCWZvciAoYmxrbm8gPSBCTE9PTV9IRUFEX0JMS05POyBibGtubyA8IG5wYWdlczsg Ymxrbm8rKykKIAl7CiAJCUJsb29tVHVwbGUgKml0dXAsCkBAIC01OSw4ICs4MSw3IEBAIGJsYnVs a2RlbGV0ZShJbmRleFZhY3V1bUluZm8gKmluZm8sIEluZGV4QnVsa0RlbGV0ZVJlc3VsdCAqc3Rh dHMsCiAKIAkJdmFjdXVtX2RlbGF5X3BvaW50KGZhbHNlKTsKIAotCQlidWZmZXIgPSBSZWFkQnVm ZmVyRXh0ZW5kZWQoaW5kZXgsIE1BSU5fRk9SS05VTSwgYmxrbm8sCi0JCQkJCQkJCQlSQk1fTk9S TUFMLCBpbmZvLT5zdHJhdGVneSk7CisJCWJ1ZmZlciA9IHJlYWRfc3RyZWFtX25leHRfYnVmZmVy KHN0cmVhbSwgTlVMTCk7CiAKIAkJTG9ja0J1ZmZlcihidWZmZXIsIEJVRkZFUl9MT0NLX0VYQ0xV U0lWRSk7CiAJCWd4bG9nU3RhdGUgPSBHZW5lcmljWExvZ1N0YXJ0KGluZGV4KTsKQEAgLTEzMyw2 ICsxNTQsOSBAQCBibGJ1bGtkZWxldGUoSW5kZXhWYWN1dW1JbmZvICppbmZvLCBJbmRleEJ1bGtE ZWxldGVSZXN1bHQgKnN0YXRzLAogCQlVbmxvY2tSZWxlYXNlQnVmZmVyKGJ1ZmZlcik7CiAJfQog CisJQXNzZXJ0KHJlYWRfc3RyZWFtX25leHRfYnVmZmVyKHN0cmVhbSwgTlVMTCkgPT0gSW52YWxp ZEJ1ZmZlcik7CisJcmVhZF9zdHJlYW1fZW5kKHN0cmVhbSk7CisKIAkvKgogCSAqIFVwZGF0ZSB0 aGUgbWV0YXBhZ2UncyBub3RGdWxsUGFnZSBsaXN0IHdpdGggd2hhdGV2ZXIgd2UgZm91bmQuICBP dXIKIAkgKiBpbmZvIGNvdWxkIGFscmVhZHkgYmUgb3V0IG9mIGRhdGUgYXQgdGhpcyBwb2ludCwg YnV0IGJsaW5zZXJ0KCkgd2lsbApAQCAtMTY2LDYgKzE5MCw4IEBAIGJsdmFjdXVtY2xlYW51cChJ bmRleFZhY3V1bUluZm8gKmluZm8sIEluZGV4QnVsa0RlbGV0ZVJlc3VsdCAqc3RhdHMpCiAJUmVs YXRpb24JaW5kZXggPSBpbmZvLT5pbmRleDsKIAlCbG9ja051bWJlciBucGFnZXMsCiAJCQkJYmxr bm87CisJQmxvY2tSYW5nZVJlYWRTdHJlYW1Qcml2YXRlIHA7CisJUmVhZFN0cmVhbSAqc3RyZWFt OwogCiAJaWYgKGluZm8tPmFuYWx5emVfb25seSkKIAkJcmV0dXJuIHN0YXRzOwpAQCAtMTgxLDYg KzIwNywyNSBAQCBibHZhY3V1bWNsZWFudXAoSW5kZXhWYWN1dW1JbmZvICppbmZvLCBJbmRleEJ1 bGtEZWxldGVSZXN1bHQgKnN0YXRzKQogCXN0YXRzLT5udW1fcGFnZXMgPSBucGFnZXM7CiAJc3Rh dHMtPnBhZ2VzX2ZyZWUgPSAwOwogCXN0YXRzLT5udW1faW5kZXhfdHVwbGVzID0gMDsKKworCS8q IFNjYW4gYWxsIGJsb2NrcyBleGNlcHQgdGhlIG1ldGFwYWdlIHVzaW5nIHN0cmVhbWluZyByZWFk cyAqLworCXAuY3VycmVudF9ibG9ja251bSA9IEJMT09NX0hFQURfQkxLTk87CisJcC5sYXN0X2V4 Y2x1c2l2ZSA9IG5wYWdlczsKKworCS8qCisJICogSXQgaXMgc2FmZSB0byB1c2UgYmF0Y2htb2Rl IGFzIGJsb2NrX3JhbmdlX3JlYWRfc3RyZWFtX2NiIHRha2VzIG5vCisJICogbG9ja3MuCisJICov CisJc3RyZWFtID0gcmVhZF9zdHJlYW1fYmVnaW5fcmVsYXRpb24oUkVBRF9TVFJFQU1fTUFJTlRF TkFOQ0UgfAorCQkJCQkJCQkJCVJFQURfU1RSRUFNX0ZVTEwgfAorCQkJCQkJCQkJCVJFQURfU1RS RUFNX1VTRV9CQVRDSElORywKKwkJCQkJCQkJCQlpbmZvLT5zdHJhdGVneSwKKwkJCQkJCQkJCQlp bmRleCwKKwkJCQkJCQkJCQlNQUlOX0ZPUktOVU0sCisJCQkJCQkJCQkJYmxvY2tfcmFuZ2VfcmVh ZF9zdHJlYW1fY2IsCisJCQkJCQkJCQkJJnAsCisJCQkJCQkJCQkJMCk7CisKIAlmb3IgKGJsa25v ID0gQkxPT01fSEVBRF9CTEtOTzsgYmxrbm8gPCBucGFnZXM7IGJsa25vKyspCiAJewogCQlCdWZm ZXIJCWJ1ZmZlcjsKQEAgLTE4OCw4ICsyMzMsNyBAQCBibHZhY3V1bWNsZWFudXAoSW5kZXhWYWN1 dW1JbmZvICppbmZvLCBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKnN0YXRzKQogCiAJCXZhY3V1bV9k ZWxheV9wb2ludChmYWxzZSk7CiAKLQkJYnVmZmVyID0gUmVhZEJ1ZmZlckV4dGVuZGVkKGluZGV4 LCBNQUlOX0ZPUktOVU0sIGJsa25vLAotCQkJCQkJCQkJUkJNX05PUk1BTCwgaW5mby0+c3RyYXRl Z3kpOworCQlidWZmZXIgPSByZWFkX3N0cmVhbV9uZXh0X2J1ZmZlcihzdHJlYW0sIE5VTEwpOwog CQlMb2NrQnVmZmVyKGJ1ZmZlciwgQlVGRkVSX0xPQ0tfU0hBUkUpOwogCQlwYWdlID0gQnVmZmVy R2V0UGFnZShidWZmZXIpOwogCkBAIC0yMDYsNiArMjUwLDkgQEAgYmx2YWN1dW1jbGVhbnVwKElu ZGV4VmFjdXVtSW5mbyAqaW5mbywgSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICpzdGF0cykKIAkJVW5s b2NrUmVsZWFzZUJ1ZmZlcihidWZmZXIpOwogCX0KIAorCUFzc2VydChyZWFkX3N0cmVhbV9uZXh0 X2J1ZmZlcihzdHJlYW0sIE5VTEwpID09IEludmFsaWRCdWZmZXIpOworCXJlYWRfc3RyZWFtX2Vu ZChzdHJlYW0pOworCiAJSW5kZXhGcmVlU3BhY2VNYXBWYWN1dW0oaW5mby0+aW5kZXgpOwogCiAJ cmV0dXJuIHN0YXRzOwotLSAKMi41MS4wCgo= --000000000000c775e90646c05fa6 Content-Type: application/x-patch; name="v1-0001-Switch-Bloom-scan-paths-to-streaming-read.patch" Content-Disposition: attachment; filename="v1-0001-Switch-Bloom-scan-paths-to-streaming-read.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjl0scn50 RnJvbSAwYTIxMWU3ODhkOTY0YWViZDg3NmRjNDQ3MjQ0MGU4ZjIzNGNlMzhhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBhbHRlcmVnbzY1NSA8ODI0NjYyNTI2QHFxLmNvbT4KRGF0ZTog VGh1LCAyNSBEZWMgMjAyNSAxMzozOTo0MiArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjEgMS8zXSBT d2l0Y2ggQmxvb20gc2NhbiBwYXRocyB0byBzdHJlYW1pbmcgcmVhZC4KClJlcGxhY2UgcGVyLXBh Z2UgUmVhZEJ1ZmZlciBsb29wcyBpbiBibGdldGJpdG1hcCgpIHdpdGggcmVhZF9zdHJlYW1fYmVn aW5fcmVsYXRpb24oKSBhbmQgc2VxdWVudGlhbCBidWZmZXIgaXRlcmF0aW9uLCByZWR1Y2luZyBi dWZmZXIgY2h1cm4gYW5kIGltcHJvdmluZyBzY2FuIGVmZmljaWVuY3kgb24gbGFyZ2UgQmxvb20g aW5kZXhlcy4KLS0tCiBjb250cmliL2Jsb29tL2Jsc2Nhbi5jIHwgMjkgKysrKysrKysrKysrKysr KysrKysrKysrKy0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAyNSBpbnNlcnRpb25zKCspLCA0IGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYmxvb20vYmxzY2FuLmMgYi9jb250cmliL2Js b29tL2Jsc2Nhbi5jCmluZGV4IDBkNzFlZGJlOTFjLi5iMWZkYWJhYWI3NCAxMDA2NDQKLS0tIGEv Y29udHJpYi9ibG9vbS9ibHNjYW4uYworKysgYi9jb250cmliL2Jsb29tL2Jsc2Nhbi5jCkBAIC0x Nyw2ICsxNyw3IEBACiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicGdzdGF0Lmgi CiAjaW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3JlYWRfc3Ry ZWFtLmgiCiAKIC8qCiAgKiBCZWdpbiBzY2FuIG9mIGJsb29tIGluZGV4LgpAQCAtNzUsMTEgKzc2 LDEzIEBAIGludDY0CiBibGdldGJpdG1hcChJbmRleFNjYW5EZXNjIHNjYW4sIFRJREJpdG1hcCAq dGJtKQogewogCWludDY0CQludGlkcyA9IDA7Ci0JQmxvY2tOdW1iZXIgYmxrbm8gPSBCTE9PTV9I RUFEX0JMS05PLAorCUJsb2NrTnVtYmVyIGJsa25vLAogCQkJCW5wYWdlczsKIAlpbnQJCQlpOwog CUJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IGJhczsKIAlCbG9vbVNjYW5PcGFxdWUgc28gPSAoQmxvb21T Y2FuT3BhcXVlKSBzY2FuLT5vcGFxdWU7CisJQmxvY2tSYW5nZVJlYWRTdHJlYW1Qcml2YXRlIHA7 CisJUmVhZFN0cmVhbSAqc3RyZWFtOwogCiAJaWYgKHNvLT5zaWduID09IE5VTEwpCiAJewpAQCAt MTE5LDE0ICsxMjIsMjkgQEAgYmxnZXRiaXRtYXAoSW5kZXhTY2FuRGVzYyBzY2FuLCBUSURCaXRt YXAgKnRibSkKIAlpZiAoc2Nhbi0+aW5zdHJ1bWVudCkKIAkJc2Nhbi0+aW5zdHJ1bWVudC0+bnNl YXJjaGVzKys7CiAKKwkvKiBTY2FuIGFsbCBibG9ja3MgZXhjZXB0IHRoZSBtZXRhcGFnZSB1c2lu ZyBzdHJlYW1pbmcgcmVhZHMgKi8KKwlwLmN1cnJlbnRfYmxvY2tudW0gPSBCTE9PTV9IRUFEX0JM S05POworCXAubGFzdF9leGNsdXNpdmUgPSBucGFnZXM7CisKKwkvKgorCSAqIEl0IGlzIHNhZmUg dG8gdXNlIGJhdGNobW9kZSBhcyBibG9ja19yYW5nZV9yZWFkX3N0cmVhbV9jYiB0YWtlcyBubwor CSAqIGxvY2tzLgorCSAqLworCXN0cmVhbSA9IHJlYWRfc3RyZWFtX2JlZ2luX3JlbGF0aW9uKFJF QURfU1RSRUFNX0ZVTEwgfAorCQkJCQkJCQkJCVJFQURfU1RSRUFNX1VTRV9CQVRDSElORywKKwkJ CQkJCQkJCQliYXMsCisJCQkJCQkJCQkJc2Nhbi0+aW5kZXhSZWxhdGlvbiwKKwkJCQkJCQkJCQlN QUlOX0ZPUktOVU0sCisJCQkJCQkJCQkJYmxvY2tfcmFuZ2VfcmVhZF9zdHJlYW1fY2IsCisJCQkJ CQkJCQkJJnAsCisJCQkJCQkJCQkJMCk7CisKIAlmb3IgKGJsa25vID0gQkxPT01fSEVBRF9CTEtO TzsgYmxrbm8gPCBucGFnZXM7IGJsa25vKyspCiAJewogCQlCdWZmZXIJCWJ1ZmZlcjsKIAkJUGFn ZQkJcGFnZTsKIAotCQlidWZmZXIgPSBSZWFkQnVmZmVyRXh0ZW5kZWQoc2Nhbi0+aW5kZXhSZWxh dGlvbiwgTUFJTl9GT1JLTlVNLAotCQkJCQkJCQkJYmxrbm8sIFJCTV9OT1JNQUwsIGJhcyk7Ci0K KwkJYnVmZmVyID0gcmVhZF9zdHJlYW1fbmV4dF9idWZmZXIoc3RyZWFtLCBOVUxMKTsKIAkJTG9j a0J1ZmZlcihidWZmZXIsIEJVRkZFUl9MT0NLX1NIQVJFKTsKIAkJcGFnZSA9IEJ1ZmZlckdldFBh Z2UoYnVmZmVyKTsKIApAQCAtMTYyLDYgKzE4MCw5IEBAIGJsZ2V0Yml0bWFwKEluZGV4U2NhbkRl c2Mgc2NhbiwgVElEQml0bWFwICp0Ym0pCiAJCVVubG9ja1JlbGVhc2VCdWZmZXIoYnVmZmVyKTsK IAkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAl9CisKKwlBc3NlcnQocmVhZF9zdHJlYW1fbmV4 dF9idWZmZXIoc3RyZWFtLCBOVUxMKSA9PSBJbnZhbGlkQnVmZmVyKTsKKwlyZWFkX3N0cmVhbV9l bmQoc3RyZWFtKTsKIAlGcmVlQWNjZXNzU3RyYXRlZ3koYmFzKTsKIAogCXJldHVybiBudGlkczsK LS0gCjIuNTEuMAoK --000000000000c775e90646c05fa6--