Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1f7bn0-0006Th-4D for pgsql-hackers@arkaria.postgresql.org; Sun, 15 Apr 2018 07:09:30 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1f7bmx-0007UY-FR for pgsql-hackers@arkaria.postgresql.org; Sun, 15 Apr 2018 07:09:27 +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.89) (envelope-from ) id 1f7bmw-0007UO-TE for pgsql-hackers@lists.postgresql.org; Sun, 15 Apr 2018 07:09:27 +0000 Received: from forward2j.cmail.yandex.net ([2a02:6b8:0:1630::15]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1f7bms-0005O5-2B for pgsql-hackers@postgresql.org; Sun, 15 Apr 2018 07:09:25 +0000 Received: from mxback2g.mail.yandex.net (mxback2g.mail.yandex.net [IPv6:2a02:6b8:0:1472:2741:0:8b7:163]) by forward2j.cmail.yandex.net (Yandex) with ESMTP id 212B620D76; Sun, 15 Apr 2018 10:09:14 +0300 (MSK) Received: from localhost (localhost [::1]) by mxback2g.mail.yandex.net (nwsmtp/Yandex) with ESMTP id HMLQKQCCuj-9B7SGRvq; Sun, 15 Apr 2018 10:09:12 +0300 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=zsrv.org; s=mail; t=1523776152; bh=NZiKcDjogaA8sPfSXzFrUDkZvJdR5FcVEZgW0hquwbE=; h=From:To:Cc:In-Reply-To:References:Subject:Message-Id:Date; b=HBlaCDmgjF9vXNszwGEafkfF3wFQqfe6O/GvRPp/HNECFtBb6p4jDM2l2qRhZNfUP mWbmUAnOffen8KKdwZ88hY+9v/rGlzI8wB4/Hv48fyrtXw5IVgjWF1AvpyuwQYjHQ7 +b7878s2o4Xo1P5NFvTOJ1VWu+oW28069NPjUch4= Authentication-Results: mxback2g.mail.yandex.net; dkim=pass header.i=@zsrv.org Received: by web39j.yandex.ru with HTTP; Sun, 15 Apr 2018 10:09:11 +0300 From: Sergei Kornilov To: PostgreSQL mailing lists Cc: Alvaro Herrera , Stephen Frost , Robert Haas , Ildar Musin , Tom Lane In-Reply-To: <247201523472946@web58j.yandex.ru> References: <880511520351578@web5j.yandex.ru> <20180306172528.xnelm3xcq2qeyd2g@alvherre.pgsql> <1715451520361128@web26o.yandex.ru> <1142.1520362313@sss.pgh.pa.us> <082cf493-a989-dcd6-7baf-a94a40d07ea0@postgrespro.ru> <2947361520607085@web26g.yandex.ru> <5376321520674521@web1j.yandex.ru> <979461523301587@web39j.yandex.ru> <247201523472946@web58j.yandex.ru> Subject: Re: using index or check in ALTER TABLE SET NOT NULL MIME-Version: 1.0 Message-Id: <3654591523776151@web39j.yandex.ru> X-Mailer: Yamail [ http://yandex.ru ] 5.0 Date: Sun, 15 Apr 2018 10:09:11 +0300 Content-Type: multipart/mixed; boundary="----==--bound.365460.web39j.yandex.ru" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk ------==--bound.365460.web39j.yandex.ru Content-Transfer-Encoding: 7bit Content-Type: text/plain Hello Attached updated patch follows recent Reorganize partitioning code commit. regards, Sergei ------==--bound.365460.web39j.yandex.ru Content-Disposition: attachment; filename="alter_table_set_not_null_by_constraints_only_v10.patch" Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name="alter_table_set_not_null_by_constraints_only_v10.patch" ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfdGFibGUuc2dtbCBiL2RvYy9zcmMv c2dtbC9yZWYvYWx0ZXJfdGFibGUuc2dtbAppbmRleCBiZDIyNjI3Li5kYjk4YTk4IDEwMDY0NAot LS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3RhYmxlLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21s L3JlZi9hbHRlcl90YWJsZS5zZ21sCkBAIC0yMTUsOCArMjE1LDE1IEBAIFdJVEggKCBNT0RVTFVT IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1lcmljX2xpdGVyYWw8L3JlcGxhY2Vh YmxlPiwgUkVNCiAgICAgPGxpc3RpdGVtPgogICAgICA8cGFyYT4KICAgICAgIFRoZXNlIGZvcm1z IGNoYW5nZSB3aGV0aGVyIGEgY29sdW1uIGlzIG1hcmtlZCB0byBhbGxvdyBudWxsCi0gICAgICB2 YWx1ZXMgb3IgdG8gcmVqZWN0IG51bGwgdmFsdWVzLiAgWW91IGNhbiBvbmx5IHVzZSA8bGl0ZXJh bD5TRVQKLSAgICAgIE5PVCBOVUxMPC9saXRlcmFsPiB3aGVuIHRoZSBjb2x1bW4gY29udGFpbnMg bm8gbnVsbCB2YWx1ZXMuCisgICAgICB2YWx1ZXMgb3IgdG8gcmVqZWN0IG51bGwgdmFsdWVzLgor ICAgICA8L3BhcmE+CisKKyAgICAgPHBhcmE+CisgICAgICBZb3UgY2FuIG9ubHkgdXNlIDxsaXRl cmFsPlNFVCBOT1QgTlVMTDwvbGl0ZXJhbD4gd2hlbiB0aGUgY29sdW1uIAorICAgICAgY29udGFp bnMgbm8gbnVsbCB2YWx1ZXMuIEZ1bGwgdGFibGUgc2NhbiBpcyBwZXJmb3JtZWQgdG8gY2hlY2sg CisgICAgICB0aGlzIGNvbmRpdGlvbiB1bmxlc3MgdGhlcmUgYXJlIHZhbGlkIDxsaXRlcmFsPkNI RUNLPC9saXRlcmFsPiAKKyAgICAgIGNvbnN0cmFpbnRzIHRoYXQgcHJvaGliaXQgTlVMTCB2YWx1 ZXMgZm9yIHNwZWNpZmllZCBjb2x1bW4uCisgICAgICBJbiB0aGUgbGF0dGVyIGNhc2UgdGFibGUg c2NhbiBpcyBza2lwcGVkLgogICAgICA8L3BhcmE+CiAKICAgICAgPHBhcmE+CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRz L3RhYmxlY21kcy5jCmluZGV4IGMxYTliZGEuLjE2NGMxNDggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxl Y21kcy5jCkBAIC0xNjIsNyArMTYyLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQWx0ZXJlZFRhYmxlSW5m bwogCS8qIEluZm9ybWF0aW9uIHNhdmVkIGJ5IFBoYXNlcyAxLzIgZm9yIFBoYXNlIDM6ICovCiAJ TGlzdAkgICAqY29uc3RyYWludHM7CS8qIExpc3Qgb2YgTmV3Q29uc3RyYWludCAqLwogCUxpc3QJ ICAgKm5ld3ZhbHM7CQkvKiBMaXN0IG9mIE5ld0NvbHVtblZhbHVlICovCi0JYm9vbAkJbmV3X25v dG51bGw7CS8qIFQgaWYgd2UgYWRkZWQgbmV3IE5PVCBOVUxMIGNvbnN0cmFpbnRzICovCisJYm9v bAkJdmVyaWZ5X25ld19ub3RudWxsOyAvKiBUIGlmIHdlIHNob3VsZCByZWNoZWNrIE5PVCBOVUxM ICovCiAJaW50CQkJcmV3cml0ZTsJCS8qIFJlYXNvbiBmb3IgZm9yY2VkIHJld3JpdGUsIGlmIGFu eSAqLwogCU9pZAkJCW5ld1RhYmxlU3BhY2U7CS8qIG5ldyB0YWJsZXNwYWNlOyAwIG1lYW5zIG5v IGNoYW5nZSAqLwogCWJvb2wJCWNoZ1BlcnNpc3RlbmNlOyAvKiBUIGlmIFNFVCBMT0dHRUQvVU5M T0dHRUQgaXMgdXNlZCAqLwpAQCAtMzc0LDYgKzM3NCw3IEBAIHN0YXRpYyBPYmplY3RBZGRyZXNz IEFURXhlY0Ryb3BOb3ROdWxsKFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqY29sTmFtZSwgTE9D S01PCiBzdGF0aWMgdm9pZCBBVFByZXBTZXROb3ROdWxsKFJlbGF0aW9uIHJlbCwgYm9vbCByZWN1 cnNlLCBib29sIHJlY3Vyc2luZyk7CiBzdGF0aWMgT2JqZWN0QWRkcmVzcyBBVEV4ZWNTZXROb3RO dWxsKEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVsLAogCQkJCSBjb25zdCBjaGFy ICpjb2xOYW1lLCBMT0NLTU9ERSBsb2NrbW9kZSk7CitzdGF0aWMgYm9vbCBOb3ROdWxsSW1wbGll ZEJ5UmVsQ29uc3RyYWludHMoUmVsYXRpb24gcmVsLCBGb3JtX3BnX2F0dHJpYnV0ZSBhdHRyKTsK IHN0YXRpYyBPYmplY3RBZGRyZXNzIEFURXhlY0NvbHVtbkRlZmF1bHQoUmVsYXRpb24gcmVsLCBj b25zdCBjaGFyICpjb2xOYW1lLAogCQkJCQlOb2RlICpuZXdEZWZhdWx0LCBMT0NLTU9ERSBsb2Nr bW9kZSk7CiBzdGF0aWMgT2JqZWN0QWRkcmVzcyBBVEV4ZWNBZGRJZGVudGl0eShSZWxhdGlvbiBy ZWwsIGNvbnN0IGNoYXIgKmNvbE5hbWUsCkBAIC00NDY1LDcgKzQ0NjYsNyBAQCBBVFJld3JpdGVU YWJsZXMoQWx0ZXJUYWJsZVN0bXQgKnBhcnNldHJlZSwgTGlzdCAqKndxdWV1ZSwgTE9DS01PREUg bG9ja21vZGUpCiAJCQkgKiBUZXN0IHRoZSBjdXJyZW50IGRhdGEgd2l0aGluIHRoZSB0YWJsZSBh Z2FpbnN0IG5ldyBjb25zdHJhaW50cwogCQkJICogZ2VuZXJhdGVkIGJ5IEFMVEVSIFRBQkxFIGNv bW1hbmRzLCBidXQgZG9uJ3QgcmVidWlsZCBkYXRhLgogCQkJICovCi0JCQlpZiAodGFiLT5jb25z dHJhaW50cyAhPSBOSUwgfHwgdGFiLT5uZXdfbm90bnVsbCB8fAorCQkJaWYgKHRhYi0+Y29uc3Ry YWludHMgIT0gTklMIHx8IHRhYi0+dmVyaWZ5X25ld19ub3RudWxsIHx8CiAJCQkJdGFiLT5wYXJ0 aXRpb25fY29uc3RyYWludCAhPSBOVUxMKQogCQkJCUFUUmV3cml0ZVRhYmxlKHRhYiwgSW52YWxp ZE9pZCwgbG9ja21vZGUpOwogCkBAIC00NjI2LDcgKzQ2MjcsNyBAQCBBVFJld3JpdGVUYWJsZShB bHRlcmVkVGFibGVJbmZvICp0YWIsIE9pZCBPSUROZXdIZWFwLCBMT0NLTU9ERSBsb2NrbW9kZSkK IAl9CiAKIAlub3RudWxsX2F0dHJzID0gTklMOwotCWlmIChuZXdyZWwgfHwgdGFiLT5uZXdfbm90 bnVsbCkKKwlpZiAobmV3cmVsIHx8IHRhYi0+dmVyaWZ5X25ld19ub3RudWxsKQogCXsKIAkJLyoK IAkJICogSWYgd2UgYXJlIHJlYnVpbGRpbmcgdGhlIHR1cGxlcyBPUiBpZiB3ZSBhZGRlZCBhbnkg bmV3IE5PVCBOVUxMCkBAIC01NjYxLDcgKzU2NjIsNyBAQCBBVEV4ZWNBZGRDb2x1bW4oTGlzdCAq KndxdWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBSZWxhdGlvbiByZWwsCiAJCQkgKiBhbiBP SUQgY29sdW1uLiAgT0lEIHdpbGwgYmUgbWFya2VkIG5vdCBudWxsLCBidXQgc2luY2UgaXQncwog CQkJICogZmlsbGVkIHNwZWNpYWxseSwgdGhlcmUncyBubyBuZWVkIHRvIHRlc3QgYW55dGhpbmcu KQogCQkJICovCi0JCQl0YWItPm5ld19ub3RudWxsIHw9IGNvbERlZi0+aXNfbm90X251bGw7CisJ CQl0YWItPnZlcmlmeV9uZXdfbm90bnVsbCB8PSBjb2xEZWYtPmlzX25vdF9udWxsOwogCQl9CiAJ fQogCkBAIC02MDY1LDggKzYwNjYsMTcgQEAgQVRFeGVjU2V0Tm90TnVsbChBbHRlcmVkVGFibGVJ bmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKIAogCQlDYXRhbG9nVHVwbGVVcGRhdGUoYXR0cl9yZWws ICZ0dXBsZS0+dF9zZWxmLCB0dXBsZSk7CiAKLQkJLyogVGVsbCBQaGFzZSAzIGl0IG5lZWRzIHRv IHRlc3QgdGhlIGNvbnN0cmFpbnQgKi8KLQkJdGFiLT5uZXdfbm90bnVsbCA9IHRydWU7CisJCS8q CisJCSAqIFZlcmlmeWluZyB0YWJsZSBkYXRhIGNhbiBiZSBkb25lIGluIFBoYXNlIDMgd2l0aCBz aW5nbGUgdGFibGUgc2NhbgorCQkgKiBmb3IgYWxsIGNvbnN0cmFpbnQgKGJvdGggZXhpc3Rpbmcg YW5kIG5ldykKKwkJICogV2UgY2FuIHNraXAgdGhpcyBjaGVjayBvbmx5IGlmIGV2ZXJ5IG5ldyBO T1QgTlVMTCBjb250cmFpbnQKKwkJICogaW1wbGllZCBieSBleGlzdGVkIHRhYmxlIGNvbnN0cmFp bnRzCisJCSAqLworCQlpZiAoIU5vdE51bGxJbXBsaWVkQnlSZWxDb25zdHJhaW50cyhyZWwsIChG b3JtX3BnX2F0dHJpYnV0ZSkgR0VUU1RSVUNUKHR1cGxlKSkpCisJCXsKKwkJCS8qIFRlbGwgUGhh c2UgMyBpdCBuZWVkcyB0byB0ZXN0IHRoZSBjb25zdHJhaW50cyAqLworCQkJdGFiLT52ZXJpZnlf bmV3X25vdG51bGwgPSB0cnVlOworCQl9CiAKIAkJT2JqZWN0QWRkcmVzc1N1YlNldChhZGRyZXNz LCBSZWxhdGlvblJlbGF0aW9uSWQsCiAJCQkJCQkJUmVsYXRpb25HZXRSZWxpZChyZWwpLCBhdHRu dW0pOwpAQCAtNjA4Myw2ICs2MDkzLDQ2IEBAIEFURXhlY1NldE5vdE51bGwoQWx0ZXJlZFRhYmxl SW5mbyAqdGFiLCBSZWxhdGlvbiByZWwsCiB9CiAKIC8qCisgKiBOb3ROdWxsSW1wbGllZEJ5UmVs Q29uc3RyYWludHMKKyAqCQlEb2VzIHJlbCdzIGV4aXN0aW5nIGNvbnN0cmFpbnRzIGltcGx5IE5P VCBOVUxMIGZvciBnaXZlbiBhdHRyaWJ1dGUKKyAqLworc3RhdGljIGJvb2wKK05vdE51bGxJbXBs aWVkQnlSZWxDb25zdHJhaW50cyhSZWxhdGlvbiByZWwsIEZvcm1fcGdfYXR0cmlidXRlIGF0dHIp Cit7CisJTGlzdAkgICAqbm90TnVsbENvbnN0cmFpbnQgPSBOSUw7CisJTnVsbFRlc3QgICAqbm51 bGx0ZXN0ID0gbWFrZU5vZGUoTnVsbFRlc3QpOworCisJbm51bGx0ZXN0LT5hcmcgPSAoRXhwciAq KSBtYWtlVmFyKDEsCisJCQkJCQkJCQkgIGF0dHItPmF0dG51bSwKKwkJCQkJCQkJCSAgYXR0ci0+ YXR0dHlwaWQsCisJCQkJCQkJCQkgIGF0dHItPmF0dHR5cG1vZCwKKwkJCQkJCQkJCSAgYXR0ci0+ YXR0Y29sbGF0aW9uLAorCQkJCQkJCQkJICAwKTsKKwlubnVsbHRlc3QtPm51bGx0ZXN0dHlwZSA9 IElTX05PVF9OVUxMOworCisJLyoKKwkgKiBzYW1lIHRoaW5nIGFzIGluIENvbnN0cmFpbnRJbXBs aWVkQnlSZWxDb25zdHJhaW50IGFyZ2lzcm93PWZhbHNlIGlzCisJICogY29ycmVjdCBldmVuIGZv ciBhIGNvbXBvc2l0ZSBjb2x1bW4sIGJlY2F1c2UgYXR0bm90bnVsbCBkb2VzIG5vdAorCSAqIHJl cHJlc2VudCBhIFNRTC1zcGVjIElTIE5PVCBOVUxMIHRlc3QgaW4gc3VjaCBhIGNhc2UsIGp1c3Qg SVMgRElTVElOQ1QKKwkgKiBGUk9NIE5VTEwuCisJICovCisJbm51bGx0ZXN0LT5hcmdpc3JvdyA9 IGZhbHNlOworCW5udWxsdGVzdC0+bG9jYXRpb24gPSAtMTsKKwlub3ROdWxsQ29uc3RyYWludCA9 IGxhcHBlbmQobm90TnVsbENvbnN0cmFpbnQsIG5udWxsdGVzdCk7CisKKwlpZiAoQ29uc3RyYWlu dEltcGxpZWRCeVJlbENvbnN0cmFpbnQocmVsLCBub3ROdWxsQ29uc3RyYWludCkpCisJeworCQll cmVwb3J0KERFQlVHMSwKKwkJCQkoZXJybXNnKCJ2ZXJpZnlpbmcgdGFibGUgXCIlc1wiIE5PVCBO VUxMIGNvbnN0cmFpbnQgIgorCQkJCQkJIm9uICVzIGF0dHJpYnV0ZSBieSBleGlzdGVkIGNvbnN0 cmFpbnRzIiwKKwkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCksIE5hbWVTdHIoYXR0 ci0+YXR0bmFtZSkpKSk7CisJCXJldHVybiB0cnVlOworCX0KKworCXJldHVybiBmYWxzZTsKK30K KworLyoKICAqIEFMVEVSIFRBQkxFIEFMVEVSIENPTFVNTiBTRVQvRFJPUCBERUZBVUxUCiAgKgog ICogUmV0dXJuIHRoZSBhZGRyZXNzIG9mIHRoZSBhZmZlY3RlZCBjb2x1bW4uCkBAIC0xMzg1NCwx NiArMTM5MDQsMTUgQEAgQ29tcHV0ZVBhcnRpdGlvbkF0dHJzKFJlbGF0aW9uIHJlbCwgTGlzdCAq cGFydFBhcmFtcywgQXR0ck51bWJlciAqcGFydGF0dHJzLAogfQogCiAvKgotICogUGFydENvbnN0 cmFpbnRJbXBsaWVkQnlSZWxDb25zdHJhaW50Ci0gKgkJRG8gc2NhbnJlbCdzIGV4aXN0aW5nIGNv bnN0cmFpbnRzIGltcGx5IHRoZSBwYXJ0aXRpb24gY29uc3RyYWludD8KKyAqIENvbnN0cmFpbnRJ bXBsaWVkQnlSZWxDb25zdHJhaW50CisgKgkJRG8gc2NhbnJlbCdzIGV4aXN0aW5nIGNvbnN0cmFp bnRzIGltcGx5IGdpdmVuIGNvbnN0cmFpbnQ/CiAgKgogICogIkV4aXN0aW5nIGNvbnN0cmFpbnRz IiBpbmNsdWRlIGl0cyBjaGVjayBjb25zdHJhaW50cyBhbmQgY29sdW1uLWxldmVsCi0gKiBOT1Qg TlVMTCBjb25zdHJhaW50cy4gIHBhcnRDb25zdHJhaW50IGRlc2NyaWJlcyB0aGUgcGFydGl0aW9u IGNvbnN0cmFpbnQsCisgKiBOT1QgTlVMTCBjb25zdHJhaW50cy4gIHRlc3RDb25zdHJhaW50IGRl c2NyaWJlcyB0aGUgY2hlY2tlZCBjb25zdHJhaW50LAogICogaW4gaW1wbGljaXQtQU5EIGZvcm0u CiAgKi8KIGJvb2wKLVBhcnRDb25zdHJhaW50SW1wbGllZEJ5UmVsQ29uc3RyYWludChSZWxhdGlv biBzY2FucmVsLAotCQkJCQkJCQkJIExpc3QgKnBhcnRDb25zdHJhaW50KQorQ29uc3RyYWludElt cGxpZWRCeVJlbENvbnN0cmFpbnQoUmVsYXRpb24gc2NhbnJlbCwgTGlzdCAqdGVzdENvbnN0cmFp bnQpCiB7CiAJTGlzdAkgICAqZXhpc3RDb25zdHJhaW50ID0gTklMOwogCVR1cGxlQ29uc3RyICpj b25zdHIgPSBSZWxhdGlvbkdldERlc2NyKHNjYW5yZWwpLT5jb25zdHI7CkBAIC0xMzkzMiwxMyAr MTM5ODEsMTMgQEAgUGFydENvbnN0cmFpbnRJbXBsaWVkQnlSZWxDb25zdHJhaW50KFJlbGF0aW9u IHNjYW5yZWwsCiAJLyoKIAkgKiBUcnkgdG8gbWFrZSB0aGUgcHJvb2YuICBTaW5jZSB3ZSBhcmUg Y29tcGFyaW5nIENIRUNLIGNvbnN0cmFpbnRzLCB3ZQogCSAqIG5lZWQgdG8gdXNlIHdlYWsgaW1w bGljYXRpb24sIGkuZS4sIHdlIGFzc3VtZSBleGlzdENvbnN0cmFpbnQgaXMKLQkgKiBub3QtZmFs c2UgYW5kIHRyeSB0byBwcm92ZSB0aGUgc2FtZSBmb3IgcGFydENvbnN0cmFpbnQuCisJICogbm90 LWZhbHNlIGFuZCB0cnkgdG8gcHJvdmUgdGhlIHNhbWUgZm9yIHRlc3RDb25zdHJhaW50LgogCSAq CiAJICogTm90ZSB0aGF0IHByZWRpY2F0ZV9pbXBsaWVkX2J5IGFzc3VtZXMgaXRzIGZpcnN0IGFy Z3VtZW50IGlzIGtub3duCi0JICogaW1tdXRhYmxlLiAgVGhhdCBzaG91bGQgYWx3YXlzIGJlIHRy dWUgZm9yIHBhcnRpdGlvbiBjb25zdHJhaW50cywgc28gd2UKLQkgKiBkb24ndCB0ZXN0IGl0IGhl cmUuCisJICogaW1tdXRhYmxlLiAgVGhhdCBzaG91bGQgYWx3YXlzIGJlIHRydWUgZm9yIGJvdGgg bm90IG51bGwgYW5kCisJICogcGFydGl0aW9uIGNvbnN0cmFpbnRzLCBzbyB3ZSBkb24ndCB0ZXN0 IGl0IGhlcmUuCiAJICovCi0JcmV0dXJuIHByZWRpY2F0ZV9pbXBsaWVkX2J5KHBhcnRDb25zdHJh aW50LCBleGlzdENvbnN0cmFpbnQsIHRydWUpOworCXJldHVybiBwcmVkaWNhdGVfaW1wbGllZF9i eSh0ZXN0Q29uc3RyYWludCwgZXhpc3RDb25zdHJhaW50LCB0cnVlKTsKIH0KIAogLyoKQEAgLTEz OTYwLDcgKzE0MDA5LDcgQEAgUXVldWVQYXJ0aXRpb25Db25zdHJhaW50VmFsaWRhdGlvbihMaXN0 ICoqd3F1ZXVlLCBSZWxhdGlvbiBzY2FucmVsLAogCSAqIEJhc2VkIG9uIHRoZSB0YWJsZSdzIGV4 aXN0aW5nIGNvbnN0cmFpbnRzLCBkZXRlcm1pbmUgd2hldGhlciBvciBub3Qgd2UKIAkgKiBtYXkg c2tpcCBzY2FubmluZyB0aGUgdGFibGUuCiAJICovCi0JaWYgKFBhcnRDb25zdHJhaW50SW1wbGll ZEJ5UmVsQ29uc3RyYWludChzY2FucmVsLCBwYXJ0Q29uc3RyYWludCkpCisJaWYgKENvbnN0cmFp bnRJbXBsaWVkQnlSZWxDb25zdHJhaW50KHNjYW5yZWwsIHBhcnRDb25zdHJhaW50KSkKIAl7CiAJ CWlmICghdmFsaWRhdGVfZGVmYXVsdCkKIAkJCWVyZXBvcnQoSU5GTywKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmMgYi9zcmMvYmFja2VuZC9wYXJ0aXRp b25pbmcvcGFydGJvdW5kcy5jCmluZGV4IDIyOWNlM2YuLmU1M2UzMTcgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFy dGl0aW9uaW5nL3BhcnRib3VuZHMuYwpAQCAtNjE1LDcgKzYxNSw3IEBAIGNoZWNrX2RlZmF1bHRf YWxsb3dzX2JvdW5kKFJlbGF0aW9uIHBhcmVudCwgUmVsYXRpb24gZGVmYXVsdF9yZWwsCiAJICog bm90IGNvbnRhaW4gYW55IHJvdyB0aGF0IHdvdWxkIGJlbG9uZyB0byB0aGUgbmV3IHBhcnRpdGlv biwgd2UgY2FuCiAJICogYXZvaWQgc2Nhbm5pbmcgdGhlIGRlZmF1bHQgcGFydGl0aW9uLgogCSAq LwotCWlmIChQYXJ0Q29uc3RyYWludEltcGxpZWRCeVJlbENvbnN0cmFpbnQoZGVmYXVsdF9yZWws IGRlZl9wYXJ0X2NvbnN0cmFpbnRzKSkKKwlpZiAoQ29uc3RyYWludEltcGxpZWRCeVJlbENvbnN0 cmFpbnQoZGVmYXVsdF9yZWwsIGRlZl9wYXJ0X2NvbnN0cmFpbnRzKSkKIAl7CiAJCWVyZXBvcnQo SU5GTywKIAkJCQkoZXJybXNnKCJ1cGRhdGVkIHBhcnRpdGlvbiBjb25zdHJhaW50IGZvciBkZWZh dWx0IHBhcnRpdGlvbiBcIiVzXCIgaXMgaW1wbGllZCBieSBleGlzdGluZyBjb25zdHJhaW50cyIs CkBAIC02NTksNyArNjU5LDcgQEAgY2hlY2tfZGVmYXVsdF9hbGxvd3NfYm91bmQoUmVsYXRpb24g cGFyZW50LCBSZWxhdGlvbiBkZWZhdWx0X3JlbCwKIAkJCSAqIHRoYXQgaXQgd2lsbCBub3QgY29u dGFpbiBhbnkgcm93IHRoYXQgd291bGQgYmVsb25nIHRvIHRoZSBuZXcKIAkJCSAqIHBhcnRpdGlv biwgd2UgY2FuIGF2b2lkIHNjYW5uaW5nIHRoZSBjaGlsZCB0YWJsZS4KIAkJCSAqLwotCQkJaWYg KFBhcnRDb25zdHJhaW50SW1wbGllZEJ5UmVsQ29uc3RyYWludChwYXJ0X3JlbCwKKwkJCWlmIChD b25zdHJhaW50SW1wbGllZEJ5UmVsQ29uc3RyYWludChwYXJ0X3JlbCwKIAkJCQkJCQkJCQkJCQkg ZGVmX3BhcnRfY29uc3RyYWludHMpKQogCQkJewogCQkJCWVyZXBvcnQoSU5GTywKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3RhYmxlY21kcy5oIGIvc3JjL2luY2x1ZGUvY29tbWFu ZHMvdGFibGVjbWRzLmgKaW5kZXggZDQ2ZTA5Yy4uOGI2ZjEzZCAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvY29tbWFuZHMvdGFibGVjbWRzLmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvdGFi bGVjbWRzLmgKQEAgLTkzLDcgKzkzLDcgQEAgZXh0ZXJuIHZvaWQgUmFuZ2VWYXJDYWxsYmFja093 bnNUYWJsZShjb25zdCBSYW5nZVZhciAqcmVsYXRpb24sCiAKIGV4dGVybiB2b2lkIFJhbmdlVmFy Q2FsbGJhY2tPd25zUmVsYXRpb24oY29uc3QgUmFuZ2VWYXIgKnJlbGF0aW9uLAogCQkJCQkJCSBP aWQgcmVsSWQsIE9pZCBvbGRSZWxJZCwgdm9pZCAqbm9DYXRhbG9ncyk7Ci1leHRlcm4gYm9vbCBQ YXJ0Q29uc3RyYWludEltcGxpZWRCeVJlbENvbnN0cmFpbnQoUmVsYXRpb24gc2NhbnJlbCwKLQkJ CQkJCQkJCSBMaXN0ICpwYXJ0Q29uc3RyYWludCk7CitleHRlcm4gYm9vbCBDb25zdHJhaW50SW1w bGllZEJ5UmVsQ29uc3RyYWludChSZWxhdGlvbiBzY2FucmVsLAorCQkJCQkJCQkgTGlzdCAqdGVz dENvbnN0cmFpbnQpOwogCiAjZW5kaWYJCQkJCQkJLyogVEFCTEVDTURTX0ggKi8KZGlmZiAtLWdp dCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvYWx0ZXJfdGFibGUub3V0IGIvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9hbHRlcl90YWJsZS5vdXQKaW5kZXggNTBiOTQ0My4uNGQwNzIxMiAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9hbHRlcl90YWJsZS5vdXQKKysr IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9hbHRlcl90YWJsZS5vdXQKQEAgLTEwMzgsNiAr MTAzOCw0MSBAQCBhbHRlciB0YWJsZSBteXZpZXcgYWx0ZXIgY29sdW1uIHRlc3Qgc2V0IG5vdCBu dWxsOwogRVJST1I6ICAibXl2aWV3IiBpcyBub3QgYSB0YWJsZSBvciBmb3JlaWduIHRhYmxlCiBk cm9wIHZpZXcgbXl2aWV3OwogZHJvcCB0YWJsZSBhdGFjYzE7CistLSBzZXQgbm90IG51bGwgdmVy aWZpZWQgYnkgY29uc3RyYWludHMKK2NyZWF0ZSB0YWJsZSBhdGFjYzEgKHRlc3RfYSBpbnQsIHRl c3RfYiBpbnQpOworaW5zZXJ0IGludG8gYXRhY2MxIHZhbHVlcyAobnVsbCwgMSk7CistLSBjb25z dHJhaW50IG5vdCBjb3ZlciBhbGwgdmFsdWVzLCBzaG91bGQgZmFpbAorYWx0ZXIgdGFibGUgYXRh Y2MxIGFkZCBjb25zdHJhaW50IGF0YWNjMV9jb25zdHJfb3IgY2hlY2sodGVzdF9hIGlzIG5vdCBu dWxsIG9yIHRlc3RfYiA8IDEwKTsKK2FsdGVyIHRhYmxlIGF0YWNjMSBhbHRlciB0ZXN0X2Egc2V0 IG5vdCBudWxsOworRVJST1I6ICBjb2x1bW4gInRlc3RfYSIgY29udGFpbnMgbnVsbCB2YWx1ZXMK K2FsdGVyIHRhYmxlIGF0YWNjMSBkcm9wIGNvbnN0cmFpbnQgYXRhY2MxX2NvbnN0cl9vcjsKKy0t IG5vdCB2YWxpZCBjb25zdHJhaW50LCBzaG91bGQgZmFpbAorYWx0ZXIgdGFibGUgYXRhY2MxIGFk ZCBjb25zdHJhaW50IGF0YWNjMV9jb25zdHJfaW52YWxpZCBjaGVjayh0ZXN0X2EgaXMgbm90IG51 bGwpIG5vdCB2YWxpZDsKK2FsdGVyIHRhYmxlIGF0YWNjMSBhbHRlciB0ZXN0X2Egc2V0IG5vdCBu dWxsOworRVJST1I6ICBjb2x1bW4gInRlc3RfYSIgY29udGFpbnMgbnVsbCB2YWx1ZXMKK2FsdGVy IHRhYmxlIGF0YWNjMSBkcm9wIGNvbnN0cmFpbnQgYXRhY2MxX2NvbnN0cl9pbnZhbGlkOworLS0g d2l0aCB2YWxpZCBjb25zdHJhaW50Cit1cGRhdGUgYXRhY2MxIHNldCB0ZXN0X2EgPSAxOworYWx0 ZXIgdGFibGUgYXRhY2MxIGFkZCBjb25zdHJhaW50IGF0YWNjMV9jb25zdHJfYV92YWxpZCBjaGVj ayh0ZXN0X2EgaXMgbm90IG51bGwpOworYWx0ZXIgdGFibGUgYXRhY2MxIGFsdGVyIHRlc3RfYSBz ZXQgbm90IG51bGw7CitkZWxldGUgZnJvbSBhdGFjYzE7CitpbnNlcnQgaW50byBhdGFjYzEgdmFs dWVzICgyLCBudWxsKTsKK2FsdGVyIHRhYmxlIGF0YWNjMSBhbHRlciB0ZXN0X2EgZHJvcCBub3Qg bnVsbDsKKy0tIHRlc3QgbXVsdGlwbGUgc2V0IG5vdCBudWxsIGF0IHNhbWUgdGltZQorLS0gdGVz dF9hIGNoZWNrZWQgYnkgYXRhY2MxX2NvbnN0cl9hX3ZhbGlkLCB0ZXN0X2Igc2hvdWxkIGZhaWwg YnkgdGFibGUgc2NhbgorYWx0ZXIgdGFibGUgYXRhY2MxIGFsdGVyIHRlc3RfYSBzZXQgbm90IG51 bGwsIGFsdGVyIHRlc3RfYiBzZXQgbm90IG51bGw7CitFUlJPUjogIGNvbHVtbiAidGVzdF9iIiBj b250YWlucyBudWxsIHZhbHVlcworLS0gY29tbWFuZHMgb3JkZXIgaGFzIG5vIGltcG9ydGFuY2UK K2FsdGVyIHRhYmxlIGF0YWNjMSBhbHRlciB0ZXN0X2Igc2V0IG5vdCBudWxsLCBhbHRlciB0ZXN0 X2Egc2V0IG5vdCBudWxsOworRVJST1I6ICBjb2x1bW4gInRlc3RfYiIgY29udGFpbnMgbnVsbCB2 YWx1ZXMKKy0tIHZhbGlkIG9uZSBieSB0YWJsZSBzY2FuLCBvbmUgYnkgY2hlY2sgY29uc3RyYWlu dHMKK3VwZGF0ZSBhdGFjYzEgc2V0IHRlc3RfYiA9IDE7CithbHRlciB0YWJsZSBhdGFjYzEgYWx0 ZXIgdGVzdF9iIHNldCBub3QgbnVsbCwgYWx0ZXIgdGVzdF9hIHNldCBub3QgbnVsbDsKK2FsdGVy IHRhYmxlIGF0YWNjMSBhbHRlciB0ZXN0X2EgZHJvcCBub3QgbnVsbCwgYWx0ZXIgdGVzdF9iIGRy b3Agbm90IG51bGw7CistLSBib3RoIGNvbHVtbiBoYXMgY2hlY2sgY29uc3RyYWludHMKK2FsdGVy IHRhYmxlIGF0YWNjMSBhZGQgY29uc3RyYWludCBhdGFjYzFfY29uc3RyX2JfdmFsaWQgY2hlY2so dGVzdF9iIGlzIG5vdCBudWxsKTsKK2FsdGVyIHRhYmxlIGF0YWNjMSBhbHRlciB0ZXN0X2Igc2V0 IG5vdCBudWxsLCBhbHRlciB0ZXN0X2Egc2V0IG5vdCBudWxsOworZHJvcCB0YWJsZSBhdGFjYzE7 CiAtLSB0ZXN0IGluaGVyaXRhbmNlCiBjcmVhdGUgdGFibGUgcGFyZW50IChhIGludCk7CiBjcmVh dGUgdGFibGUgY2hpbGQgKGIgdmFyY2hhcigyNTUpKSBpbmhlcml0cyAocGFyZW50KTsKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2FsdGVyX3RhYmxlLnNxbCBiL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL2FsdGVyX3RhYmxlLnNxbAppbmRleCBkNTA4YTY5Li42YjJhM2QxIDEwMDY0NAot LS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9hbHRlcl90YWJsZS5zcWwKKysrIGIvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvYWx0ZXJfdGFibGUuc3FsCkBAIC03OTgsNiArNzk4LDQxIEBAIGRyb3Agdmll dyBteXZpZXc7CiAKIGRyb3AgdGFibGUgYXRhY2MxOwogCistLSBzZXQgbm90IG51bGwgdmVyaWZp ZWQgYnkgY29uc3RyYWludHMKK2NyZWF0ZSB0YWJsZSBhdGFjYzEgKHRlc3RfYSBpbnQsIHRlc3Rf YiBpbnQpOworaW5zZXJ0IGludG8gYXRhY2MxIHZhbHVlcyAobnVsbCwgMSk7CistLSBjb25zdHJh aW50IG5vdCBjb3ZlciBhbGwgdmFsdWVzLCBzaG91bGQgZmFpbAorYWx0ZXIgdGFibGUgYXRhY2Mx IGFkZCBjb25zdHJhaW50IGF0YWNjMV9jb25zdHJfb3IgY2hlY2sodGVzdF9hIGlzIG5vdCBudWxs IG9yIHRlc3RfYiA8IDEwKTsKK2FsdGVyIHRhYmxlIGF0YWNjMSBhbHRlciB0ZXN0X2Egc2V0IG5v dCBudWxsOworYWx0ZXIgdGFibGUgYXRhY2MxIGRyb3AgY29uc3RyYWludCBhdGFjYzFfY29uc3Ry X29yOworLS0gbm90IHZhbGlkIGNvbnN0cmFpbnQsIHNob3VsZCBmYWlsCithbHRlciB0YWJsZSBh dGFjYzEgYWRkIGNvbnN0cmFpbnQgYXRhY2MxX2NvbnN0cl9pbnZhbGlkIGNoZWNrKHRlc3RfYSBp cyBub3QgbnVsbCkgbm90IHZhbGlkOworYWx0ZXIgdGFibGUgYXRhY2MxIGFsdGVyIHRlc3RfYSBz ZXQgbm90IG51bGw7CithbHRlciB0YWJsZSBhdGFjYzEgZHJvcCBjb25zdHJhaW50IGF0YWNjMV9j b25zdHJfaW52YWxpZDsKKy0tIHdpdGggdmFsaWQgY29uc3RyYWludAordXBkYXRlIGF0YWNjMSBz ZXQgdGVzdF9hID0gMTsKK2FsdGVyIHRhYmxlIGF0YWNjMSBhZGQgY29uc3RyYWludCBhdGFjYzFf Y29uc3RyX2FfdmFsaWQgY2hlY2sodGVzdF9hIGlzIG5vdCBudWxsKTsKK2FsdGVyIHRhYmxlIGF0 YWNjMSBhbHRlciB0ZXN0X2Egc2V0IG5vdCBudWxsOworZGVsZXRlIGZyb20gYXRhY2MxOworCitp bnNlcnQgaW50byBhdGFjYzEgdmFsdWVzICgyLCBudWxsKTsKK2FsdGVyIHRhYmxlIGF0YWNjMSBh bHRlciB0ZXN0X2EgZHJvcCBub3QgbnVsbDsKKy0tIHRlc3QgbXVsdGlwbGUgc2V0IG5vdCBudWxs IGF0IHNhbWUgdGltZQorLS0gdGVzdF9hIGNoZWNrZWQgYnkgYXRhY2MxX2NvbnN0cl9hX3ZhbGlk LCB0ZXN0X2Igc2hvdWxkIGZhaWwgYnkgdGFibGUgc2NhbgorYWx0ZXIgdGFibGUgYXRhY2MxIGFs dGVyIHRlc3RfYSBzZXQgbm90IG51bGwsIGFsdGVyIHRlc3RfYiBzZXQgbm90IG51bGw7CistLSBj b21tYW5kcyBvcmRlciBoYXMgbm8gaW1wb3J0YW5jZQorYWx0ZXIgdGFibGUgYXRhY2MxIGFsdGVy IHRlc3RfYiBzZXQgbm90IG51bGwsIGFsdGVyIHRlc3RfYSBzZXQgbm90IG51bGw7CisKKy0tIHZh bGlkIG9uZSBieSB0YWJsZSBzY2FuLCBvbmUgYnkgY2hlY2sgY29uc3RyYWludHMKK3VwZGF0ZSBh dGFjYzEgc2V0IHRlc3RfYiA9IDE7CithbHRlciB0YWJsZSBhdGFjYzEgYWx0ZXIgdGVzdF9iIHNl dCBub3QgbnVsbCwgYWx0ZXIgdGVzdF9hIHNldCBub3QgbnVsbDsKKworYWx0ZXIgdGFibGUgYXRh Y2MxIGFsdGVyIHRlc3RfYSBkcm9wIG5vdCBudWxsLCBhbHRlciB0ZXN0X2IgZHJvcCBub3QgbnVs bDsKKy0tIGJvdGggY29sdW1uIGhhcyBjaGVjayBjb25zdHJhaW50cworYWx0ZXIgdGFibGUgYXRh Y2MxIGFkZCBjb25zdHJhaW50IGF0YWNjMV9jb25zdHJfYl92YWxpZCBjaGVjayh0ZXN0X2IgaXMg bm90IG51bGwpOworYWx0ZXIgdGFibGUgYXRhY2MxIGFsdGVyIHRlc3RfYiBzZXQgbm90IG51bGws IGFsdGVyIHRlc3RfYSBzZXQgbm90IG51bGw7Citkcm9wIHRhYmxlIGF0YWNjMTsKKwogLS0gdGVz dCBpbmhlcml0YW5jZQogY3JlYXRlIHRhYmxlIHBhcmVudCAoYSBpbnQpOwogY3JlYXRlIHRhYmxl IGNoaWxkIChiIHZhcmNoYXIoMjU1KSkgaW5oZXJpdHMgKHBhcmVudCk7Cg== ------==--bound.365460.web39j.yandex.ru--