Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eLrRY-0003fo-L7 for pgsql-hackers@arkaria.postgresql.org; Mon, 04 Dec 2017 14:10:01 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eLrRX-0005xs-7K for pgsql-hackers@arkaria.postgresql.org; Mon, 04 Dec 2017 14:09:59 +0000 Received: from makus.postgresql.org ([2001:4800:1501:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1eLrRW-0005xh-O4 for pgsql-hackers@lists.postgresql.org; Mon, 04 Dec 2017 14:09:59 +0000 Received: from forward4p.cmail.yandex.net ([2a02:6b8:0:1465::14]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1eLrRO-0005LI-W2 for pgsql-hackers@postgresql.org; Mon, 04 Dec 2017 14:09:57 +0000 Received: from mxback4o.mail.yandex.net (mxback4o.mail.yandex.net [IPv6:2a02:6b8:0:1a2d::1e]) by forward4p.cmail.yandex.net (Yandex) with ESMTP id 4B76720C50; Mon, 4 Dec 2017 17:09:46 +0300 (MSK) Received: from web6o.yandex.ru (web6o.yandex.ru [2a02:6b8:0:1a2d::5:106]) by mxback4o.mail.yandex.net (nwsmtp/Yandex) with ESMTP id 6iw3zJvgXC-9i6WsVEC; Mon, 04 Dec 2017 17:09:45 +0300 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=zsrv.org; s=mail; t=1512396585; bh=GaGIarszz0ryUo7nvVxAFaE5+c6amKsIYOnxNaAKGxs=; h=From:To:Cc:In-Reply-To:References:Subject:Message-Id:Date; b=rJlpkQ0aHNizrqlPbWCb8u22JLbHSZfuvZXAr+9wdp97hlyDpe6ripoQV3DUpbE6L o1lILEI67UaIAmPSR3Sx8It3eyeDx7XurStZsZA+nSNyebobQ6wn7F/eafpCgzfoEA Yrc8l3erFItn9CiD5te3IJQCf8uFg8C0iuFaJq3Y= Authentication-Results: mxback4o.mail.yandex.net; dkim=pass header.i=@zsrv.org Received: by web6o.yandex.ru with HTTP; Mon, 04 Dec 2017 17:09:44 +0300 From: Sergei Kornilov To: Robert Haas Cc: Tom Lane , Stephen Frost , "pgsql-hackers@postgresql.org" In-Reply-To: References: <81911511895540@web58j.yandex.ru> <20171129152135.GN4628@tamriel.snowman.net> <9878.1511970441@sss.pgh.pa.us> <370481511970756@web3j.yandex.ru> <491651511974381@web27j.yandex.ru> Subject: Re: using index or check in ALTER TABLE SET NOT NULL MIME-Version: 1.0 Message-Id: <369811512396584@web6o.yandex.ru> X-Mailer: Yamail [ http://yandex.ru ] 5.0 Date: Mon, 04 Dec 2017 17:09:44 +0300 Content-Type: multipart/mixed; boundary="----==--bound.36983.web6o.yandex.ru" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk ------==--bound.36983.web6o.yandex.ru Content-Transfer-Encoding: 7bit Content-Type: text/plain Hello I update patch and also rebase to current head. I hope now it is better aligned with project style ------==--bound.36983.web6o.yandex.ru Content-Disposition: attachment; filename="alter_table_set_not_null_by_constraints_only_v3.patch" Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name="alter_table_set_not_null_by_constraints_only_v3.patch" ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGFydGl0aW9uLmMgYi9zcmMvYmFja2Vu ZC9jYXRhbG9nL3BhcnRpdGlvbi5jCmluZGV4IGRkNGE4ZDMuLjM2YmNiM2YgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2NhdGFsb2cvcGFydGl0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxv Zy9wYXJ0aXRpb24uYwpAQCAtMTIyNyw3ICsxMjI3LDcgQEAgY2hlY2tfZGVmYXVsdF9hbGxvd3Nf Ym91bmQoUmVsYXRpb24gcGFyZW50LCBSZWxhdGlvbiBkZWZhdWx0X3JlbCwKIAkgKiBub3QgY29u dGFpbiBhbnkgcm93IHRoYXQgd291bGQgYmVsb25nIHRvIHRoZSBuZXcgcGFydGl0aW9uLCB3ZSBj YW4KIAkgKiBhdm9pZCBzY2FubmluZyB0aGUgZGVmYXVsdCBwYXJ0aXRpb24uCiAJICovCi0JaWYg KFBhcnRDb25zdHJhaW50SW1wbGllZEJ5UmVsQ29uc3RyYWludChkZWZhdWx0X3JlbCwgZGVmX3Bh cnRfY29uc3RyYWludHMpKQorCWlmIChDb25zdHJhaW50SW1wbGllZEJ5UmVsQ29uc3RyYWludChk ZWZhdWx0X3JlbCwgZGVmX3BhcnRfY29uc3RyYWludHMpKQogCXsKIAkJZXJlcG9ydChJTkZPLAog CQkJCShlcnJtc2coInVwZGF0ZWQgcGFydGl0aW9uIGNvbnN0cmFpbnQgZm9yIGRlZmF1bHQgcGFy dGl0aW9uIFwiJXNcIiBpcyBpbXBsaWVkIGJ5IGV4aXN0aW5nIGNvbnN0cmFpbnRzIiwKQEAgLTEy NzEsOCArMTI3MSw4IEBAIGNoZWNrX2RlZmF1bHRfYWxsb3dzX2JvdW5kKFJlbGF0aW9uIHBhcmVu dCwgUmVsYXRpb24gZGVmYXVsdF9yZWwsCiAJCQkgKiB0aGF0IGl0IHdpbGwgbm90IGNvbnRhaW4g YW55IHJvdyB0aGF0IHdvdWxkIGJlbG9uZyB0byB0aGUgbmV3CiAJCQkgKiBwYXJ0aXRpb24sIHdl IGNhbiBhdm9pZCBzY2FubmluZyB0aGUgY2hpbGQgdGFibGUuCiAJCQkgKi8KLQkJCWlmIChQYXJ0 Q29uc3RyYWludEltcGxpZWRCeVJlbENvbnN0cmFpbnQocGFydF9yZWwsCi0JCQkJCQkJCQkJCQkJ IGRlZl9wYXJ0X2NvbnN0cmFpbnRzKSkKKwkJCWlmIChDb25zdHJhaW50SW1wbGllZEJ5UmVsQ29u c3RyYWludChwYXJ0X3JlbCwKKwkJCQkJCQkJCQkJCSBkZWZfcGFydF9jb25zdHJhaW50cykpCiAJ CQl7CiAJCQkJZXJlcG9ydChJTkZPLAogCQkJCQkJKGVycm1zZygidXBkYXRlZCBwYXJ0aXRpb24g Y29uc3RyYWludCBmb3IgZGVmYXVsdCBwYXJ0aXRpb24gXCIlc1wiIGlzIGltcGxpZWQgYnkgZXhp c3RpbmcgY29uc3RyYWludHMiLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFi bGVjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwppbmRleCBkOTc5Y2Uy Li4zNWVhYzM5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwor KysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwpAQCAtMTYyLDcgKzE2Miw3IEBA IHR5cGVkZWYgc3RydWN0IEFsdGVyZWRUYWJsZUluZm8KIAkvKiBJbmZvcm1hdGlvbiBzYXZlZCBi eSBQaGFzZXMgMS8yIGZvciBQaGFzZSAzOiAqLwogCUxpc3QJICAgKmNvbnN0cmFpbnRzOwkvKiBM aXN0IG9mIE5ld0NvbnN0cmFpbnQgKi8KIAlMaXN0CSAgICpuZXd2YWxzOwkJLyogTGlzdCBvZiBO ZXdDb2x1bW5WYWx1ZSAqLwotCWJvb2wJCW5ld19ub3RudWxsOwkvKiBUIGlmIHdlIGFkZGVkIG5l dyBOT1QgTlVMTCBjb25zdHJhaW50cyAqLworCWJvb2wJCXZlcmlmeV9uZXdfbm90bnVsbDsgLyog VCBpZiB3ZSBzaG91bGQgcmVjaGVjayBOT1QgTlVMTCAqLwogCWludAkJCXJld3JpdGU7CQkvKiBS ZWFzb24gZm9yIGZvcmNlZCByZXdyaXRlLCBpZiBhbnkgKi8KIAlPaWQJCQluZXdUYWJsZVNwYWNl OwkvKiBuZXcgdGFibGVzcGFjZTsgMCBtZWFucyBubyBjaGFuZ2UgKi8KIAlib29sCQljaGdQZXJz aXN0ZW5jZTsgLyogVCBpZiBTRVQgTE9HR0VEL1VOTE9HR0VEIGlzIHVzZWQgKi8KQEAgLTM3MCw2 ICszNzAsNyBAQCBzdGF0aWMgT2JqZWN0QWRkcmVzcyBBVEV4ZWNEcm9wTm90TnVsbChSZWxhdGlv biByZWwsIGNvbnN0IGNoYXIgKmNvbE5hbWUsIExPQ0tNTwogc3RhdGljIHZvaWQgQVRQcmVwU2V0 Tm90TnVsbChSZWxhdGlvbiByZWwsIGJvb2wgcmVjdXJzZSwgYm9vbCByZWN1cnNpbmcpOwogc3Rh dGljIE9iamVjdEFkZHJlc3MgQVRFeGVjU2V0Tm90TnVsbChBbHRlcmVkVGFibGVJbmZvICp0YWIs IFJlbGF0aW9uIHJlbCwKIAkJCQkgY29uc3QgY2hhciAqY29sTmFtZSwgTE9DS01PREUgbG9ja21v ZGUpOworc3RhdGljIGJvb2wgTm90TnVsbEltcGxpZWRCeVJlbENvbnN0cmFpbnRzKFJlbGF0aW9u IHJlbCwgRm9ybV9wZ19hdHRyaWJ1dGUgYXR0cik7CiBzdGF0aWMgT2JqZWN0QWRkcmVzcyBBVEV4 ZWNDb2x1bW5EZWZhdWx0KFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqY29sTmFtZSwKIAkJCQkJ Tm9kZSAqbmV3RGVmYXVsdCwgTE9DS01PREUgbG9ja21vZGUpOwogc3RhdGljIE9iamVjdEFkZHJl c3MgQVRFeGVjQWRkSWRlbnRpdHkoUmVsYXRpb24gcmVsLCBjb25zdCBjaGFyICpjb2xOYW1lLApA QCAtNDMwNCw3ICs0MzA1LDcgQEAgQVRSZXdyaXRlVGFibGVzKEFsdGVyVGFibGVTdG10ICpwYXJz ZXRyZWUsIExpc3QgKip3cXVldWUsIExPQ0tNT0RFIGxvY2ttb2RlKQogCQkJICogVGVzdCB0aGUg Y3VycmVudCBkYXRhIHdpdGhpbiB0aGUgdGFibGUgYWdhaW5zdCBuZXcgY29uc3RyYWludHMKIAkJ CSAqIGdlbmVyYXRlZCBieSBBTFRFUiBUQUJMRSBjb21tYW5kcywgYnV0IGRvbid0IHJlYnVpbGQg ZGF0YS4KIAkJCSAqLwotCQkJaWYgKHRhYi0+Y29uc3RyYWludHMgIT0gTklMIHx8IHRhYi0+bmV3 X25vdG51bGwgfHwKKwkJCWlmICh0YWItPmNvbnN0cmFpbnRzICE9IE5JTCB8fCB0YWItPnZlcmlm eV9uZXdfbm90bnVsbCB8fAogCQkJCXRhYi0+cGFydGl0aW9uX2NvbnN0cmFpbnQgIT0gTlVMTCkK IAkJCQlBVFJld3JpdGVUYWJsZSh0YWIsIEludmFsaWRPaWQsIGxvY2ttb2RlKTsKIApAQCAtNDQ2 NSw3ICs0NDY2LDcgQEAgQVRSZXdyaXRlVGFibGUoQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBPaWQg T0lETmV3SGVhcCwgTE9DS01PREUgbG9ja21vZGUpCiAJfQogCiAJbm90bnVsbF9hdHRycyA9IE5J TDsKLQlpZiAobmV3cmVsIHx8IHRhYi0+bmV3X25vdG51bGwpCisJaWYgKG5ld3JlbCB8fCB0YWIt PnZlcmlmeV9uZXdfbm90bnVsbCkKIAl7CiAJCS8qCiAJCSAqIElmIHdlIGFyZSByZWJ1aWxkaW5n IHRoZSB0dXBsZXMgT1IgaWYgd2UgYWRkZWQgYW55IG5ldyBOT1QgTlVMTApAQCAtNTQ2MSw3ICs1 NDYyLDcgQEAgQVRFeGVjQWRkQ29sdW1uKExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8g KnRhYiwgUmVsYXRpb24gcmVsLAogCQkgKiBudWxsLCBidXQgc2luY2UgaXQncyBmaWxsZWQgc3Bl Y2lhbGx5LCB0aGVyZSdzIG5vIG5lZWQgdG8gdGVzdAogCQkgKiBhbnl0aGluZy4pCiAJCSAqLwot CQl0YWItPm5ld19ub3RudWxsIHw9IGNvbERlZi0+aXNfbm90X251bGw7CisJCXRhYi0+dmVyaWZ5 X25ld19ub3RudWxsIHw9IGNvbERlZi0+aXNfbm90X251bGw7CiAJfQogCiAJLyoKQEAgLTU4NjMs OCArNTg2NCwxMSBAQCBBVEV4ZWNTZXROb3ROdWxsKEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgUmVs YXRpb24gcmVsLAogCiAJCUNhdGFsb2dUdXBsZVVwZGF0ZShhdHRyX3JlbCwgJnR1cGxlLT50X3Nl bGYsIHR1cGxlKTsKIAotCQkvKiBUZWxsIFBoYXNlIDMgaXQgbmVlZHMgdG8gdGVzdCB0aGUgY29u c3RyYWludCAqLwotCQl0YWItPm5ld19ub3RudWxsID0gdHJ1ZTsKKwkJaWYgKCFOb3ROdWxsSW1w bGllZEJ5UmVsQ29uc3RyYWludHMocmVsLCAoRm9ybV9wZ19hdHRyaWJ1dGUpIEdFVFNUUlVDVCh0 dXBsZSkpKQorCQl7CisJCQkvKiBUZWxsIFBoYXNlIDMgaXQgbmVlZHMgdG8gdGVzdCB0aGUgY29u c3RyYWludCAqLworCQkJdGFiLT52ZXJpZnlfbmV3X25vdG51bGwgPSB0cnVlOworCQl9CiAKIAkJ T2JqZWN0QWRkcmVzc1N1YlNldChhZGRyZXNzLCBSZWxhdGlvblJlbGF0aW9uSWQsCiAJCQkJCQkJ UmVsYXRpb25HZXRSZWxpZChyZWwpLCBhdHRudW0pOwpAQCAtNTg4MSw2ICs1ODg1LDQ2IEBAIEFU RXhlY1NldE5vdE51bGwoQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBSZWxhdGlvbiByZWwsCiB9CiAK IC8qCisgKiBOb3ROdWxsSW1wbGllZEJ5UmVsQ29uc3RyYWludHMKKyAqCQlEb2VzIHJlbCdzIGV4 aXN0aW5nIGNvbnN0cmFpbnRzIGltcGx5IE5PVCBOVUxMIGZvciBnaXZlbiBhdHRyaWJ1dGUKKyAq Lworc3RhdGljIGJvb2wKK05vdE51bGxJbXBsaWVkQnlSZWxDb25zdHJhaW50cyhSZWxhdGlvbiBy ZWwsIEZvcm1fcGdfYXR0cmlidXRlIGF0dHIpCit7CisJTGlzdAkgICAqbm90TnVsbENvbnN0cmFp bnQgPSBOSUw7CisJTnVsbFRlc3QgICAqbm51bGx0ZXN0ID0gbWFrZU5vZGUoTnVsbFRlc3QpOwor CisJbm51bGx0ZXN0LT5hcmcgPSAoRXhwciAqKSBtYWtlVmFyKDEsCisJCQkJCQkJCQkgIGF0dHIt PmF0dG51bSwKKwkJCQkJCQkJCSAgYXR0ci0+YXR0dHlwaWQsCisJCQkJCQkJCQkgIGF0dHItPmF0 dHR5cG1vZCwKKwkJCQkJCQkJCSAgYXR0ci0+YXR0Y29sbGF0aW9uLAorCQkJCQkJCQkJICAwKTsK KwlubnVsbHRlc3QtPm51bGx0ZXN0dHlwZSA9IElTX05PVF9OVUxMOworCisJLyoKKwkgKiBzYW1l IHRoaW5nIGFzIGluIENvbnN0cmFpbnRJbXBsaWVkQnlSZWxDb25zdHJhaW50IGFyZ2lzcm93PWZh bHNlIGlzCisJICogY29ycmVjdCBldmVuIGZvciBhIGNvbXBvc2l0ZSBjb2x1bW4sIGJlY2F1c2Ug YXR0bm90bnVsbCBkb2VzIG5vdAorCSAqIHJlcHJlc2VudCBhIFNRTC1zcGVjIElTIE5PVCBOVUxM IHRlc3QgaW4gc3VjaCBhIGNhc2UsIGp1c3QgSVMgRElTVElOQ1QKKwkgKiBGUk9NIE5VTEwuCisJ ICovCisJbm51bGx0ZXN0LT5hcmdpc3JvdyA9IGZhbHNlOworCW5udWxsdGVzdC0+bG9jYXRpb24g PSAtMTsKKwlub3ROdWxsQ29uc3RyYWludCA9IGxhcHBlbmQobm90TnVsbENvbnN0cmFpbnQsIG5u dWxsdGVzdCk7CisKKwlpZiAoQ29uc3RyYWludEltcGxpZWRCeVJlbENvbnN0cmFpbnQocmVsLCBu b3ROdWxsQ29uc3RyYWludCkpCisJeworCQllcmVwb3J0KERFQlVHMSwKKwkJCQkoZXJybXNnKCJ2 ZXJpZnlpbmcgdGFibGUgXCIlc1wiIE5PVCBOVUxMIGNvbnN0cmFpbnQgIgorCQkJCQkJIm9uICVz IGF0dHJpYnV0ZSBieSBleGlzdGVkIGNvbnN0cmFpbnRzIiwKKwkJCQkJCVJlbGF0aW9uR2V0UmVs YXRpb25OYW1lKHJlbCksIE5hbWVTdHIoYXR0ci0+YXR0bmFtZSkpKSk7CisJCXJldHVybiB0cnVl OworCX0KKworCXJldHVybiBmYWxzZTsKK30KKworLyoKICAqIEFMVEVSIFRBQkxFIEFMVEVSIENP TFVNTiBTRVQvRFJPUCBERUZBVUxUCiAgKgogICogUmV0dXJuIHRoZSBhZGRyZXNzIG9mIHRoZSBh ZmZlY3RlZCBjb2x1bW4uCkBAIC0xMzYxOCwxNSArMTM2NjIsMTQgQEAgQ29tcHV0ZVBhcnRpdGlv bkF0dHJzKFJlbGF0aW9uIHJlbCwgTGlzdCAqcGFydFBhcmFtcywgQXR0ck51bWJlciAqcGFydGF0 dHJzLAogfQogCiAvKgotICogUGFydENvbnN0cmFpbnRJbXBsaWVkQnlSZWxDb25zdHJhaW50Ci0g KgkJRG9lcyBzY2FucmVsJ3MgZXhpc3RpbmcgY29uc3RyYWludHMgaW1wbHkgdGhlIHBhcnRpdGlv biBjb25zdHJhaW50PworICogQ29uc3RyYWludEltcGxpZWRCeVJlbENvbnN0cmFpbnQKKyAqCQlE b2VzIHNjYW5yZWwncyBleGlzdGluZyBjb25zdHJhaW50cyBpbXBseSBnaXZlbiBjb25zdHJhaW50 CiAgKgogICogRXhpc3RpbmcgY29uc3RyYWludHMgaW5jbHVkZXMgaXRzIGNoZWNrIGNvbnN0cmFp bnRzIGFuZCBjb2x1bW4tbGV2ZWwKICAqIE5PVCBOVUxMIGNvbnN0cmFpbnRzIGFuZCBwYXJ0Q29u c3RyYWludCBkZXNjcmliZXMgdGhlIHBhcnRpdGlvbiBjb25zdHJhaW50LgogICovCiBib29sCi1Q YXJ0Q29uc3RyYWludEltcGxpZWRCeVJlbENvbnN0cmFpbnQoUmVsYXRpb24gc2NhbnJlbCwKLQkJ CQkJCQkJCSBMaXN0ICpwYXJ0Q29uc3RyYWludCkKK0NvbnN0cmFpbnRJbXBsaWVkQnlSZWxDb25z dHJhaW50KFJlbGF0aW9uIHNjYW5yZWwsIExpc3QgKnBhcnRDb25zdHJhaW50KQogewogCUxpc3QJ ICAgKmV4aXN0Q29uc3RyYWludCA9IE5JTDsKIAlUdXBsZUNvbnN0ciAqY29uc3RyID0gUmVsYXRp b25HZXREZXNjcihzY2FucmVsKS0+Y29uc3RyOwpAQCAtMTM3MjQsNyArMTM3NjcsNyBAQCBWYWxp ZGF0ZVBhcnRpdGlvbkNvbnN0cmFpbnRzKExpc3QgKip3cXVldWUsIFJlbGF0aW9uIHNjYW5yZWws CiAJICogQmFzZWQgb24gdGhlIHRhYmxlJ3MgZXhpc3RpbmcgY29uc3RyYWludHMsIGRldGVybWlu ZSBpZiB3ZSBjYW4gc2tpcAogCSAqIHNjYW5uaW5nIHRoZSB0YWJsZSB0byB2YWxpZGF0ZSB0aGUg cGFydGl0aW9uIGNvbnN0cmFpbnQuCiAJICovCi0JaWYgKFBhcnRDb25zdHJhaW50SW1wbGllZEJ5 UmVsQ29uc3RyYWludChzY2FucmVsLCBwYXJ0Q29uc3RyYWludCkpCisJaWYgKENvbnN0cmFpbnRJ bXBsaWVkQnlSZWxDb25zdHJhaW50KHNjYW5yZWwsIHBhcnRDb25zdHJhaW50KSkKIAl7CiAJCWlm ICghdmFsaWRhdGVfZGVmYXVsdCkKIAkJCWVyZXBvcnQoSU5GTywKQEAgLTEzNzc2LDcgKzEzODE5 LDcgQEAgVmFsaWRhdGVQYXJ0aXRpb25Db25zdHJhaW50cyhMaXN0ICoqd3F1ZXVlLCBSZWxhdGlv biBzY2FucmVsLAogCQkJCWVsb2coRVJST1IsICJ1bmV4cGVjdGVkIHdob2xlLXJvdyByZWZlcmVu Y2UgZm91bmQgaW4gcGFydGl0aW9uIGtleSIpOwogCiAJCQkvKiBDYW4gd2Ugc2tpcCBzY2Fubmlu ZyB0aGlzIHBhcnRfcmVsPyAqLwotCQkJaWYgKFBhcnRDb25zdHJhaW50SW1wbGllZEJ5UmVsQ29u c3RyYWludChwYXJ0X3JlbCwgbXlfcGFydGNvbnN0cikpCisJCQlpZiAoQ29uc3RyYWludEltcGxp ZWRCeVJlbENvbnN0cmFpbnQocGFydF9yZWwsIG15X3BhcnRjb25zdHIpKQogCQkJewogCQkJCWlm ICghdmFsaWRhdGVfZGVmYXVsdCkKIAkJCQkJZXJlcG9ydChJTkZPLApkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvY29tbWFuZHMvdGFibGVjbWRzLmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy90YWJs ZWNtZHMuaAppbmRleCBkYTNmZjVkLi40MWU4Y2RmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9j b21tYW5kcy90YWJsZWNtZHMuaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy90YWJsZWNtZHMu aApAQCAtODgsNyArODgsNyBAQCBleHRlcm4gdm9pZCBSYW5nZVZhckNhbGxiYWNrT3duc1RhYmxl KGNvbnN0IFJhbmdlVmFyICpyZWxhdGlvbiwKIAogZXh0ZXJuIHZvaWQgUmFuZ2VWYXJDYWxsYmFj a093bnNSZWxhdGlvbihjb25zdCBSYW5nZVZhciAqcmVsYXRpb24sCiAJCQkJCQkJIE9pZCByZWxJ ZCwgT2lkIG9sZFJlbElkLCB2b2lkICpub0NhdGFsb2dzKTsKLWV4dGVybiBib29sIFBhcnRDb25z dHJhaW50SW1wbGllZEJ5UmVsQ29uc3RyYWludChSZWxhdGlvbiBzY2FucmVsLAotCQkJCQkJCQkJ IExpc3QgKnBhcnRDb25zdHJhaW50KTsKK2V4dGVybiBib29sIENvbnN0cmFpbnRJbXBsaWVkQnlS ZWxDb25zdHJhaW50KFJlbGF0aW9uIHNjYW5yZWwsCisJCQkJCQkJCSBMaXN0ICpwYXJ0Q29uc3Ry YWludCk7CiAKICNlbmRpZgkJCQkJCQkvKiBUQUJMRUNNRFNfSCAqLwo= ------==--bound.36983.web6o.yandex.ru--