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.94.2) (envelope-from ) id 1u4oTH-007fmE-3U for pgsql-hackers@arkaria.postgresql.org; Tue, 15 Apr 2025 22:09:35 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1u4oTF-000Ot3-3c for pgsql-hackers@arkaria.postgresql.org; Tue, 15 Apr 2025 22:09:33 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1u4oTE-000Osv-Bv for pgsql-hackers@lists.postgresql.org; Tue, 15 Apr 2025 22:09:33 +0000 Received: from forward502b.mail.yandex.net ([178.154.239.146]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1u4oTA-000GOi-0h for pgsql-hackers@lists.postgresql.org; Tue, 15 Apr 2025 22:09:32 +0000 Received: from mail-nwsmtp-smtp-production-main-89.sas.yp-c.yandex.net (mail-nwsmtp-smtp-production-main-89.sas.yp-c.yandex.net [IPv6:2a02:6b8:c23:3b11:0:640:80c7:0]) by forward502b.mail.yandex.net (Yandex) with ESMTPS id 8091E613C5; Wed, 16 Apr 2025 01:09:24 +0300 (MSK) Received: by mail-nwsmtp-smtp-production-main-89.sas.yp-c.yandex.net (smtp/Yandex) with ESMTPSA id L9QU437LaOs0-eTtoGb88; Wed, 16 Apr 2025 01:09:23 +0300 X-Yandex-Fwd: 1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tantorlabs.com; s=mail; t=1744754963; bh=HEcxSyikNeEs//zirJ7CNWYgxa4Lt0GsTMMM8Xlw1OI=; h=In-Reply-To:Cc:Date:References:To:Subject:Message-ID:From; b=jiGV6dtWbpAHf+ltYDIm1lVs3GZ90QT1760Jm6+hvUEVRVVXfAzw0SDLKYf2CdFFu Mb19apiQg5Eoqe3z1WzaJKcRvtWqTFJme7s0LQNb+Ej8RnBwklthOtUFV91f5BZyBG CuXnUs79D5c3IcqIAuFU3XHSxsD9JrLW82CQKyhY= Authentication-Results: mail-nwsmtp-smtp-production-main-89.sas.yp-c.yandex.net; dkim=pass header.i=@tantorlabs.com Content-Type: multipart/mixed; boundary="------------NIVzoN7eGPqICUNWCD77CR0q" Message-ID: <7e995158-157e-4ec6-a7c8-266c1a6f7b43@tantorlabs.com> Date: Wed, 16 Apr 2025 01:09:20 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Add estimated hit ratio to Memoize in EXPLAIN to explain cost adjustment To: David Rowley Cc: Robert Haas , Tom Lane , Lukas Fittl , Daniel Gustafsson , PostgreSQL Hackers , Nikolay Samokhvalov , Andrei Lepikhov References: <1161645.1742854534@sss.pgh.pa.us> <1164845.1742856354@sss.pgh.pa.us> <3ba16aa7-3cb2-4289-b773-522ae2f03a77@tantorlabs.com> <81ef0f5a-b6a1-4417-ae3a-2bae9b8d419e@gmail.com> <67b5c84a-dedd-4103-af7e-0117046102fe@tantorlabs.com> <580fe72c-85be-45a8-9e00-6b5417690557@tantorlabs.com> <3ea66a50-e4b0-4f20-ae0c-4d9cbaf81cfb@tantorlabs.com> <0e8dc4fa-3655-4e9f-9424-9b32a15e6acd@tantorlabs.com> Content-Language: en-US From: Ilia Evdokimov In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------NIVzoN7eGPqICUNWCD77CR0q Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit I've prepared the updated patches as discussed, including the addition of estimated lookups in the EXPLAIN output for Memoize. Please let me know if you have any feedback or further suggestions. -- Best regards, Ilia Evdokimov, Tantor Labs LLC. --------------NIVzoN7eGPqICUNWCD77CR0q Content-Type: text/x-patch; charset=UTF-8; name="v8-0001-Show-ndistinct-and-est_entries-in-EXPLAIN-for-Mem.patch" Content-Disposition: attachment; filename*0="v8-0001-Show-ndistinct-and-est_entries-in-EXPLAIN-for-Mem.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAwMjFjYzZmNTYyOWE2MDdjYWIzYTBlYzEwMjFmYzVmMTAyZGMwNDM5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBFdmRva2ltb3YgSWxpYSA8aWx5YS5ldmRva2ltb3ZA dGFudG9ybGFicy5jb20+CkRhdGU6IFR1ZSwgMTUgQXByIDIwMjUgMjM6NDc6NTcgKzAzMDAK U3ViamVjdDogW1BBVENIIHY4IDEvM10gU2hvdyBuZGlzdGluY3QgYW5kIGVzdF9lbnRyaWVz IGluIEVYUExBSU4gZm9yIE1lbW9pemUKClJldmlld2VkLWJ5OiBEYXZpZCBSb3dsZXkgPGRn cm93bGV5bWxAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogUm9iZXJ0IEhhYXMgPHJvYmVydG1o YWFzQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IEFuZHJlaSBMZXBpa2hvdiA8bGVwaWhvdkBn bWFpbC5jb20+ClJldmlld2VkLWJ5OiBUb20gTGFuZSA8dGdsQHNzcy5wZ2gucGEudXM+Ci0t LQogc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jICAgICAgICAgIHwgMTYgKysrKysr KysrKysrKysrKwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvY29zdHNpemUuYyAgIHwg IDMgKysrCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMgfCAxMCAr KysrKysrLS0tCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wYXRobm9kZS5jICAgfCAg NiArKysrKysKIHNyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oICAgICAgICAgICB8ICAy ICsrCiBzcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaCAgICAgICAgICAgfCAgNiArKysr KysKIDYgZmlsZXMgY2hhbmdlZCwgNDAgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy9leHBsYWluLmMKaW5kZXggNzg2ZWU4NjVmMTQuLjA2MzRkMGE5ODJl IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKKysrIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCkBAIC0zNjI4LDYgKzM2MjgsMjIgQEAgc2hv d19tZW1vaXplX2luZm8oTWVtb2l6ZVN0YXRlICptc3RhdGUsIExpc3QgKmFuY2VzdG9ycywg RXhwbGFpblN0YXRlICplcykKIAlFeHBsYWluUHJvcGVydHlUZXh0KCJDYWNoZSBLZXkiLCBr ZXlzdHIuZGF0YSwgZXMpOwogCUV4cGxhaW5Qcm9wZXJ0eVRleHQoIkNhY2hlIE1vZGUiLCBt c3RhdGUtPmJpbmFyeV9tb2RlID8gImJpbmFyeSIgOiAibG9naWNhbCIsIGVzKTsKIAorCWlm IChlcy0+Y29zdHMpCisJeworCQlpZiAoZXMtPmZvcm1hdCA9PSBFWFBMQUlOX0ZPUk1BVF9U RVhUKQorCQl7CisJCQlFeHBsYWluSW5kZW50VGV4dChlcyk7CisJCQlhcHBlbmRTdHJpbmdJ bmZvKGVzLT5zdHIsICJFc3RpbWF0ZXM6IGNhcGFjaXR5PSV1IGRpc3RpbmN0IGtleXM9JS4w ZlxuIiwKKwkJCQkJCQkoKE1lbW9pemUgKikgcGxhbiktPmVzdF9lbnRyaWVzLAorCQkJCQkJ CSgoTWVtb2l6ZSAqKSBwbGFuKS0+ZXN0X3VuaXF1ZV9rZXlzKTsKKwkJfQorCQllbHNlCisJ CXsKKwkJCUV4cGxhaW5Qcm9wZXJ0eVVJbnRlZ2VyKCJFc3RpbWF0ZWQgQ2FwYWNpdHkiLCAi IiwgKChNZW1vaXplICopIHBsYW4pLT5lc3RfZW50cmllcywgZXMpOworCQkJRXhwbGFpblBy b3BlcnR5RmxvYXQoIkVzdGltYXRlZCBEaXN0aW5jdCBMb29rdXAgS2V5cyIsICIiLCAoKE1l bW9pemUgKikgcGxhbiktPmVzdF91bmlxdWVfa2V5cywgMCwgZXMpOworCQl9CisJfQorCiAJ cGZyZWUoa2V5c3RyLmRhdGEpOwogCiAJaWYgKCFlcy0+YW5hbHl6ZSkKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2Nvc3RzaXplLmMgYi9zcmMvYmFja2VuZC9v cHRpbWl6ZXIvcGF0aC9jb3N0c2l6ZS5jCmluZGV4IDYwYjBmY2ZiNmJlLi5mNzIzMTlkOTAz YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvY29zdHNpemUuYwor KysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9jb3N0c2l6ZS5jCkBAIC0yNjA0LDYg KzI2MDQsOSBAQCBjb3N0X21lbW9pemVfcmVzY2FuKFBsYW5uZXJJbmZvICpyb290LCBNZW1v aXplUGF0aCAqbXBhdGgsCiAJbXBhdGgtPmVzdF9lbnRyaWVzID0gTWluKE1pbihuZGlzdGlu Y3QsIGVzdF9jYWNoZV9lbnRyaWVzKSwKIAkJCQkJCQkgUEdfVUlOVDMyX01BWCk7CiAKKwkv KiBSZW1lbWJlciBuZGlzdGluY3QgZm9yIGEgcG90ZW50aWFsIEVYUExBSU4gbGF0ZXIgKi8K KwltcGF0aC0+ZXN0X3VuaXF1ZV9rZXlzID0gbmRpc3RpbmN0OworCiAJLyoKIAkgKiBXaGVu IHRoZSBudW1iZXIgb2YgZGlzdGluY3QgcGFyYW1ldGVyIHZhbHVlcyBpcyBhYm92ZSB0aGUg YW1vdW50IHdlIGNhbgogCSAqIHN0b3JlIGluIHRoZSBjYWNoZSwgdGhlbiB3ZSdsbCBoYXZl IHRvIGV2aWN0IHNvbWUgZW50cmllcyBmcm9tIHRoZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVy L3BsYW4vY3JlYXRlcGxhbi5jCmluZGV4IGE4ZjIyYThjMTU0Li5hMTQ1NmM5MDE0ZCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jCisrKyBi L3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYwpAQCAtMjg0LDcgKzI4 NCw4IEBAIHN0YXRpYyBNYXRlcmlhbCAqbWFrZV9tYXRlcmlhbChQbGFuICpsZWZ0dHJlZSk7 CiBzdGF0aWMgTWVtb2l6ZSAqbWFrZV9tZW1vaXplKFBsYW4gKmxlZnR0cmVlLCBPaWQgKmhh c2hvcGVyYXRvcnMsCiAJCQkJCQkJIE9pZCAqY29sbGF0aW9ucywgTGlzdCAqcGFyYW1fZXhw cnMsCiAJCQkJCQkJIGJvb2wgc2luZ2xlcm93LCBib29sIGJpbmFyeV9tb2RlLAotCQkJCQkJ CSB1aW50MzIgZXN0X2VudHJpZXMsIEJpdG1hcHNldCAqa2V5cGFyYW1pZHMpOworCQkJCQkJ CXVpbnQzMiBlc3RfZW50cmllcywgQml0bWFwc2V0ICprZXlwYXJhbWlkcywKKwkJCQkJCQlk b3VibGUgZXN0X3VuaXF1ZV9rZXlzKTsKIHN0YXRpYyBXaW5kb3dBZ2cgKm1ha2Vfd2luZG93 YWdnKExpc3QgKnRsaXN0LCBXaW5kb3dDbGF1c2UgKndjLAogCQkJCQkJCQkgaW50IHBhcnRO dW1Db2xzLCBBdHRyTnVtYmVyICpwYXJ0Q29sSWR4LCBPaWQgKnBhcnRPcGVyYXRvcnMsIE9p ZCAqcGFydENvbGxhdGlvbnMsCiAJCQkJCQkJCSBpbnQgb3JkTnVtQ29scywgQXR0ck51bWJl ciAqb3JkQ29sSWR4LCBPaWQgKm9yZE9wZXJhdG9ycywgT2lkICpvcmRDb2xsYXRpb25zLApA QCAtMTcwMyw3ICsxNzA0LDggQEAgY3JlYXRlX21lbW9pemVfcGxhbihQbGFubmVySW5mbyAq cm9vdCwgTWVtb2l6ZVBhdGggKmJlc3RfcGF0aCwgaW50IGZsYWdzKQogCiAJcGxhbiA9IG1h a2VfbWVtb2l6ZShzdWJwbGFuLCBvcGVyYXRvcnMsIGNvbGxhdGlvbnMsIHBhcmFtX2V4cHJz LAogCQkJCQkJYmVzdF9wYXRoLT5zaW5nbGVyb3csIGJlc3RfcGF0aC0+YmluYXJ5X21vZGUs Ci0JCQkJCQliZXN0X3BhdGgtPmVzdF9lbnRyaWVzLCBrZXlwYXJhbWlkcyk7CisJCQkJCQli ZXN0X3BhdGgtPmVzdF9lbnRyaWVzLCBrZXlwYXJhbWlkcywKKwkJCQkJCWJlc3RfcGF0aC0+ ZXN0X3VuaXF1ZV9rZXlzKTsKIAogCWNvcHlfZ2VuZXJpY19wYXRoX2luZm8oJnBsYW4tPnBs YW4sIChQYXRoICopIGJlc3RfcGF0aCk7CiAKQEAgLTY2MzYsNyArNjYzOCw4IEBAIG1hdGVy aWFsaXplX2ZpbmlzaGVkX3BsYW4oUGxhbiAqc3VicGxhbikKIHN0YXRpYyBNZW1vaXplICoK IG1ha2VfbWVtb2l6ZShQbGFuICpsZWZ0dHJlZSwgT2lkICpoYXNob3BlcmF0b3JzLCBPaWQg KmNvbGxhdGlvbnMsCiAJCQkgTGlzdCAqcGFyYW1fZXhwcnMsIGJvb2wgc2luZ2xlcm93LCBi b29sIGJpbmFyeV9tb2RlLAotCQkJIHVpbnQzMiBlc3RfZW50cmllcywgQml0bWFwc2V0ICpr ZXlwYXJhbWlkcykKKwkJCXVpbnQzMiBlc3RfZW50cmllcywgQml0bWFwc2V0ICprZXlwYXJh bWlkcywKKwkJCWRvdWJsZSBlc3RfdW5pcXVlX2tleXMpCiB7CiAJTWVtb2l6ZSAgICAqbm9k ZSA9IG1ha2VOb2RlKE1lbW9pemUpOwogCVBsYW4JICAgKnBsYW4gPSAmbm9kZS0+cGxhbjsK QEAgLTY2NTQsNiArNjY1Nyw3IEBAIG1ha2VfbWVtb2l6ZShQbGFuICpsZWZ0dHJlZSwgT2lk ICpoYXNob3BlcmF0b3JzLCBPaWQgKmNvbGxhdGlvbnMsCiAJbm9kZS0+YmluYXJ5X21vZGUg PSBiaW5hcnlfbW9kZTsKIAlub2RlLT5lc3RfZW50cmllcyA9IGVzdF9lbnRyaWVzOwogCW5v ZGUtPmtleXBhcmFtaWRzID0ga2V5cGFyYW1pZHM7CisJbm9kZS0+ZXN0X3VuaXF1ZV9rZXlz ID0gZXN0X3VuaXF1ZV9rZXlzOwogCiAJcmV0dXJuIG5vZGU7CiB9CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wYXRobm9kZS5jIGIvc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3V0aWwvcGF0aG5vZGUuYwppbmRleCA5M2U3M2NiNDRkYi4uNzZiZGVhNTIxMjcg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3BhdGhub2RlLmMKKysr IGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGF0aG5vZGUuYwpAQCAtMTcwMSw2ICsx NzAxLDEyIEBAIGNyZWF0ZV9tZW1vaXplX3BhdGgoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9w dEluZm8gKnJlbCwgUGF0aCAqc3VicGF0aCwKIAlBc3NlcnQoZW5hYmxlX21lbW9pemUpOwog CXBhdGhub2RlLT5wYXRoLmRpc2FibGVkX25vZGVzID0gc3VicGF0aC0+ZGlzYWJsZWRfbm9k ZXM7CiAKKwkvKgorCSAqIEVzdGltYXRlZCBudW1iZXIgb2YgZGlzdGluY3QgbWVtb2l6YXRp b24ga2V5cywKKwkgKiBjb21wdXRlZCB1c2luZyBlc3RpbWF0ZV9udW1fZ3JvdXBzKCkKKwkg Ki8KKwlwYXRobm9kZS0+ZXN0X3VuaXF1ZV9rZXlzID0gMDsKKwogCS8qCiAJICogQWRkIGEg c21hbGwgYWRkaXRpb25hbCBjaGFyZ2UgZm9yIGNhY2hpbmcgdGhlIGZpcnN0IGVudHJ5LiAg QWxsIHRoZQogCSAqIGhhcmRlciBjYWxjdWxhdGlvbnMgZm9yIHJlc2NhbnMgYXJlIHBlcmZv cm1lZCBpbiBjb3N0X21lbW9pemVfcmVzY2FuKCkuCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9ub2Rlcy9wYXRobm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oCmlu ZGV4IGJiNjc4YmRjZGNkLi4wN2Q5N2RjMGI1YiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv bm9kZXMvcGF0aG5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmgK QEAgLTIxMzgsNiArMjEzOCw4IEBAIHR5cGVkZWYgc3RydWN0IE1lbW9pemVQYXRoCiAJdWlu dDMyCQllc3RfZW50cmllczsJLyogVGhlIG1heGltdW0gbnVtYmVyIG9mIGVudHJpZXMgdGhh dCB0aGUKIAkJCQkJCQkJICogcGxhbm5lciBleHBlY3RzIHdpbGwgZml0IGluIHRoZSBjYWNo ZSwgb3IgMAogCQkJCQkJCQkgKiBpZiB1bmtub3duICovCisJZG91YmxlCQllc3RfdW5pcXVl X2tleXM7CS8qIEVzdGltYXRlZCBudW1iZXIgb2YgZGlzdGluY3QgbWVtb2l6YXRpb24ga2V5 cywKKwkJCQkJCQkJICogdXNlZCBmb3IgY2FjaGUgc2l6ZSBldmFsdWF0aW9uLiBLZXB0IGZv ciBFWFBMQUlOICovCiB9IE1lbW9pemVQYXRoOwogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMu aAppbmRleCA2NThkNzYyMjVlNC4uM2Q5ZDNhMTE1OWQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL25vZGVzL3BsYW5ub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rl cy5oCkBAIC0xMDYzLDYgKzEwNjMsMTIgQEAgdHlwZWRlZiBzdHJ1Y3QgTWVtb2l6ZQogCiAJ LyogcGFyYW1pZHMgZnJvbSBwYXJhbV9leHBycyAqLwogCUJpdG1hcHNldCAgKmtleXBhcmFt aWRzOworCisJLyoKKwkgKiBFc3RpbWF0ZWQgbnVtYmVyIG9mIGRpc3RpbmN0IG1lbW9pemF0 aW9uIGtleXMsCisJICogdXNlZCBmb3IgY2FjaGUgc2l6ZSBldmFsdWF0aW9uLiBLZXB0IGZv ciBFWFBMQUlOCisJICovCisJZG91YmxlCQllc3RfdW5pcXVlX2tleXM7CiB9IE1lbW9pemU7 CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0KLS0gCjIuMzQuMQoK --------------NIVzoN7eGPqICUNWCD77CR0q Content-Type: text/x-patch; charset=UTF-8; name="v8-0002-Add-Estimated-Hit-Ratio-for-Memoize-plan-nodes-in.patch" Content-Disposition: attachment; filename*0="v8-0002-Add-Estimated-Hit-Ratio-for-Memoize-plan-nodes-in.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAxODA1MmQyZDNhYzU0ZTEyMDQyNjczZTM1Y2EzNTdhZTExZjk5MDkzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBFdmRva2ltb3YgSWxpYSA8aWx5YS5ldmRva2ltb3ZA dGFudG9ybGFicy5jb20+CkRhdGU6IFdlZCwgMTYgQXByIDIwMjUgMDA6MjA6NDkgKzAzMDAK U3ViamVjdDogW1BBVENIIHY4IDIvM10gQWRkIEVzdGltYXRlZCBIaXQgUmF0aW8gZm9yIE1l bW9pemUgcGxhbiBub2RlcyBpbgogRVhQTEFJTgoKUmV2aWV3ZWQtYnk6IERhdmlkIFJvd2xl eSA8ZGdyb3dsZXltbEBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBSb2JlcnQgSGFhcyA8cm9i ZXJ0bWhhYXNAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogQW5kcmVpIExlcGlraG92IDxsZXBp aG92QGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IFRvbSBMYW5lIDx0Z2xAc3NzLnBnaC5wYS51 cz4KLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMgICAgICAgICAgfCA2ICsr KystLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvY29zdHNpemUuYyAgIHwgMyArKysK IHNyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYyB8IDcgKysrKy0tLQog c3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGF0aG5vZGUuYyAgIHwgNiArKysrKysKIHNy Yy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oICAgICAgICAgICB8IDEgKwogc3JjL2luY2x1 ZGUvbm9kZXMvcGxhbm5vZGVzLmggICAgICAgICAgIHwgMyArKysKIDYgZmlsZXMgY2hhbmdl ZCwgMjEgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBs YWluLmMKaW5kZXggMDYzNGQwYTk4MmUuLjg1YjIyNTYxYWE2IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv ZXhwbGFpbi5jCkBAIC0zNjMzLDE0ICszNjMzLDE2IEBAIHNob3dfbWVtb2l6ZV9pbmZvKE1l bW9pemVTdGF0ZSAqbXN0YXRlLCBMaXN0ICphbmNlc3RvcnMsIEV4cGxhaW5TdGF0ZSAqZXMp CiAJCWlmIChlcy0+Zm9ybWF0ID09IEVYUExBSU5fRk9STUFUX1RFWFQpCiAJCXsKIAkJCUV4 cGxhaW5JbmRlbnRUZXh0KGVzKTsKLQkJCWFwcGVuZFN0cmluZ0luZm8oZXMtPnN0ciwgIkVz dGltYXRlczogY2FwYWNpdHk9JXUgZGlzdGluY3Qga2V5cz0lLjBmXG4iLAorCQkJYXBwZW5k U3RyaW5nSW5mbyhlcy0+c3RyLCAiRXN0aW1hdGVzOiBjYXBhY2l0eT0ldSBkaXN0aW5jdCBr ZXlzPSUuMGYgaGl0IHJhdGlvPSUuMmYlJVxuIiwKIAkJCQkJCQkoKE1lbW9pemUgKikgcGxh biktPmVzdF9lbnRyaWVzLAotCQkJCQkJCSgoTWVtb2l6ZSAqKSBwbGFuKS0+ZXN0X3VuaXF1 ZV9rZXlzKTsKKwkJCQkJCQkoKE1lbW9pemUgKikgcGxhbiktPmVzdF91bmlxdWVfa2V5cywK KwkJCQkJCQkoKE1lbW9pemUgKikgcGxhbiktPmhpdF9yYXRpbyAqIDEwMC4wKTsKIAkJfQog CQllbHNlCiAJCXsKIAkJCUV4cGxhaW5Qcm9wZXJ0eVVJbnRlZ2VyKCJFc3RpbWF0ZWQgQ2Fw YWNpdHkiLCAiIiwgKChNZW1vaXplICopIHBsYW4pLT5lc3RfZW50cmllcywgZXMpOwogCQkJ RXhwbGFpblByb3BlcnR5RmxvYXQoIkVzdGltYXRlZCBEaXN0aW5jdCBMb29rdXAgS2V5cyIs ICIiLCAoKE1lbW9pemUgKikgcGxhbiktPmVzdF91bmlxdWVfa2V5cywgMCwgZXMpOworCQkJ RXhwbGFpblByb3BlcnR5RmxvYXQoIkVzdGltYXRlZCBIaXQgUmF0aW8iLCAiIiwgKChNZW1v aXplICopIHBsYW4pLT5oaXRfcmF0aW8gKiAxMDAuMCwgMiwgZXMpOwogCQl9CiAJfQogCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9jb3N0c2l6ZS5jIGIvc3Jj L2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvY29zdHNpemUuYwppbmRleCBmNzIzMTlkOTAzYy4u M2U5OTIxNDUwMWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2Nv c3RzaXplLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvY29zdHNpemUuYwpA QCAtMjYyNCw2ICsyNjI0LDkgQEAgY29zdF9tZW1vaXplX3Jlc2NhbihQbGFubmVySW5mbyAq cm9vdCwgTWVtb2l6ZVBhdGggKm1wYXRoLAogCWhpdF9yYXRpbyA9ICgoY2FsbHMgLSBuZGlz dGluY3QpIC8gY2FsbHMpICoKIAkJKGVzdF9jYWNoZV9lbnRyaWVzIC8gTWF4KG5kaXN0aW5j dCwgZXN0X2NhY2hlX2VudHJpZXMpKTsKIAorCS8qIFJlbWVtYmVyIGNhY2hlIGhpdCByYXRp byBmb3IgYSBwb3RlbnRpYWwgRVhQTEFJTiBsYXRlciAqLworCW1wYXRoLT5oaXRfcmF0aW8g PSBoaXRfcmF0aW87CisKIAlBc3NlcnQoaGl0X3JhdGlvID49IDAgJiYgaGl0X3JhdGlvIDw9 IDEuMCk7CiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4v Y3JlYXRlcGxhbi5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5j CmluZGV4IGExNDU2YzkwMTRkLi5jY2I4ODAxNThmZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGlt aXplci9wbGFuL2NyZWF0ZXBsYW4uYwpAQCAtMjg1LDcgKzI4NSw3IEBAIHN0YXRpYyBNZW1v aXplICptYWtlX21lbW9pemUoUGxhbiAqbGVmdHRyZWUsIE9pZCAqaGFzaG9wZXJhdG9ycywK IAkJCQkJCQkgT2lkICpjb2xsYXRpb25zLCBMaXN0ICpwYXJhbV9leHBycywKIAkJCQkJCQkg Ym9vbCBzaW5nbGVyb3csIGJvb2wgYmluYXJ5X21vZGUsCiAJCQkJCQkJdWludDMyIGVzdF9l bnRyaWVzLCBCaXRtYXBzZXQgKmtleXBhcmFtaWRzLAotCQkJCQkJCWRvdWJsZSBlc3RfdW5p cXVlX2tleXMpOworCQkJCQkJCWRvdWJsZSBlc3RfdW5pcXVlX2tleXMsIGRvdWJsZSBoaXRf cmF0aW8pOwogc3RhdGljIFdpbmRvd0FnZyAqbWFrZV93aW5kb3dhZ2coTGlzdCAqdGxpc3Qs IFdpbmRvd0NsYXVzZSAqd2MsCiAJCQkJCQkJCSBpbnQgcGFydE51bUNvbHMsIEF0dHJOdW1i ZXIgKnBhcnRDb2xJZHgsIE9pZCAqcGFydE9wZXJhdG9ycywgT2lkICpwYXJ0Q29sbGF0aW9u cywKIAkJCQkJCQkJIGludCBvcmROdW1Db2xzLCBBdHRyTnVtYmVyICpvcmRDb2xJZHgsIE9p ZCAqb3JkT3BlcmF0b3JzLCBPaWQgKm9yZENvbGxhdGlvbnMsCkBAIC0xNzA1LDcgKzE3MDUs NyBAQCBjcmVhdGVfbWVtb2l6ZV9wbGFuKFBsYW5uZXJJbmZvICpyb290LCBNZW1vaXplUGF0 aCAqYmVzdF9wYXRoLCBpbnQgZmxhZ3MpCiAJcGxhbiA9IG1ha2VfbWVtb2l6ZShzdWJwbGFu LCBvcGVyYXRvcnMsIGNvbGxhdGlvbnMsIHBhcmFtX2V4cHJzLAogCQkJCQkJYmVzdF9wYXRo LT5zaW5nbGVyb3csIGJlc3RfcGF0aC0+YmluYXJ5X21vZGUsCiAJCQkJCQliZXN0X3BhdGgt PmVzdF9lbnRyaWVzLCBrZXlwYXJhbWlkcywKLQkJCQkJCWJlc3RfcGF0aC0+ZXN0X3VuaXF1 ZV9rZXlzKTsKKwkJCQkJCWJlc3RfcGF0aC0+ZXN0X3VuaXF1ZV9rZXlzLCBiZXN0X3BhdGgt PmhpdF9yYXRpbyk7CiAKIAljb3B5X2dlbmVyaWNfcGF0aF9pbmZvKCZwbGFuLT5wbGFuLCAo UGF0aCAqKSBiZXN0X3BhdGgpOwogCkBAIC02NjM5LDcgKzY2MzksNyBAQCBzdGF0aWMgTWVt b2l6ZSAqCiBtYWtlX21lbW9pemUoUGxhbiAqbGVmdHRyZWUsIE9pZCAqaGFzaG9wZXJhdG9y cywgT2lkICpjb2xsYXRpb25zLAogCQkJIExpc3QgKnBhcmFtX2V4cHJzLCBib29sIHNpbmds ZXJvdywgYm9vbCBiaW5hcnlfbW9kZSwKIAkJCXVpbnQzMiBlc3RfZW50cmllcywgQml0bWFw c2V0ICprZXlwYXJhbWlkcywKLQkJCWRvdWJsZSBlc3RfdW5pcXVlX2tleXMpCisJCQlkb3Vi bGUgZXN0X3VuaXF1ZV9rZXlzLCBkb3VibGUgaGl0X3JhdGlvKQogewogCU1lbW9pemUgICAg Km5vZGUgPSBtYWtlTm9kZShNZW1vaXplKTsKIAlQbGFuCSAgICpwbGFuID0gJm5vZGUtPnBs YW47CkBAIC02NjU4LDYgKzY2NTgsNyBAQCBtYWtlX21lbW9pemUoUGxhbiAqbGVmdHRyZWUs IE9pZCAqaGFzaG9wZXJhdG9ycywgT2lkICpjb2xsYXRpb25zLAogCW5vZGUtPmVzdF9lbnRy aWVzID0gZXN0X2VudHJpZXM7CiAJbm9kZS0+a2V5cGFyYW1pZHMgPSBrZXlwYXJhbWlkczsK IAlub2RlLT5lc3RfdW5pcXVlX2tleXMgPSBlc3RfdW5pcXVlX2tleXM7CisJbm9kZS0+aGl0 X3JhdGlvID0gaGl0X3JhdGlvOwogCiAJcmV0dXJuIG5vZGU7CiB9CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wYXRobm9kZS5jIGIvc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3V0aWwvcGF0aG5vZGUuYwppbmRleCA3NmJkZWE1MjEyNy4uNDA2NzQwMjdmOWYg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3BhdGhub2RlLmMKKysr IGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGF0aG5vZGUuYwpAQCAtMTcwNyw2ICsx NzA3LDEyIEBAIGNyZWF0ZV9tZW1vaXplX3BhdGgoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9w dEluZm8gKnJlbCwgUGF0aCAqc3VicGF0aCwKIAkgKi8KIAlwYXRobm9kZS0+ZXN0X3VuaXF1 ZV9rZXlzID0gMDsKIAorCS8qCisJICogVGhlIGVzdGltYXRlZCBjYWNoZSBoaXQgcmF0aW8g d2lsbCBjYWxjdWxhdGVkIGxhdGVyCisJICogYnkgY29zdF9tZW1vaXplX3Jlc2NhbigpLgor CSAqLworCXBhdGhub2RlLT5oaXRfcmF0aW8gPSAwOworCiAJLyoKIAkgKiBBZGQgYSBzbWFs bCBhZGRpdGlvbmFsIGNoYXJnZSBmb3IgY2FjaGluZyB0aGUgZmlyc3QgZW50cnkuICBBbGwg dGhlCiAJICogaGFyZGVyIGNhbGN1bGF0aW9ucyBmb3IgcmVzY2FucyBhcmUgcGVyZm9ybWVk IGluIGNvc3RfbWVtb2l6ZV9yZXNjYW4oKS4KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25v ZGVzL3BhdGhub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmgKaW5kZXgg MDdkOTdkYzBiNWIuLmUxN2RhNmY4ZjAyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rl cy9wYXRobm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaApAQCAt MjE0MCw2ICsyMTQwLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgTWVtb2l6ZVBhdGgKIAkJCQkJCQkJ ICogaWYgdW5rbm93biAqLwogCWRvdWJsZQkJZXN0X3VuaXF1ZV9rZXlzOwkvKiBFc3RpbWF0 ZWQgbnVtYmVyIG9mIGRpc3RpbmN0IG1lbW9pemF0aW9uIGtleXMsCiAJCQkJCQkJCSAqIHVz ZWQgZm9yIGNhY2hlIHNpemUgZXZhbHVhdGlvbi4gS2VwdCBmb3IgRVhQTEFJTiAqLworCWRv dWJsZQkJaGl0X3JhdGlvOwkJLyogRXN0aW1hdGVkIGNhY2hlIGhpdCByYXRpby4gS2VwdCBm b3IgRVhQTEFJTiAqLwogfSBNZW1vaXplUGF0aDsKIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVz LmgKaW5kZXggM2Q5ZDNhMTE1OWQuLjQzNTRkNGY2NmQzIDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9ub2Rlcy9wbGFubm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9k ZXMuaApAQCAtMTA2OSw2ICsxMDY5LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgTWVtb2l6ZQogCSAq IHVzZWQgZm9yIGNhY2hlIHNpemUgZXZhbHVhdGlvbi4gS2VwdCBmb3IgRVhQTEFJTgogCSAq LwogCWRvdWJsZQkJZXN0X3VuaXF1ZV9rZXlzOworCisJLyogRXN0aW1hdGVkIGNhY2hlIGhp dCByYXRpby4gS2VwdCBmb3IgRVhQTEFJTiAqLworCWRvdWJsZQkJaGl0X3JhdGlvOwogfSBN ZW1vaXplOwogCiAvKiAtLS0tLS0tLS0tLS0tLS0tCi0tIAoyLjM0LjEKCg== --------------NIVzoN7eGPqICUNWCD77CR0q Content-Type: text/x-patch; charset=UTF-8; name="v8-0003-Show-estimated-lookups-in-EXPLAIN-ouput-for-Memoi.patch" Content-Disposition: attachment; filename*0="v8-0003-Show-estimated-lookups-in-EXPLAIN-ouput-for-Memoi.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBiYmNlMjk1NjI2ZTQ1ZDg5OWU5M2E1NzJkMzgwNzRjNDBlOGM5MzM1IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBFdmRva2ltb3YgSWxpYSA8aWx5YS5ldmRva2ltb3ZA dGFudG9ybGFicy5jb20+CkRhdGU6IFdlZCwgMTYgQXByIDIwMjUgMDA6NTM6NTAgKzAzMDAK U3ViamVjdDogW1BBVENIIHY4IDMvM10gU2hvdyBlc3RpbWF0ZWQgbG9va3VwcyBpbiBFWFBM QUlOIG91cHV0IGZvciBNZW1vaXplCgpSZXZpZXdlZC1ieTogRGF2aWQgUm93bGV5IDxkZ3Jv d2xleW1sQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IFJvYmVydCBIYWFzIDxyb2JlcnRtaGFh c0BnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBBbmRyZWkgTGVwaWtob3YgPGxlcGlob3ZAZ21h aWwuY29tPgpSZXZpZXdlZC1ieTogVG9tIExhbmUgPHRnbEBzc3MucGdoLnBhLnVzPgotLS0K IHNyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYyAgICAgICAgICB8ICA0ICsrKy0KIHNy Yy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYyB8IDEwICsrKysrKystLS0K IHNyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oICAgICAgICAgICB8ICAzICsrKwogMyBm aWxlcyBjaGFuZ2VkLCAxMyBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2V4cGxhaW4uYwppbmRleCA4NWIyMjU2MWFhNi4uNmZjZmE1M2ExNjYgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYworKysgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy9leHBsYWluLmMKQEAgLTM2MzMsMTUgKzM2MzMsMTcgQEAgc2hvd19tZW1v aXplX2luZm8oTWVtb2l6ZVN0YXRlICptc3RhdGUsIExpc3QgKmFuY2VzdG9ycywgRXhwbGFp blN0YXRlICplcykKIAkJaWYgKGVzLT5mb3JtYXQgPT0gRVhQTEFJTl9GT1JNQVRfVEVYVCkK IAkJewogCQkJRXhwbGFpbkluZGVudFRleHQoZXMpOwotCQkJYXBwZW5kU3RyaW5nSW5mbyhl cy0+c3RyLCAiRXN0aW1hdGVzOiBjYXBhY2l0eT0ldSBkaXN0aW5jdCBrZXlzPSUuMGYgaGl0 IHJhdGlvPSUuMmYlJVxuIiwKKwkJCWFwcGVuZFN0cmluZ0luZm8oZXMtPnN0ciwgIkVzdGlt YXRlczogY2FwYWNpdHk9JXUgZGlzdGluY3Qga2V5cz0lLjBmIGxvb2t1cHM9JS4wZiBoaXQg cmF0aW89JS4yZiUlXG4iLAogCQkJCQkJCSgoTWVtb2l6ZSAqKSBwbGFuKS0+ZXN0X2VudHJp ZXMsCiAJCQkJCQkJKChNZW1vaXplICopIHBsYW4pLT5lc3RfdW5pcXVlX2tleXMsCisJCQkJ CQkJKChNZW1vaXplICopIHBsYW4pLT5sb29rdXBzLAogCQkJCQkJCSgoTWVtb2l6ZSAqKSBw bGFuKS0+aGl0X3JhdGlvICogMTAwLjApOwogCQl9CiAJCWVsc2UKIAkJewogCQkJRXhwbGFp blByb3BlcnR5VUludGVnZXIoIkVzdGltYXRlZCBDYXBhY2l0eSIsICIiLCAoKE1lbW9pemUg KikgcGxhbiktPmVzdF9lbnRyaWVzLCBlcyk7CiAJCQlFeHBsYWluUHJvcGVydHlGbG9hdCgi RXN0aW1hdGVkIERpc3RpbmN0IExvb2t1cCBLZXlzIiwgIiIsICgoTWVtb2l6ZSAqKSBwbGFu KS0+ZXN0X3VuaXF1ZV9rZXlzLCAwLCBlcyk7CisJCQlFeHBsYWluUHJvcGVydHlGbG9hdCgi RXN0aW1hdGVkIExvb2t1cHMiLCAiIiwgKChNZW1vaXplICopIHBsYW4pLT5sb29rdXBzLCAw LCBlcyk7CiAJCQlFeHBsYWluUHJvcGVydHlGbG9hdCgiRXN0aW1hdGVkIEhpdCBSYXRpbyIs ICIiLCAoKE1lbW9pemUgKikgcGxhbiktPmhpdF9yYXRpbyAqIDEwMC4wLCAyLCBlcyk7CiAJ CX0KIAl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVw bGFuLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMKaW5kZXgg Y2NiODgwMTU4ZmUuLjQ3YTA5Mjc0N2Q1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRp bWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3Bs YW4vY3JlYXRlcGxhbi5jCkBAIC0yODUsNyArMjg1LDggQEAgc3RhdGljIE1lbW9pemUgKm1h a2VfbWVtb2l6ZShQbGFuICpsZWZ0dHJlZSwgT2lkICpoYXNob3BlcmF0b3JzLAogCQkJCQkJ CSBPaWQgKmNvbGxhdGlvbnMsIExpc3QgKnBhcmFtX2V4cHJzLAogCQkJCQkJCSBib29sIHNp bmdsZXJvdywgYm9vbCBiaW5hcnlfbW9kZSwKIAkJCQkJCQl1aW50MzIgZXN0X2VudHJpZXMs IEJpdG1hcHNldCAqa2V5cGFyYW1pZHMsCi0JCQkJCQkJZG91YmxlIGVzdF91bmlxdWVfa2V5 cywgZG91YmxlIGhpdF9yYXRpbyk7CisJCQkJCQkJZG91YmxlIGVzdF91bmlxdWVfa2V5cywg ZG91YmxlIGhpdF9yYXRpbywKKwkJCQkJCQlkb3VibGUgbG9va3Vwcyk7CiBzdGF0aWMgV2lu ZG93QWdnICptYWtlX3dpbmRvd2FnZyhMaXN0ICp0bGlzdCwgV2luZG93Q2xhdXNlICp3YywK IAkJCQkJCQkJIGludCBwYXJ0TnVtQ29scywgQXR0ck51bWJlciAqcGFydENvbElkeCwgT2lk ICpwYXJ0T3BlcmF0b3JzLCBPaWQgKnBhcnRDb2xsYXRpb25zLAogCQkJCQkJCQkgaW50IG9y ZE51bUNvbHMsIEF0dHJOdW1iZXIgKm9yZENvbElkeCwgT2lkICpvcmRPcGVyYXRvcnMsIE9p ZCAqb3JkQ29sbGF0aW9ucywKQEAgLTE3MDUsNyArMTcwNiw4IEBAIGNyZWF0ZV9tZW1vaXpl X3BsYW4oUGxhbm5lckluZm8gKnJvb3QsIE1lbW9pemVQYXRoICpiZXN0X3BhdGgsIGludCBm bGFncykKIAlwbGFuID0gbWFrZV9tZW1vaXplKHN1YnBsYW4sIG9wZXJhdG9ycywgY29sbGF0 aW9ucywgcGFyYW1fZXhwcnMsCiAJCQkJCQliZXN0X3BhdGgtPnNpbmdsZXJvdywgYmVzdF9w YXRoLT5iaW5hcnlfbW9kZSwKIAkJCQkJCWJlc3RfcGF0aC0+ZXN0X2VudHJpZXMsIGtleXBh cmFtaWRzLAotCQkJCQkJYmVzdF9wYXRoLT5lc3RfdW5pcXVlX2tleXMsIGJlc3RfcGF0aC0+ aGl0X3JhdGlvKTsKKwkJCQkJCWJlc3RfcGF0aC0+ZXN0X3VuaXF1ZV9rZXlzLCBiZXN0X3Bh dGgtPmhpdF9yYXRpbywKKwkJCQkJCWJlc3RfcGF0aC0+Y2FsbHMpOwogCiAJY29weV9nZW5l cmljX3BhdGhfaW5mbygmcGxhbi0+cGxhbiwgKFBhdGggKikgYmVzdF9wYXRoKTsKIApAQCAt NjYzOSw3ICs2NjQxLDggQEAgc3RhdGljIE1lbW9pemUgKgogbWFrZV9tZW1vaXplKFBsYW4g KmxlZnR0cmVlLCBPaWQgKmhhc2hvcGVyYXRvcnMsIE9pZCAqY29sbGF0aW9ucywKIAkJCSBM aXN0ICpwYXJhbV9leHBycywgYm9vbCBzaW5nbGVyb3csIGJvb2wgYmluYXJ5X21vZGUsCiAJ CQl1aW50MzIgZXN0X2VudHJpZXMsIEJpdG1hcHNldCAqa2V5cGFyYW1pZHMsCi0JCQlkb3Vi bGUgZXN0X3VuaXF1ZV9rZXlzLCBkb3VibGUgaGl0X3JhdGlvKQorCQkJZG91YmxlIGVzdF91 bmlxdWVfa2V5cywgZG91YmxlIGhpdF9yYXRpbywKKwkJCWRvdWJsZSBsb29rdXBzKQogewog CU1lbW9pemUgICAgKm5vZGUgPSBtYWtlTm9kZShNZW1vaXplKTsKIAlQbGFuCSAgICpwbGFu ID0gJm5vZGUtPnBsYW47CkBAIC02NjU5LDYgKzY2NjIsNyBAQCBtYWtlX21lbW9pemUoUGxh biAqbGVmdHRyZWUsIE9pZCAqaGFzaG9wZXJhdG9ycywgT2lkICpjb2xsYXRpb25zLAogCW5v ZGUtPmtleXBhcmFtaWRzID0ga2V5cGFyYW1pZHM7CiAJbm9kZS0+ZXN0X3VuaXF1ZV9rZXlz ID0gZXN0X3VuaXF1ZV9rZXlzOwogCW5vZGUtPmhpdF9yYXRpbyA9IGhpdF9yYXRpbzsKKwlu b2RlLT5sb29rdXBzID0gbG9va3VwczsKIAogCXJldHVybiBub2RlOwogfQpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9w bGFubm9kZXMuaAppbmRleCA0MzU0ZDRmNjZkMy4uNmViMDg4NjYzMDQgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVz L3BsYW5ub2Rlcy5oCkBAIC0xMDcyLDYgKzEwNzIsOSBAQCB0eXBlZGVmIHN0cnVjdCBNZW1v aXplCiAKIAkvKiBFc3RpbWF0ZWQgY2FjaGUgaGl0IHJhdGlvLiBLZXB0IGZvciBFWFBMQUlO ICovCiAJZG91YmxlCQloaXRfcmF0aW87CisKKwkvKiBFc3RpbWF0ZWQgbnVtYmVyIG9mIGxv b2t1cHMuIEtlcHQgZm9yIEVYUExBSU4gKi8KKwlkb3VibGUJCWxvb2t1cHM7CiB9IE1lbW9p emU7CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0KLS0gCjIuMzQuMQoK --------------NIVzoN7eGPqICUNWCD77CR0q--