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 1lgJKq-0006dr-4G for pgsql-hackers@arkaria.postgresql.org; Tue, 11 May 2021 03:45:28 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1lgJKp-0002tP-1A for pgsql-hackers@arkaria.postgresql.org; Tue, 11 May 2021 03:45:27 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lgJKo-0002tH-Mq for pgsql-hackers@lists.postgresql.org; Tue, 11 May 2021 03:45:26 +0000 Received: from mail.postgrespro.ru ([93.174.131.139]) by magus.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1lgJKl-0000Ox-Kh for pgsql-hackers@lists.postgresql.org; Tue, 11 May 2021 03:45:26 +0000 Received: from ip-192-168-0-192.is74.loc (pool-77-222-105-30.is74.ru [77.222.105.30]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) by mail.postgrespro.ru (Postfix) with ESMTPSA id 69CD021C60E9; Tue, 11 May 2021 06:45:22 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mail; t=1620704722; bh=+NAgmBAlQv929tOSKooJbElFcAdkaybekz513Vn5ejI=; h=Subject:To:Cc:References:From:Date:In-Reply-To; b=GiiQYNHkg5Nnuzmc/hqqKoSdBSWtytu+NgmQ/6ZHj52SyAe8XcviaJnsvMMRd5CcC lC74eVj/HohnR88IU1vmSfssM+8y6mn6g9qxGmewzjp3+dqJcpEgVDN/t6mFlh1HxK bIJ2L/i5Ff7ro35NIjkQI989NVw/S51kA3o+N7k8= Subject: Defer selection of asynchronous subplans until the executor initialization stage To: Etsuro Fujita Cc: Kyotaro Horiguchi , Justin Pryzby , PostgreSQL Hackers References: <20210331.101137.148208859959175708.horikyota.ntt@gmail.com> <52d944ea-7d41-1d16-01b7-8d1edf5ea972@postgrespro.ru> From: Andrey Lepikhov Organization: Postgres Professional Message-ID: <659c37a8-3e71-0ff2-394c-f04428c76f08@postgrespro.ru> Date: Tue, 11 May 2021 08:45:21 +0500 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:78.0) Gecko/20100101 Thunderbird/78.10.1 MIME-Version: 1.0 In-Reply-To: Content-Type: multipart/mixed; boundary="------------775CAB62880652FE9699EAC8" Content-Language: en-US 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. --------------775CAB62880652FE9699EAC8 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit On 7/5/21 21:05, Etsuro Fujita wrote: > I think it would be better to start a new thread for this, and add the > patch to the next CF so that it doesn’t get lost. Current implementation of async append choose asynchronous subplans at the phase of an append plan creation. This is safe approach, but we loose some optimizations, such of flattening trivial subqueries and can't execute some simple queries asynchronously. For example: EXPLAIN (ANALYZE, TIMING OFF, SUMMARY OFF, COSTS OFF) (SELECT * FROM f1 WHERE a < 10) UNION ALL (SELECT * FROM f2 WHERE a < 10); But, as I could understand, we can choose these subplans later, at the init append phase when all optimizations already passed. In attachment - implementation of the proposed approach. Initial script for the example see in the parent thread [1]. [1] https://www.postgresql.org/message-id/a38bb206-8340-9528-5ef6-37de2d5cb1a3%40postgrespro.ru -- regards, Andrey Lepikhov Postgres Professional --------------775CAB62880652FE9699EAC8 Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="0001-Defer-selection-of-asynchronous-subplans-to-the-exec.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename*0="0001-Defer-selection-of-asynchronous-subplans-to-the-exec.pa"; filename*1="tch" RnJvbSAzOTViMWQ2MjM4OWNmNDA1MjBhNGFmZDg3YzExMzAxYWEyYjE3ZGYyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiQW5kcmV5IFYuIExlcGlraG92IiA8YS5sZXBpa2hv dkBwb3N0Z3Jlc3Byby5ydT4KRGF0ZTogVHVlLCAxMSBNYXkgMjAyMSAwODo0MzowMyArMDUw MApTdWJqZWN0OiBbUEFUQ0hdIERlZmVyIHNlbGVjdGlvbiBvZiBhc3luY2hyb25vdXMgc3Vi cGxhbnMgdG8gdGhlIGV4ZWN1dG9yCiBpbml0aWFsIHBoYXNlLgoKLS0tCiBjb250cmliL3Bv c3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYyAgICAgfCAxMCArKysrKysrKystCiBzcmMvYmFj a2VuZC9leGVjdXRvci9leGVjQW1pLmMgICAgICAgICAgfCAgNyArKystLS0tCiBzcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMgICAgICAgfCAxOSArKysrKysrKysrKysrKysr KysrCiBzcmMvYmFja2VuZC9ub2Rlcy9jb3B5ZnVuY3MuYyAgICAgICAgICAgfCAgMSAtCiBz cmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jICAgICAgICAgICAgfCAgMSAtCiBzcmMvYmFj a2VuZC9ub2Rlcy9yZWFkZnVuY3MuYyAgICAgICAgICAgfCAgMSAtCiBzcmMvYmFja2VuZC9v cHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMgfCAxNyArLS0tLS0tLS0tLS0tLS0tLQogc3Jj L2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmggICAgICAgICAgIHwgIDEgLQogc3JjL2luY2x1 ZGUvb3B0aW1pemVyL3BsYW5tYWluLmggICAgICAgIHwgIDEgKwogOSBmaWxlcyBjaGFuZ2Vk LCAzMyBpbnNlcnRpb25zKCspLCAyNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9jb250 cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3 L3Bvc3RncmVzX2Zkdy5jCmluZGV4IDRmZjU4ZDljMjcuLjNlMTUxYTY3OTAgMTAwNjQ0Ci0t LSBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy5jCisrKyBiL2NvbnRyaWIv cG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy5jCkBAIC0xMjQ1LDYgKzEyNDUsNyBAQCBwb3N0 Z3Jlc0dldEZvcmVpZ25QbGFuKFBsYW5uZXJJbmZvICpyb290LAogCWJvb2wJCWhhc19maW5h bF9zb3J0ID0gZmFsc2U7CiAJYm9vbAkJaGFzX2xpbWl0ID0gZmFsc2U7CiAJTGlzdENlbGwg ICAqbGM7CisJRm9yZWlnblNjYW4gKmZzcGxhbjsKIAogCS8qCiAJICogR2V0IEZEVyBwcml2 YXRlIGRhdGEgY3JlYXRlZCBieSBwb3N0Z3Jlc0dldEZvcmVpZ25VcHBlclBhdGhzKCksIGlm IGFueS4KQEAgLTE0MjksNyArMTQzMCw3IEBAIHBvc3RncmVzR2V0Rm9yZWlnblBsYW4oUGxh bm5lckluZm8gKnJvb3QsCiAJICogZmllbGQgb2YgdGhlIGZpbmlzaGVkIHBsYW4gbm9kZTsg d2UgY2FuJ3Qga2VlcCB0aGVtIGluIHByaXZhdGUgc3RhdGUKIAkgKiBiZWNhdXNlIHRoZW4g dGhleSB3b3VsZG4ndCBiZSBzdWJqZWN0IHRvIGxhdGVyIHBsYW5uZXIgcHJvY2Vzc2luZy4K IAkgKi8KLQlyZXR1cm4gbWFrZV9mb3JlaWduc2Nhbih0bGlzdCwKKwlmc3BsYW4gPSBtYWtl X2ZvcmVpZ25zY2FuKHRsaXN0LAogCQkJCQkJCWxvY2FsX2V4cHJzLAogCQkJCQkJCXNjYW5f cmVsaWQsCiAJCQkJCQkJcGFyYW1zX2xpc3QsCkBAIC0xNDM3LDYgKzE0MzgsMTMgQEAgcG9z dGdyZXNHZXRGb3JlaWduUGxhbihQbGFubmVySW5mbyAqcm9vdCwKIAkJCQkJCQlmZHdfc2Nh bl90bGlzdCwKIAkJCQkJCQlmZHdfcmVjaGVja19xdWFscywKIAkJCQkJCQlvdXRlcl9wbGFu KTsKKworCS8qIElmIGFwcHJvcHJpYXRlLCBjb25zaWRlciBwYXJ0aWNpcGF0aW9uIGluIGFz eW5jIG9wZXJhdGlvbnMgKi8KKwlmc3BsYW4tPnNjYW4ucGxhbi5hc3luY19jYXBhYmxlID0g KGVuYWJsZV9hc3luY19hcHBlbmQgJiYKKwkJCQkJCQkJCSAgIGJlc3RfcGF0aC0+cGF0aC5w YXRoa2V5cyA9PSBOSUwgJiYKKwkJCQkJCQkJCSAgICFmc3BsYW4tPnNjYW4ucGxhbi5wYXJh bGxlbF9zYWZlICYmCisJCQkJCQkJCQkgICBpc19hc3luY19jYXBhYmxlX3BhdGgoKFBhdGgg KiliZXN0X3BhdGgpKTsKKwlyZXR1cm4gZnNwbGFuOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0FtaS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY0FtaS5jCmluZGV4IGIzNzI2YTU0ZjMuLjRlNzBmNGViNTQgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNBbWkuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9leGVjQW1pLmMKQEAgLTUyNCw2ICs1MjQsOSBAQCBFeGVjU3VwcG9ydHNCYWNrd2FyZFNj YW4oUGxhbiAqbm9kZSkKIAlpZiAobm9kZS0+cGFyYWxsZWxfYXdhcmUpCiAJCXJldHVybiBm YWxzZTsKIAorCWlmIChub2RlLT5hc3luY19jYXBhYmxlKQorCQlyZXR1cm4gZmFsc2U7CisK IAlzd2l0Y2ggKG5vZGVUYWcobm9kZSkpCiAJewogCQljYXNlIFRfUmVzdWx0OgpAQCAtNTM2 LDEwICs1MzksNiBAQCBFeGVjU3VwcG9ydHNCYWNrd2FyZFNjYW4oUGxhbiAqbm9kZSkKIAkJ CXsKIAkJCQlMaXN0Q2VsbCAgICpsOwogCi0JCQkJLyogV2l0aCBhc3luYywgdHVwbGVzIG1h eSBiZSBpbnRlcmxlYXZlZCwgc28gY2FuJ3QgYmFjayB1cC4gKi8KLQkJCQlpZiAoKChBcHBl bmQgKikgbm9kZSktPm5hc3luY3BsYW5zID4gMCkKLQkJCQkJcmV0dXJuIGZhbHNlOwotCiAJ CQkJZm9yZWFjaChsLCAoKEFwcGVuZCAqKSBub2RlKS0+YXBwZW5kcGxhbnMpCiAJCQkJewog CQkJCQlpZiAoIUV4ZWNTdXBwb3J0c0JhY2t3YXJkU2NhbigoUGxhbiAqKSBsZmlyc3QobCkp KQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5jIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5jCmluZGV4IDNjMWYxMmFkYWYuLjM2M2Nm OWY0YTUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYwor KysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMKQEAgLTExNyw2ICsxMTcs OCBAQCBFeGVjSW5pdEFwcGVuZChBcHBlbmQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQg ZWZsYWdzKQogCWludAkJCWZpcnN0dmFsaWQ7CiAJaW50CQkJaSwKIAkJCQlqOworCUxpc3RD ZWxsICAgKmw7CisJYm9vbAkJY29uc2lkZXJfYXN5bmMgPSBmYWxzZTsKIAogCS8qIGNoZWNr IGZvciB1bnN1cHBvcnRlZCBmbGFncyAqLwogCUFzc2VydCghKGVmbGFncyAmIEVYRUNfRkxB R19NQVJLKSk7CkBAIC0xOTcsNiArMTk5LDIzIEBAIEV4ZWNJbml0QXBwZW5kKEFwcGVuZCAq bm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJYXBwZW5kcGxhbnN0YXRlcyA9 IChQbGFuU3RhdGUgKiopIHBhbGxvYyhucGxhbnMgKgogCQkJCQkJCQkJCQkgc2l6ZW9mKFBs YW5TdGF0ZSAqKSk7CiAKKwkvKiBJZiBhcHByb3ByaWF0ZSwgY29uc2lkZXIgYXN5bmMgYXBw ZW5kICovCisJY29uc2lkZXJfYXN5bmMgPSAobGlzdF9sZW5ndGgobm9kZS0+YXBwZW5kcGxh bnMpID4gMSk7CisKKwlpZiAoIWNvbnNpZGVyX2FzeW5jKQorCXsKKwkJZm9yZWFjaChsLCBu b2RlLT5hcHBlbmRwbGFucykKKwkJeworCQkJUGxhbiAqc3VicGxhbiA9IChQbGFuICopIGxm aXJzdChsKTsKKworCQkJLyogQ2hlY2sgdG8gc2VlIGlmIHN1YnBsYW4gY2FuIGJlIGV4ZWN1 dGVkIGFzeW5jaHJvbm91c2x5ICovCisJCQlpZiAoc3VicGxhbi0+YXN5bmNfY2FwYWJsZSkK KwkJCXsKKwkJCQlzdWJwbGFuLT5hc3luY19jYXBhYmxlID0gZmFsc2U7CisJCQl9CisJCX0K Kwl9CisKIAkvKgogCSAqIGNhbGwgRXhlY0luaXROb2RlIG9uIGVhY2ggb2YgdGhlIHZhbGlk IHBsYW5zIHRvIGJlIGV4ZWN1dGVkIGFuZCBzYXZlCiAJICogdGhlIHJlc3VsdHMgaW50byB0 aGUgYXBwZW5kcGxhbnN0YXRlcyBhcnJheS4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25v ZGVzL2NvcHlmdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1bmNzLmMKaW5kZXgg OTA3NzBhODliMC4uYTQ0MTg1ZDdmYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMv Y29weWZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1bmNzLmMKQEAgLTI0 Myw3ICsyNDMsNiBAQCBfY29weUFwcGVuZChjb25zdCBBcHBlbmQgKmZyb20pCiAJICovCiAJ Q09QWV9CSVRNQVBTRVRfRklFTEQoYXBwcmVsaWRzKTsKIAlDT1BZX05PREVfRklFTEQoYXBw ZW5kcGxhbnMpOwotCUNPUFlfU0NBTEFSX0ZJRUxEKG5hc3luY3BsYW5zKTsKIAlDT1BZX1ND QUxBUl9GSUVMRChmaXJzdF9wYXJ0aWFsX3BsYW4pOwogCUNPUFlfTk9ERV9GSUVMRChwYXJ0 X3BydW5lX2luZm8pOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5j cy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3MuYwppbmRleCA4ZGE4YjE0ZjBlLi5j ZDVkYmNlNzZhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jCisr KyBiL3NyYy9iYWNrZW5kL25vZGVzL291dGZ1bmNzLmMKQEAgLTQzMyw3ICs0MzMsNiBAQCBf b3V0QXBwZW5kKFN0cmluZ0luZm8gc3RyLCBjb25zdCBBcHBlbmQgKm5vZGUpCiAKIAlXUklU RV9CSVRNQVBTRVRfRklFTEQoYXBwcmVsaWRzKTsKIAlXUklURV9OT0RFX0ZJRUxEKGFwcGVu ZHBsYW5zKTsKLQlXUklURV9JTlRfRklFTEQobmFzeW5jcGxhbnMpOwogCVdSSVRFX0lOVF9G SUVMRChmaXJzdF9wYXJ0aWFsX3BsYW4pOwogCVdSSVRFX05PREVfRklFTEQocGFydF9wcnVu ZV9pbmZvKTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL3JlYWRmdW5jcy5j IGIvc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMKaW5kZXggMzc3MmVhMDdkZi4uM2Y1 ODc5OTUxYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMKKysr IGIvc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMKQEAgLTE3MTcsNyArMTcxNyw2IEBA IF9yZWFkQXBwZW5kKHZvaWQpCiAKIAlSRUFEX0JJVE1BUFNFVF9GSUVMRChhcHByZWxpZHMp OwogCVJFQURfTk9ERV9GSUVMRChhcHBlbmRwbGFucyk7Ci0JUkVBRF9JTlRfRklFTEQobmFz eW5jcGxhbnMpOwogCVJFQURfSU5UX0ZJRUxEKGZpcnN0X3BhcnRpYWxfcGxhbik7CiAJUkVB RF9OT0RFX0ZJRUxEKHBhcnRfcHJ1bmVfaW5mbyk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYyBiL3NyYy9iYWNrZW5kL29wdGltaXpl ci9wbGFuL2NyZWF0ZXBsYW4uYwppbmRleCA3MDAzMjM4ZDc2Li5iMWYyYTQ5M2YwIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMKKysrIGIv c3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jCkBAIC04Miw3ICs4Miw2 IEBAIHN0YXRpYyBMaXN0ICpnZXRfZ2F0aW5nX3F1YWxzKFBsYW5uZXJJbmZvICpyb290LCBM aXN0ICpxdWFscyk7CiBzdGF0aWMgUGxhbiAqY3JlYXRlX2dhdGluZ19wbGFuKFBsYW5uZXJJ bmZvICpyb290LCBQYXRoICpwYXRoLCBQbGFuICpwbGFuLAogCQkJCQkJCQlMaXN0ICpnYXRp bmdfcXVhbHMpOwogc3RhdGljIFBsYW4gKmNyZWF0ZV9qb2luX3BsYW4oUGxhbm5lckluZm8g KnJvb3QsIEpvaW5QYXRoICpiZXN0X3BhdGgpOwotc3RhdGljIGJvb2wgaXNfYXN5bmNfY2Fw YWJsZV9wYXRoKFBhdGggKnBhdGgpOwogc3RhdGljIFBsYW4gKmNyZWF0ZV9hcHBlbmRfcGxh bihQbGFubmVySW5mbyAqcm9vdCwgQXBwZW5kUGF0aCAqYmVzdF9wYXRoLAogCQkJCQkJCQlp bnQgZmxhZ3MpOwogc3RhdGljIFBsYW4gKmNyZWF0ZV9tZXJnZV9hcHBlbmRfcGxhbihQbGFu bmVySW5mbyAqcm9vdCwgTWVyZ2VBcHBlbmRQYXRoICpiZXN0X3BhdGgsCkBAIC0xMDk3LDcg KzEwOTYsNyBAQCBjcmVhdGVfam9pbl9wbGFuKFBsYW5uZXJJbmZvICpyb290LCBKb2luUGF0 aCAqYmVzdF9wYXRoKQogICogaXNfYXN5bmNfY2FwYWJsZV9wYXRoCiAgKgkJQ2hlY2sgd2hl dGhlciBhIGdpdmVuIFBhdGggbm9kZSBpcyBhc3luYy1jYXBhYmxlLgogICovCi1zdGF0aWMg Ym9vbAorYm9vbAogaXNfYXN5bmNfY2FwYWJsZV9wYXRoKFBhdGggKnBhdGgpCiB7CiAJc3dp dGNoIChub2RlVGFnKHBhdGgpKQpAQCAtMTEzNSw3ICsxMTM0LDYgQEAgY3JlYXRlX2FwcGVu ZF9wbGFuKFBsYW5uZXJJbmZvICpyb290LCBBcHBlbmRQYXRoICpiZXN0X3BhdGgsIGludCBm bGFncykKIAlMaXN0CSAgICpwYXRoa2V5cyA9IGJlc3RfcGF0aC0+cGF0aC5wYXRoa2V5czsK IAlMaXN0CSAgICpzdWJwbGFucyA9IE5JTDsKIAlMaXN0Q2VsbCAgICpzdWJwYXRoczsKLQlp bnQJCQluYXN5bmNwbGFucyA9IDA7CiAJUmVsT3B0SW5mbyAqcmVsID0gYmVzdF9wYXRoLT5w YXRoLnBhcmVudDsKIAlQYXJ0aXRpb25QcnVuZUluZm8gKnBhcnRwcnVuZWluZm8gPSBOVUxM OwogCWludAkJCW5vZGVudW1zb3J0a2V5cyA9IDA7CkBAIC0xMTQzLDcgKzExNDEsNiBAQCBj cmVhdGVfYXBwZW5kX3BsYW4oUGxhbm5lckluZm8gKnJvb3QsIEFwcGVuZFBhdGggKmJlc3Rf cGF0aCwgaW50IGZsYWdzKQogCU9pZAkJICAgKm5vZGVTb3J0T3BlcmF0b3JzID0gTlVMTDsK IAlPaWQJCSAgICpub2RlQ29sbGF0aW9ucyA9IE5VTEw7CiAJYm9vbAkgICAqbm9kZU51bGxz Rmlyc3QgPSBOVUxMOwotCWJvb2wJCWNvbnNpZGVyX2FzeW5jID0gZmFsc2U7CiAKIAkvKgog CSAqIFRoZSBzdWJwYXRocyBsaXN0IGNvdWxkIGJlIGVtcHR5LCBpZiBldmVyeSBjaGlsZCB3 YXMgcHJvdmVuIGVtcHR5IGJ5CkBAIC0xMjA3LDExICsxMjA0LDYgQEAgY3JlYXRlX2FwcGVu ZF9wbGFuKFBsYW5uZXJJbmZvICpyb290LCBBcHBlbmRQYXRoICpiZXN0X3BhdGgsIGludCBm bGFncykKIAkJdGxpc3Rfd2FzX2NoYW5nZWQgPSAob3JpZ190bGlzdF9sZW5ndGggIT0gbGlz dF9sZW5ndGgocGxhbi0+cGxhbi50YXJnZXRsaXN0KSk7CiAJfQogCi0JLyogSWYgYXBwcm9w cmlhdGUsIGNvbnNpZGVyIGFzeW5jIGFwcGVuZCAqLwotCWNvbnNpZGVyX2FzeW5jID0gKGVu YWJsZV9hc3luY19hcHBlbmQgJiYgcGF0aGtleXMgPT0gTklMICYmCi0JCQkJCSAgIWJlc3Rf cGF0aC0+cGF0aC5wYXJhbGxlbF9zYWZlICYmCi0JCQkJCSAgbGlzdF9sZW5ndGgoYmVzdF9w YXRoLT5zdWJwYXRocykgPiAxKTsKLQogCS8qIEJ1aWxkIHRoZSBwbGFuIGZvciBlYWNoIGNo aWxkICovCiAJZm9yZWFjaChzdWJwYXRocywgYmVzdF9wYXRoLT5zdWJwYXRocykKIAl7CkBA IC0xMjgwLDEyICsxMjcyLDYgQEAgY3JlYXRlX2FwcGVuZF9wbGFuKFBsYW5uZXJJbmZvICpy b290LCBBcHBlbmRQYXRoICpiZXN0X3BhdGgsIGludCBmbGFncykKIAogCQlzdWJwbGFucyA9 IGxhcHBlbmQoc3VicGxhbnMsIHN1YnBsYW4pOwogCi0JCS8qIENoZWNrIHRvIHNlZSBpZiBz dWJwbGFuIGNhbiBiZSBleGVjdXRlZCBhc3luY2hyb25vdXNseSAqLwotCQlpZiAoY29uc2lk ZXJfYXN5bmMgJiYgaXNfYXN5bmNfY2FwYWJsZV9wYXRoKHN1YnBhdGgpKQotCQl7Ci0JCQlz dWJwbGFuLT5hc3luY19jYXBhYmxlID0gdHJ1ZTsKLQkJCSsrbmFzeW5jcGxhbnM7Ci0JCX0K IAl9CiAKIAkvKgpAQCAtMTMxOCw3ICsxMzA0LDYgQEAgY3JlYXRlX2FwcGVuZF9wbGFuKFBs YW5uZXJJbmZvICpyb290LCBBcHBlbmRQYXRoICpiZXN0X3BhdGgsIGludCBmbGFncykKIAl9 CiAKIAlwbGFuLT5hcHBlbmRwbGFucyA9IHN1YnBsYW5zOwotCXBsYW4tPm5hc3luY3BsYW5z ID0gbmFzeW5jcGxhbnM7CiAJcGxhbi0+Zmlyc3RfcGFydGlhbF9wbGFuID0gYmVzdF9wYXRo LT5maXJzdF9wYXJ0aWFsX3BhdGg7CiAJcGxhbi0+cGFydF9wcnVuZV9pbmZvID0gcGFydHBy dW5laW5mbzsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgg Yi9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaAppbmRleCA4NDE0MDFiZTIwLi4wMGY0 ZjVmOGVkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaAorKysg Yi9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaApAQCAtMjUxLDcgKzI1MSw2IEBAIHR5 cGVkZWYgc3RydWN0IEFwcGVuZAogCVBsYW4JCXBsYW47CiAJQml0bWFwc2V0ICAqYXBwcmVs aWRzOwkJLyogUlRJcyBvZiBhcHBlbmRyZWwocykgZm9ybWVkIGJ5IHRoaXMgbm9kZSAqLwog CUxpc3QJICAgKmFwcGVuZHBsYW5zOwotCWludAkJCW5hc3luY3BsYW5zOwkvKiAjIG9mIGFz eW5jaHJvbm91cyBwbGFucyAqLwogCiAJLyoKIAkgKiBBbGwgJ2FwcGVuZHBsYW5zJyBwcmVj ZWRpbmcgdGhpcyBpbmRleCBhcmUgbm9uLXBhcnRpYWwgcGxhbnMuIEFsbApkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3BsYW5tYWluLmggYi9zcmMvaW5jbHVkZS9vcHRp bWl6ZXIvcGxhbm1haW4uaAppbmRleCBiZjFhZGZjNTJhLi44YTk2YTE5ZTVmIDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGxhbm1haW4uaAorKysgYi9zcmMvaW5jbHVk ZS9vcHRpbWl6ZXIvcGxhbm1haW4uaApAQCAtMTE1LDUgKzExNSw2IEBAIGV4dGVybiBQbGFu ICpzZXRfcGxhbl9yZWZlcmVuY2VzKFBsYW5uZXJJbmZvICpyb290LCBQbGFuICpwbGFuKTsK IGV4dGVybiB2b2lkIHJlY29yZF9wbGFuX2Z1bmN0aW9uX2RlcGVuZGVuY3koUGxhbm5lcklu Zm8gKnJvb3QsIE9pZCBmdW5jaWQpOwogZXh0ZXJuIHZvaWQgcmVjb3JkX3BsYW5fdHlwZV9k ZXBlbmRlbmN5KFBsYW5uZXJJbmZvICpyb290LCBPaWQgdHlwaWQpOwogZXh0ZXJuIGJvb2wg ZXh0cmFjdF9xdWVyeV9kZXBlbmRlbmNpZXNfd2Fsa2VyKE5vZGUgKm5vZGUsIFBsYW5uZXJJ bmZvICpyb290KTsKK2V4dGVybiBib29sIGlzX2FzeW5jX2NhcGFibGVfcGF0aChQYXRoICpw YXRoKTsKIAogI2VuZGlmCQkJCQkJCS8qIFBMQU5NQUlOX0ggKi8KLS0gCjIuMzEuMQoK --------------775CAB62880652FE9699EAC8--