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 1w9SaH-001S8C-16 for pgsql-hackers@arkaria.postgresql.org; Sun, 05 Apr 2026 18:52:33 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w9SaF-004OoK-0l for pgsql-hackers@arkaria.postgresql.org; Sun, 05 Apr 2026 18:52:31 +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 1w9SaE-004OoC-2g for pgsql-hackers@lists.postgresql.org; Sun, 05 Apr 2026 18:52:31 +0000 Received: from mail-qt1-x82a.google.com ([2607:f8b0:4864:20::82a]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w9SaC-00000000lku-1idh for pgsql-hackers@lists.postgresql.org; Sun, 05 Apr 2026 18:52:30 +0000 Received: by mail-qt1-x82a.google.com with SMTP id d75a77b69052e-50bbc41677dso51559471cf.0 for ; Sun, 05 Apr 2026 11:52:28 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1775415146; cv=none; d=google.com; s=arc-20240605; b=Jay5WD/WNN3X+MwR0wiy/6sEHNvcjpWEXnExnUFlJKHfJgbyduAOGQAZTZfektVeDH 6r4zjGCUgHshGzBF8CQEf7lu7cMHC7pDkGfUALTMhOrx3zvkLciCG/dnieQNXh93pU8G Ig4ca/xIonv6fQxCjV2PJfcLC2N9SxcntOqYPPA2UvRExKWs5k6QtClNPsv6ynDaEvqZ kWNaDc4GuxeG07GKKLnGpP5YJs5Suj8tb442KDTs7d3D6LROvwg+dZIeNJd/yl53OsUT ARj6zJdJ2n7vqj/Ytp54EelUt85Ll3Sp3M91arOvmOlqA5B6aOAHF0jiuc9wUsbQyddI vg9Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:mime-version:dkim-signature; bh=ArBUuwk4Aw1rSlxS5w3lBWWzAhBsAU4afoZY43JVA8o=; fh=paMv9WQWbgFlASeZaYGvJvGIwW6Nct3QoWCA3tT7v3o=; b=YD/s0Uq1LUazk6zVEv0UlnZEq4X7oM8WMnl+DG34VmdXmWPb6hGfYWOwL4ITDQ888j SGVxTwZpoQ/5G0ERUYAj/YFjbIrFcL0IO95olRualV7HdlNhnEPQEl7P8ubEjEEKK1wX KLEUJrKK0FHAWnVrS1cr6Mcoya4xcXo3u9dIFjQ6O+TS2P7SuavWGkyq1Vs344qfjg/L 84vlx1bHwoVGFb1ilDKMt99NMlVP8VAvZy6S11vN2ko67hGZuzrnyJe2csyGNKwIdRw4 eeKSs7gOjUoPqRxm4/6qw4DBLKT5AsMY/Ru5c2hfHFE3IrrM4HCd+R71WuF/BJQidO8M DR3g==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fittl.com; s=google; t=1775415146; x=1776019946; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=ArBUuwk4Aw1rSlxS5w3lBWWzAhBsAU4afoZY43JVA8o=; b=RCPuNfrhFxLBnyvHf1cFFEk+R44F6HIhwmg2rYD7yEkCAoWlh0b2On/KXpmMA6qoaE hozyR2GxoNr6IvFl9USIhNJhcTp7ZBxy1+oRwpkDV4hgG56JibICoirgqxbFJJ71yhUf T0m1ssJlzZDTsOAJSsncAPA0q18+HJnEZOVS4= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775415146; x=1776019946; h=cc: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=ArBUuwk4Aw1rSlxS5w3lBWWzAhBsAU4afoZY43JVA8o=; b=iqWylQGrHrLX1P/DIIRecl0KRIfN6D0uc4IfJztB6q5xDYbgOgIpzYTfCyNaGawb2w DksIHfnyd17zqj6J7HZvLdONGCYpeazw/wzOod/5Ezj9oeXTZd69qWPjWcRAU2L0ufP4 jWGS3FMa6181/JqfwNq/nEK+h6L2X64maUBHv8MurZbpj08m4Csa7QI1URrCl1hAzq6J BXD8Y0LFgXxlCiIYo1JkM+CR9+zESkvm9od+7n1s4gw885U5V1zbd2zb1zfLEKFsOzIk PffYJlf96EGOHnRnP8XWUkwbB/L7obNSxA6rompTZZD+OI/2w8Tvw/tkv5yGP96kC0rD JHsA== X-Gm-Message-State: AOJu0YyHzHzyXpwyC4YZh+p618B0zLiU0EX6S16qhbo2YhXC9VaujCdv 6SpyDlnLiQiafSLczSTYF2CPwiGFvb9jDfWiYp28wmnEX0UrN1NTYoEOeXOGPUxVfxji7QxUglr UfhZpzNxDktY+jZYtFCUbSq8Ie3hpemKGIi0h27C/kaCEFm6JxJoscxmd X-Gm-Gg: AeBDies6Hv7634jJxp39oLsKfGE2w8VHxVtFBJ5JOm6v8sTkqr8WQutQYbEEZ+3qusJ GHWFm61B3L0oV55AWP1CgKCU54iKlnAk/FOact3BUjttAtxYrFcO957s2tfNNtJp1CcLkojDf53 SkzIfIzey1mEWXyNVgd89XQvcs9VhKG7qBwgtGUNKlgfjJsuygYFbMOb2kuug8byvkj47TKkr1r OuP8BZWNfo3PQjZZwg5Bn2gd/cf1d7KpCbOGaGoVh+XnQZwt7iUt57ASvBKmdqS6X5G9GmVPzga LDFF4xH3/9AeDLs6nuqgMKZn4+HXiq64TPs+zp86 X-Received: by 2002:ac8:5f90:0:b0:509:2135:ed5e with SMTP id d75a77b69052e-50d62a7f0ecmr156039521cf.32.1775415146164; Sun, 05 Apr 2026 11:52:26 -0700 (PDT) MIME-Version: 1.0 From: Lukas Fittl Date: Sun, 5 Apr 2026 11:51:49 -0700 X-Gm-Features: AQROBzDnvegGRcGg_she08QWpt0hCIf_RjMQeEdDDd7XM0wQ9KcEWqRNo1B4d-0 Message-ID: Subject: Fix Heap Blocks accumulation for Parallel Bitmap Heap Scan To: PostgreSQL Hackers Cc: Melanie Plageman , Tomas Vondra , Andres Freund Content-Type: multipart/mixed; boundary="0000000000001e1a61064ebb0dd9" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000001e1a61064ebb0dd9 Content-Type: text/plain; charset="UTF-8" Hi, In another thread [0], Andres noted that Parallel Bitmap Heap Scan and Parallel Index-Only Scan don't have any test coverage for EXPLAIN (ANALYZE): parallel BHS is not covered: https://coverage.postgresql.org/src/backend/executor/nodeBitmapHeapscan.c.gcov.html#L536 parallel IOS is not covered: https://coverage.postgresql.org/src/backend/executor/nodeIndexonlyscan.c.gcov.html#L430 In the process of adding that coverage, I found a bug. This is slightly different than the bug that Tomas and Melanie posted about on an adjacent thread [1], so starting a new one: When secondary instrumentation data (that's not WalUsage or BufferUsage) gets handled by parallel workers, we need to do a lot of special handling. On top of making sure we copy the information, we also need to teach explain.c to aggregate the per-worker node instrumentation, like done for index searches in show_indexsearches_info: static void show_indexsearches_info(PlanState *planstate, ExplainState *es) { Plan *plan = planstate->plan; SharedIndexScanInstrumentation *SharedInfo = NULL; uint64 nsearches = 0; if (!es->analyze) return; ... /* Next get the sum of the counters set within each and every process */ if (SharedInfo) { for (int i = 0; i < SharedInfo->num_workers; ++i) { IndexScanInstrumentation *winstrument = &SharedInfo->winstrument[i]; nsearches += winstrument->nsearches; } } ExplainPropertyUInteger("Index Searches", NULL, nsearches, es); } Parallel Bitmap Heap Scans were missing such handling in show_tidbitmap_info, causing the information shown on the plan to only reflect the Heap Blocks of the leader, not that of the parallel workers. I think this is inconsistent, and should be fixed. See attached a patch that fixes that in show_tidbitmap_info and adds test coverage. See also attached a second patch that adds missing EXPLAIN ANALYZE test coverage for Parallel Index Only Scans. Thanks, Lukas [0]: https://www.postgresql.org/message-id/57biou6l65r7gr4nunoe6lignz2x6m3w45gihoypaez4pc46di@txj3bakhj66l [1]: https://www.postgresql.org/message-id/flat/dbd45d67-8fb9-464f-b3ed-6fe185f8c8c9%40vondra.me#8e15b22526b969c8b730c065100aab72 -- Lukas Fittl --0000000000001e1a61064ebb0dd9 Content-Type: application/x-patch; name="v1-0001-Parallel-Bitmap-Heap-Scan-Fix-EXPLAIN-reporting-o.patch" Content-Disposition: attachment; filename="v1-0001-Parallel-Bitmap-Heap-Scan-Fix-EXPLAIN-reporting-o.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnm40iff0 RnJvbSAwODA0MDdkOTRmZjZkODdlY2JiMWY3NTdjMjZiMzQ5NTlkYzZkMTlkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpEYXRlOiBT dW4sIDUgQXByIDIwMjYgMDM6Mzk6NDYgLTA3MDAKU3ViamVjdDogW1BBVENIIHYxIDEvMl0gUGFy YWxsZWwgQml0bWFwIEhlYXAgU2NhbjogRml4IEVYUExBSU4gcmVwb3J0aW5nIG9mCiAiSGVhcCBC bG9ja3MiCgpGaXggdGhlIG1pc3NpbmcgYWNjdW11bGF0aW9uIG9mICJIZWFwIEJsb2NrcyIgZnJv bSBwYXJhbGxlbCBxdWVyeSB3b3JrZXJzCnRvIHRoZSBsZWFkZXIsIGNhdXNpbmcgRVhQTEFJTiAo QU5BTFlaRSkgdG8gb25seSBzaG93IHRoZSBsZWFkZXIgc3RhdGlzdGljcywKc2lnbmlmaWNhbnRs eSB1bmRlcmNvdW50aW5nIHRoZSB0cnVlIHZhbHVlLgoKQWRkaXRpb25hbGx5LCBhZGQgYSByZWdy ZXNzaW9uIHRlc3QgY292ZXJpbmcgRVhQTEFJTiAoQU5BTFlaRSkgb2YgYQpQYXJhbGxlbCBCaXRt YXAgSGVhcCBTY2FuLCB3aGljaCBwcmV2aW91c2x5IHdhcyBub3QgdGVzdGVkIGF0IGFsbC4KCkF1 dGhvcjogTHVrYXMgRml0dGwgPGx1a2FzQGZpdHRsLmNvbT4KUmV2aWV3ZWQtYnk6CkRpc2N1c3Np b24KLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMgICAgICAgIHwgMzMgKysrKysr KysrKysrKysrKysrKysrLS0tLS0tCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2V4cGxhaW4u b3V0IHwgMzMgKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3Nx bC9leHBsYWluLnNxbCAgICAgIHwgMzEgKysrKysrKysrKysrKysrKysrKysrKysrKwogMyBmaWxl cyBjaGFuZ2VkLCA5MCBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4 cGxhaW4uYwppbmRleCBlNGI3MDE2NmIwZS4uYjAxYTJlMWUxNDkgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBs YWluLmMKQEAgLTM5MjQsMjYgKzM5MjQsNDUgQEAgc2hvd19pbmRleHNlYXJjaGVzX2luZm8oUGxh blN0YXRlICpwbGFuc3RhdGUsIEV4cGxhaW5TdGF0ZSAqZXMpCiBzdGF0aWMgdm9pZAogc2hvd190 aWRiaXRtYXBfaW5mbyhCaXRtYXBIZWFwU2NhblN0YXRlICpwbGFuc3RhdGUsIEV4cGxhaW5TdGF0 ZSAqZXMpCiB7CisJdWludDY0CQlleGFjdF9wYWdlczsKKwl1aW50NjQJCWxvc3N5X3BhZ2VzOwor CiAJaWYgKCFlcy0+YW5hbHl6ZSkKIAkJcmV0dXJuOwogCisJLyogU3RhcnQgd2l0aCBsZWFkZXIn cyBzdGF0cyAqLworCWV4YWN0X3BhZ2VzID0gcGxhbnN0YXRlLT5zdGF0cy5leGFjdF9wYWdlczsK Kwlsb3NzeV9wYWdlcyA9IHBsYW5zdGF0ZS0+c3RhdHMubG9zc3lfcGFnZXM7CisKKwkvKiBBY2N1 bXVsYXRlIHdvcmtlciBzdGF0cyBpbnRvIG5vZGUtbGV2ZWwgdG90YWxzICovCisJaWYgKHBsYW5z dGF0ZS0+c2luc3RydW1lbnQgIT0gTlVMTCkKKwl7CisJCWZvciAoaW50IG4gPSAwOyBuIDwgcGxh bnN0YXRlLT5zaW5zdHJ1bWVudC0+bnVtX3dvcmtlcnM7IG4rKykKKwkJeworCQkJQml0bWFwSGVh cFNjYW5JbnN0cnVtZW50YXRpb24gKnNpID0gJnBsYW5zdGF0ZS0+c2luc3RydW1lbnQtPnNpbnN0 cnVtZW50W25dOworCisJCQlleGFjdF9wYWdlcyArPSBzaS0+ZXhhY3RfcGFnZXM7CisJCQlsb3Nz eV9wYWdlcyArPSBzaS0+bG9zc3lfcGFnZXM7CisJCX0KKwl9CisKIAlpZiAoZXMtPmZvcm1hdCAh PSBFWFBMQUlOX0ZPUk1BVF9URVhUKQogCXsKIAkJRXhwbGFpblByb3BlcnR5VUludGVnZXIoIkV4 YWN0IEhlYXAgQmxvY2tzIiwgTlVMTCwKLQkJCQkJCQkJcGxhbnN0YXRlLT5zdGF0cy5leGFjdF9w YWdlcywgZXMpOworCQkJCQkJCQlleGFjdF9wYWdlcywgZXMpOwogCQlFeHBsYWluUHJvcGVydHlV SW50ZWdlcigiTG9zc3kgSGVhcCBCbG9ja3MiLCBOVUxMLAotCQkJCQkJCQlwbGFuc3RhdGUtPnN0 YXRzLmxvc3N5X3BhZ2VzLCBlcyk7CisJCQkJCQkJCWxvc3N5X3BhZ2VzLCBlcyk7CiAJfQogCWVs c2UKIAl7Ci0JCWlmIChwbGFuc3RhdGUtPnN0YXRzLmV4YWN0X3BhZ2VzID4gMCB8fCBwbGFuc3Rh dGUtPnN0YXRzLmxvc3N5X3BhZ2VzID4gMCkKKwkJaWYgKGV4YWN0X3BhZ2VzID4gMCB8fCBsb3Nz eV9wYWdlcyA+IDApCiAJCXsKIAkJCUV4cGxhaW5JbmRlbnRUZXh0KGVzKTsKIAkJCWFwcGVuZFN0 cmluZ0luZm9TdHJpbmcoZXMtPnN0ciwgIkhlYXAgQmxvY2tzOiIpOwotCQkJaWYgKHBsYW5zdGF0 ZS0+c3RhdHMuZXhhY3RfcGFnZXMgPiAwKQotCQkJCWFwcGVuZFN0cmluZ0luZm8oZXMtPnN0ciwg IiBleGFjdD0iIFVJTlQ2NF9GT1JNQVQsIHBsYW5zdGF0ZS0+c3RhdHMuZXhhY3RfcGFnZXMpOwot CQkJaWYgKHBsYW5zdGF0ZS0+c3RhdHMubG9zc3lfcGFnZXMgPiAwKQotCQkJCWFwcGVuZFN0cmlu Z0luZm8oZXMtPnN0ciwgIiBsb3NzeT0iIFVJTlQ2NF9GT1JNQVQsIHBsYW5zdGF0ZS0+c3RhdHMu bG9zc3lfcGFnZXMpOworCQkJaWYgKGV4YWN0X3BhZ2VzID4gMCkKKwkJCQlhcHBlbmRTdHJpbmdJ bmZvKGVzLT5zdHIsICIgZXhhY3Q9IiBVSU5UNjRfRk9STUFULCBleGFjdF9wYWdlcyk7CisJCQlp ZiAobG9zc3lfcGFnZXMgPiAwKQorCQkJCWFwcGVuZFN0cmluZ0luZm8oZXMtPnN0ciwgIiBsb3Nz eT0iIFVJTlQ2NF9GT1JNQVQsIGxvc3N5X3BhZ2VzKTsKIAkJCWFwcGVuZFN0cmluZ0luZm9DaGFy KGVzLT5zdHIsICdcbicpOwogCQl9CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9leHBsYWluLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZXhwbGFpbi5v dXQKaW5kZXggN2MxZjI2YjE4MmMuLjU4YzVhNTEyZDc0IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL2V4cGxhaW4ub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvZXhwbGFpbi5vdXQKQEAgLTgyMiwzICs4MjIsMzYgQEAgc2VsZWN0IGV4cGxhaW5fZmlsdGVy KCdleHBsYWluIChhbmFseXplLGJ1ZmZlcnMgb2ZmLGNvc3RzIG9mZikgc2VsZWN0IHN1bShuKSBv dmUKICg5IHJvd3MpCiAKIHJlc2V0IHdvcmtfbWVtOworLS0gVGVzdCBwYXJhbGxlbCBiaXRtYXAg aGVhcCBzY2FuIHJlcG9ydHMgcGVyLXdvcmtlciBoZWFwIGJsb2NrIHN0YXRzLgorQ1JFQVRFIEZV TkNUSU9OIGNoZWNrX3BhcmFsbGVsX2JpdG1hcF9oZWFwX3NjYW4oKSBSRVRVUk5TIGJvb2xlYW4g QVMgJCQKK0RFQ0xBUkUKKyAgICBwbGFuX2pzb24ganNvbjsKKyAgICBub2RlIGpzb247CitCRUdJ TgorICAgIFNFVCBMT0NBTCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKKyAgICBTRVQgTE9DQUwgZW5h YmxlX2luZGV4c2NhbiA9IG9mZjsKKyAgICBTRVQgTE9DQUwgcGFyYWxsZWxfc2V0dXBfY29zdCA9 IDA7CisgICAgU0VUIExPQ0FMIHBhcmFsbGVsX3R1cGxlX2Nvc3QgPSAwOworICAgIFNFVCBMT0NB TCBtaW5fcGFyYWxsZWxfdGFibGVfc2Nhbl9zaXplID0gMDsKKyAgICBTRVQgTE9DQUwgbWluX3Bh cmFsbGVsX2luZGV4X3NjYW5fc2l6ZSA9IDA7CisgICAgU0VUIExPQ0FMIG1heF9wYXJhbGxlbF93 b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworICAgIFNFVCBMT0NBTCBwYXJhbGxlbF9sZWFkZXJfcGFy dGljaXBhdGlvbiA9IG9mZjsKKworICAgIEVYRUNVVEUgJ0VYUExBSU4gKEFOQUxZWkUsIEJVRkZF UlMsIENPU1RTIE9GRiwgRk9STUFUIEpTT04pCisgICAgICAgIFNFTEVDVCBjb3VudCgqKSBGUk9N IHRlbmsxIFdIRVJFIGh1bmRyZWQgPiAxJyBJTlRPIHBsYW5fanNvbjsKKworICAgIG5vZGUgOj0g cGxhbl9qc29uLT4wLT4nUGxhbic7CisgICAgV0hJTEUgbm9kZS0+J1BsYW5zJyBJUyBOT1QgTlVM TCBBTkQgbm9kZS0+PidOb2RlIFR5cGUnICE9ICdCaXRtYXAgSGVhcCBTY2FuJyBMT09QCisgICAg ICAgIG5vZGUgOj0gbm9kZS0+J1BsYW5zJy0+MDsKKyAgICBFTkQgTE9PUDsKKworICAgIFJFVFVS TiBDT0FMRVNDRSgobm9kZS0+PidFeGFjdCBIZWFwIEJsb2NrcycpOjppbnQsIDApID4gMDsKK0VO RDsKKyQkIExBTkdVQUdFIHBscGdzcWw7CitTRUxFQ1QgY2hlY2tfcGFyYWxsZWxfYml0bWFwX2hl YXBfc2NhbigpIEFTIHBhcmFsbGVsX2JpdG1hcF9pbnN0cnVtZW50YXRpb247CisgcGFyYWxsZWxf Yml0bWFwX2luc3RydW1lbnRhdGlvbiAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIHQKKygxIHJvdykKKworRFJPUCBGVU5DVElPTiBjaGVja19wYXJhbGxlbF9iaXRtYXBfaGVh cF9zY2FuOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZXhwbGFpbi5zcWwgYi9z cmMvdGVzdC9yZWdyZXNzL3NxbC9leHBsYWluLnNxbAppbmRleCBlYmRhYjQyNjA0Yi4uYmFjOTc1 MjIwNTMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2V4cGxhaW4uc3FsCisrKyBi L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2V4cGxhaW4uc3FsCkBAIC0xODgsMyArMTg4LDM0IEBAIHNl bGVjdCBleHBsYWluX2ZpbHRlcignZXhwbGFpbiAoYW5hbHl6ZSxidWZmZXJzIG9mZixjb3N0cyBv ZmYpIHNlbGVjdCBzdW0obikgb3ZlCiAtLSBUZXN0IHR1cGxlc3RvcmUgc3RvcmFnZSB1c2FnZSBp biBXaW5kb3cgYWdncmVnYXRlIChtZW1vcnkgYW5kIGRpc2sgY2FzZSwgZmluYWwgcmVzdWx0IGlz IGRpc2spCiBzZWxlY3QgZXhwbGFpbl9maWx0ZXIoJ2V4cGxhaW4gKGFuYWx5emUsYnVmZmVycyBv ZmYsY29zdHMgb2ZmKSBzZWxlY3Qgc3VtKG4pIG92ZXIocGFydGl0aW9uIGJ5IG0pIGZyb20gKFNF TEVDVCBuIDwgMyBhcyBtLCBuIGZyb20gZ2VuZXJhdGVfc2VyaWVzKDEsMjUwMCkgYShuKSknKTsK IHJlc2V0IHdvcmtfbWVtOworCistLSBUZXN0IHBhcmFsbGVsIGJpdG1hcCBoZWFwIHNjYW4gcmVw b3J0cyBwZXItd29ya2VyIGhlYXAgYmxvY2sgc3RhdHMuCitDUkVBVEUgRlVOQ1RJT04gY2hlY2tf cGFyYWxsZWxfYml0bWFwX2hlYXBfc2NhbigpIFJFVFVSTlMgYm9vbGVhbiBBUyAkJAorREVDTEFS RQorICAgIHBsYW5fanNvbiBqc29uOworICAgIG5vZGUganNvbjsKK0JFR0lOCisgICAgU0VUIExP Q0FMIGVuYWJsZV9zZXFzY2FuID0gb2ZmOworICAgIFNFVCBMT0NBTCBlbmFibGVfaW5kZXhzY2Fu ID0gb2ZmOworICAgIFNFVCBMT0NBTCBwYXJhbGxlbF9zZXR1cF9jb3N0ID0gMDsKKyAgICBTRVQg TE9DQUwgcGFyYWxsZWxfdHVwbGVfY29zdCA9IDA7CisgICAgU0VUIExPQ0FMIG1pbl9wYXJhbGxl bF90YWJsZV9zY2FuX3NpemUgPSAwOworICAgIFNFVCBMT0NBTCBtaW5fcGFyYWxsZWxfaW5kZXhf c2Nhbl9zaXplID0gMDsKKyAgICBTRVQgTE9DQUwgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dh dGhlciA9IDI7CisgICAgU0VUIExPQ0FMIHBhcmFsbGVsX2xlYWRlcl9wYXJ0aWNpcGF0aW9uID0g b2ZmOworCisgICAgRVhFQ1VURSAnRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUywgQ09TVFMgT0ZG LCBGT1JNQVQgSlNPTikKKyAgICAgICAgU0VMRUNUIGNvdW50KCopIEZST00gdGVuazEgV0hFUkUg aHVuZHJlZCA+IDEnIElOVE8gcGxhbl9qc29uOworCisgICAgbm9kZSA6PSBwbGFuX2pzb24tPjAt PidQbGFuJzsKKyAgICBXSElMRSBub2RlLT4nUGxhbnMnIElTIE5PVCBOVUxMIEFORCBub2RlLT4+ J05vZGUgVHlwZScgIT0gJ0JpdG1hcCBIZWFwIFNjYW4nIExPT1AKKyAgICAgICAgbm9kZSA6PSBu b2RlLT4nUGxhbnMnLT4wOworICAgIEVORCBMT09QOworCisgICAgUkVUVVJOIENPQUxFU0NFKChu b2RlLT4+J0V4YWN0IEhlYXAgQmxvY2tzJyk6OmludCwgMCkgPiAwOworRU5EOworJCQgTEFOR1VB R0UgcGxwZ3NxbDsKKworU0VMRUNUIGNoZWNrX3BhcmFsbGVsX2JpdG1hcF9oZWFwX3NjYW4oKSBB UyBwYXJhbGxlbF9iaXRtYXBfaW5zdHJ1bWVudGF0aW9uOworCitEUk9QIEZVTkNUSU9OIGNoZWNr X3BhcmFsbGVsX2JpdG1hcF9oZWFwX3NjYW47Ci0tIAoyLjQ3LjEKCg== --0000000000001e1a61064ebb0dd9 Content-Type: application/x-patch; name="v1-0002-Add-regression-test-coverage-for-EXPLAIN-of-Paral.patch" Content-Disposition: attachment; filename="v1-0002-Add-regression-test-coverage-for-EXPLAIN-of-Paral.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnm40ifk1 RnJvbSA3ZjM5YTU4ZTllODQ1NzA5Yjg5NzI3NmUxYjg2Mzg0YmQ3ZjYwYzNhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpEYXRlOiBT dW4sIDUgQXByIDIwMjYgMDM6NDg6MjIgLTA3MDAKU3ViamVjdDogW1BBVENIIHYxIDIvMl0gQWRk IHJlZ3Jlc3Npb24gdGVzdCBjb3ZlcmFnZSBmb3IgRVhQTEFJTiBvZiBQYXJhbGxlbAogSW5kZXgg T25seSBTY2FucwoKVGhlIGZ1bmN0aW9ucyBkZWFsaW5nIHdpdGggY29weWluZyBiYWNrIHBhcmFs bGVsIHdvcmtlciBpbnN0cnVtZW50YXRpb24Kc3VjaCBhcyBFeGVjSW5kZXhPbmx5U2NhblJldHJp ZXZlSW5zdHJ1bWVudGF0aW9uIHdlcmUgbm90IGV4ZXJjaXNlZAphdCBhbGwgaW4gdGhlIHJlZ3Jl c3Npb24gdGVzdHMsIGxlYWRpbmcgdG8gYSBnYXAgaW4gY292ZXJhZ2UuIEFkZCBhCnF1ZXJ5IHRo YXQgdmVyaWZpZXMgd2UgY29ycmVjdGx5IGNvcHkgYmFjayAiSW5kZXggU2VhcmNoZXMiIGZvcgpF WFBMQUlOIEFOQUxZWkUgb2YgYSBQYXJhbGxlbCBJbmRleCBPbmx5IFNjYW4uCgpSZXBvcnRlZC1i eTogQW5kcmVzIEZyZXVuZCA8YW5kcmVzQGFuYXJhemVsLmRlPgpBdXRob3I6IEx1a2FzIEZpdHRs IDxsdWthc0BmaXR0bC5jb20+CkRpc2N1c3Npb246Ci0tLQogc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9leHBsYWluLm91dCB8IDM0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKwogc3JjL3Rl c3QvcmVncmVzcy9zcWwvZXhwbGFpbi5zcWwgICAgICB8IDMyICsrKysrKysrKysrKysrKysrKysr KysrKysKIDIgZmlsZXMgY2hhbmdlZCwgNjYgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZXhwbGFpbi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL2V4cGxhaW4ub3V0CmluZGV4IDU4YzVhNTEyZDc0Li5iMzA3ZTgxMGNhNSAxMDA2NDQK LS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9leHBsYWluLm91dAorKysgYi9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL2V4cGxhaW4ub3V0CkBAIC04NTUsMyArODU1LDM3IEBAIFNFTEVD VCBjaGVja19wYXJhbGxlbF9iaXRtYXBfaGVhcF9zY2FuKCkgQVMgcGFyYWxsZWxfYml0bWFwX2lu c3RydW1lbnRhdGlvbjsKICgxIHJvdykKIAogRFJPUCBGVU5DVElPTiBjaGVja19wYXJhbGxlbF9i aXRtYXBfaGVhcF9zY2FuOworLS0gVGVzdCBwYXJhbGxlbCBpbmRleC1vbmx5IHNjYW4gcmVwb3J0 cyBwZXItd29ya2VyIGluZGV4IHNlYXJjaCBzdGF0cy4KK0NSRUFURSBGVU5DVElPTiBjaGVja19w YXJhbGxlbF9pbmRleG9ubHlfc2NhbigpIFJFVFVSTlMgYm9vbGVhbiBBUyAkJAorREVDTEFSRQor ICAgIHBsYW5fanNvbiBqc29uOworICAgIG5vZGUganNvbjsKK0JFR0lOCisgICAgU0VUIExPQ0FM IGVuYWJsZV9zZXFzY2FuID0gb2ZmOworICAgIFNFVCBMT0NBTCBlbmFibGVfYml0bWFwc2NhbiA9 IG9mZjsKKyAgICBTRVQgTE9DQUwgcGFyYWxsZWxfc2V0dXBfY29zdCA9IDA7CisgICAgU0VUIExP Q0FMIHBhcmFsbGVsX3R1cGxlX2Nvc3QgPSAwOworICAgIFNFVCBMT0NBTCBtaW5fcGFyYWxsZWxf aW5kZXhfc2Nhbl9zaXplID0gMDsKKyAgICBTRVQgTE9DQUwgbWluX3BhcmFsbGVsX3RhYmxlX3Nj YW5fc2l6ZSA9IDA7CisgICAgU0VUIExPQ0FMIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRo ZXIgPSAyOworICAgIFNFVCBMT0NBTCBwYXJhbGxlbF9sZWFkZXJfcGFydGljaXBhdGlvbiA9IG9m ZjsKKworICAgIEVYRUNVVEUgJ0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMsIENPU1RTIE9GRiwg Rk9STUFUIEpTT04pCisgICAgICAgIFNFTEVDVCBjb3VudCgqKSBGUk9NIHRlbmsxIFdIRVJFIHRo b3VzYW5kID4gOTUnIElOVE8gcGxhbl9qc29uOworCisgICAgLS0gRHJpbGwgZG93biB0byB0aGUg SW5kZXggT25seSBTY2FuIG5vZGUKKyAgICBub2RlIDo9IHBsYW5fanNvbi0+MC0+J1BsYW4nOwor ICAgIFdISUxFIG5vZGUtPidQbGFucycgSVMgTk9UIE5VTEwgQU5EIG5vZGUtPj4nTm9kZSBUeXBl JyAhPSAnSW5kZXggT25seSBTY2FuJyBMT09QCisgICAgICAgIG5vZGUgOj0gbm9kZS0+J1BsYW5z Jy0+MDsKKyAgICBFTkQgTE9PUDsKKworICAgIFJFVFVSTiBDT0FMRVNDRSgobm9kZS0+PidJbmRl eCBTZWFyY2hlcycpOjppbnQsIDApID4gMDsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWw7CitT RUxFQ1QgY2hlY2tfcGFyYWxsZWxfaW5kZXhvbmx5X3NjYW4oKSBBUyBwYXJhbGxlbF9pbmRleG9u bHlfaW5zdHJ1bWVudGF0aW9uOworIHBhcmFsbGVsX2luZGV4b25seV9pbnN0cnVtZW50YXRpb24g CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKK0RS T1AgRlVOQ1RJT04gY2hlY2tfcGFyYWxsZWxfaW5kZXhvbmx5X3NjYW47CmRpZmYgLS1naXQgYS9z cmMvdGVzdC9yZWdyZXNzL3NxbC9leHBsYWluLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2V4 cGxhaW4uc3FsCmluZGV4IGJhYzk3NTIyMDUzLi4zYTEzZmE2Y2E2OSAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvZXhwbGFpbi5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwv ZXhwbGFpbi5zcWwKQEAgLTIxOSwzICsyMTksMzUgQEAgJCQgTEFOR1VBR0UgcGxwZ3NxbDsKIFNF TEVDVCBjaGVja19wYXJhbGxlbF9iaXRtYXBfaGVhcF9zY2FuKCkgQVMgcGFyYWxsZWxfYml0bWFw X2luc3RydW1lbnRhdGlvbjsKIAogRFJPUCBGVU5DVElPTiBjaGVja19wYXJhbGxlbF9iaXRtYXBf aGVhcF9zY2FuOworCistLSBUZXN0IHBhcmFsbGVsIGluZGV4LW9ubHkgc2NhbiByZXBvcnRzIHBl ci13b3JrZXIgaW5kZXggc2VhcmNoIHN0YXRzLgorQ1JFQVRFIEZVTkNUSU9OIGNoZWNrX3BhcmFs bGVsX2luZGV4b25seV9zY2FuKCkgUkVUVVJOUyBib29sZWFuIEFTICQkCitERUNMQVJFCisgICAg cGxhbl9qc29uIGpzb247CisgICAgbm9kZSBqc29uOworQkVHSU4KKyAgICBTRVQgTE9DQUwgZW5h YmxlX3NlcXNjYW4gPSBvZmY7CisgICAgU0VUIExPQ0FMIGVuYWJsZV9iaXRtYXBzY2FuID0gb2Zm OworICAgIFNFVCBMT0NBTCBwYXJhbGxlbF9zZXR1cF9jb3N0ID0gMDsKKyAgICBTRVQgTE9DQUwg cGFyYWxsZWxfdHVwbGVfY29zdCA9IDA7CisgICAgU0VUIExPQ0FMIG1pbl9wYXJhbGxlbF9pbmRl eF9zY2FuX3NpemUgPSAwOworICAgIFNFVCBMT0NBTCBtaW5fcGFyYWxsZWxfdGFibGVfc2Nhbl9z aXplID0gMDsKKyAgICBTRVQgTE9DQUwgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9 IDI7CisgICAgU0VUIExPQ0FMIHBhcmFsbGVsX2xlYWRlcl9wYXJ0aWNpcGF0aW9uID0gb2ZmOwor CisgICAgRVhFQ1VURSAnRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUywgQ09TVFMgT0ZGLCBGT1JN QVQgSlNPTikKKyAgICAgICAgU0VMRUNUIGNvdW50KCopIEZST00gdGVuazEgV0hFUkUgdGhvdXNh bmQgPiA5NScgSU5UTyBwbGFuX2pzb247CisKKyAgICAtLSBEcmlsbCBkb3duIHRvIHRoZSBJbmRl eCBPbmx5IFNjYW4gbm9kZQorICAgIG5vZGUgOj0gcGxhbl9qc29uLT4wLT4nUGxhbic7CisgICAg V0hJTEUgbm9kZS0+J1BsYW5zJyBJUyBOT1QgTlVMTCBBTkQgbm9kZS0+PidOb2RlIFR5cGUnICE9 ICdJbmRleCBPbmx5IFNjYW4nIExPT1AKKyAgICAgICAgbm9kZSA6PSBub2RlLT4nUGxhbnMnLT4w OworICAgIEVORCBMT09QOworCisgICAgUkVUVVJOIENPQUxFU0NFKChub2RlLT4+J0luZGV4IFNl YXJjaGVzJyk6OmludCwgMCkgPiAwOworRU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbDsKKworU0VM RUNUIGNoZWNrX3BhcmFsbGVsX2luZGV4b25seV9zY2FuKCkgQVMgcGFyYWxsZWxfaW5kZXhvbmx5 X2luc3RydW1lbnRhdGlvbjsKKworRFJPUCBGVU5DVElPTiBjaGVja19wYXJhbGxlbF9pbmRleG9u bHlfc2NhbjsKLS0gCjIuNDcuMQoK --0000000000001e1a61064ebb0dd9--