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 1euaua-0007GZ-Ld for pgsql-hackers@arkaria.postgresql.org; Sat, 10 Mar 2018 09:35:33 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1euauX-0004fz-Nz for pgsql-hackers@arkaria.postgresql.org; Sat, 10 Mar 2018 09:35:29 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1euauX-0004fo-Bq for pgsql-hackers@lists.postgresql.org; Sat, 10 Mar 2018 09:35:29 +0000 Received: from forward102p.mail.yandex.net ([77.88.28.102]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1euauT-0008DV-9t for pgsql-hackers@postgresql.org; Sat, 10 Mar 2018 09:35:28 +0000 Received: from mxback12g.mail.yandex.net (mxback12g.mail.yandex.net [IPv6:2a02:6b8:0:1472:2741:0:8b7:91]) by forward102p.mail.yandex.net (Yandex) with ESMTP id 90C91430314A; Sat, 10 Mar 2018 12:35:23 +0300 (MSK) Received: from localhost (localhost [::1]) by mxback12g.mail.yandex.net (nwsmtp/Yandex) with ESMTP id 8ea2U1y1Xx-ZLuSZZIc; Sat, 10 Mar 2018 12:35:22 +0300 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=zsrv.org; s=mail; t=1520674522; bh=j5CVYiF8VtNz6/BZSw3HCR5Yo1IDHZPH7toOSu7oQGE=; h=From:To:Cc:In-Reply-To:References:Subject:Message-Id:Date; b=SE6pGTNdbujrjMxsL7t545Ti9XUzsAhl7DhVJ5C/g7kSr48GE+TosW3tTvSSTVl0H 1jbVOh6l+9ilPwPAPUmp5C663d6ynumZOss02jAcbOTUvaLGc4VZiHzDDe4fgjg2Rw aOP3zoe24fJQQgfAyCtZRfbMKHfVwBN3d0Kiii3w= Authentication-Results: mxback12g.mail.yandex.net; dkim=pass header.i=@zsrv.org Received: by web1j.yandex.ru with HTTP; Sat, 10 Mar 2018 12:35:21 +0300 From: Sergei Kornilov To: Ildar Musin , Tom Lane Cc: Alvaro Herrera , Stephen Frost , Robert Haas , "pgsql-hackers@postgresql.org" In-Reply-To: <2947361520607085@web26g.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> Subject: Re: using index or check in ALTER TABLE SET NOT NULL MIME-Version: 1.0 Message-Id: <5376321520674521@web1j.yandex.ru> X-Mailer: Yamail [ http://yandex.ru ] 5.0 Date: Sat, 10 Mar 2018 12:35:21 +0300 Content-Type: multipart/mixed; boundary="----==--bound.537633.web1j.yandex.ru" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk ------==--bound.537633.web1j.yandex.ru Content-Transfer-Encoding: 7bit Content-Type: text/plain Hello My patch does not apply after commit 5748f3a0aa7cf78ac6979010273bd9d50869bb8e. Here is update to current master. Not null constraint is immutable too, so here is no changes in PartConstraintImpliedByRelConstraint excepts rename and comments fix. In this patch version i also revert tests to v4 state: i use DEBUG ereport instead INFO and code path not tested. Please tell me if i must change tests some way. regards, Sergei ------==--bound.537633.web1j.yandex.ru Content-Disposition: attachment; filename="alter_table_set_not_null_by_constraints_only_v7.patch" Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name="alter_table_set_not_null_by_constraints_only_v7.patch" ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfdGFibGUuc2dtbCBiL2RvYy9zcmMv c2dtbC9yZWYvYWx0ZXJfdGFibGUuc2dtbAppbmRleCBhZmUyMTM5Li43ODNhMGVmIDEwMDY0NAot LS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3RhYmxlLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21s L3JlZi9hbHRlcl90YWJsZS5zZ21sCkBAIC0yMTUsOCArMjE1LDE1IEBAIFdJVEggKCBNT0RVTFVT IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1lcmljX2xpdGVyYWw8L3JlcGxhY2Vh YmxlPiwgUkVNCiAgICAgPGxpc3RpdGVtPgogICAgICA8cGFyYT4KICAgICAgIFRoZXNlIGZvcm1z IGNoYW5nZSB3aGV0aGVyIGEgY29sdW1uIGlzIG1hcmtlZCB0byBhbGxvdyBudWxsCi0gICAgICB2 YWx1ZXMgb3IgdG8gcmVqZWN0IG51bGwgdmFsdWVzLiAgWW91IGNhbiBvbmx5IHVzZSA8bGl0ZXJh bD5TRVQKLSAgICAgIE5PVCBOVUxMPC9saXRlcmFsPiB3aGVuIHRoZSBjb2x1bW4gY29udGFpbnMg bm8gbnVsbCB2YWx1ZXMuCisgICAgICB2YWx1ZXMgb3IgdG8gcmVqZWN0IG51bGwgdmFsdWVzLgor ICAgICA8L3BhcmE+CisKKyAgICAgPHBhcmE+CisgICAgICBZb3UgY2FuIG9ubHkgdXNlIDxsaXRl cmFsPlNFVCBOT1QgTlVMTDwvbGl0ZXJhbD4gd2hlbiB0aGUgY29sdW1uIAorICAgICAgY29udGFp bnMgbm8gbnVsbCB2YWx1ZXMuIEZ1bGwgdGFibGUgc2NhbiBpcyBwZXJmb3JtZWQgdG8gY2hlY2sg CisgICAgICB0aGlzIGNvbmRpdGlvbiB1bmxlc3MgdGhlcmUgYXJlIHZhbGlkIDxsaXRlcmFsPkNI RUNLPC9saXRlcmFsPiAKKyAgICAgIGNvbnN0cmFpbnRzIHRoYXQgcHJvaGliaXQgTlVMTCB2YWx1 ZXMgZm9yIHNwZWNpZmllZCBjb2x1bW4uCisgICAgICBJbiB0aGUgbGF0dGVyIGNhc2UgdGFibGUg c2NhbiBpcyBza2lwcGVkLgogICAgICA8L3BhcmE+CiAKICAgICAgPHBhcmE+CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9jYXRhbG9nL3BhcnRpdGlvbi5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9w YXJ0aXRpb24uYwppbmRleCBmY2Y3NjU1Li40ZmVjMzZkIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9jYXRhbG9nL3BhcnRpdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGFydGl0aW9u LmMKQEAgLTEyNTgsNyArMTI1OCw3IEBAIGNoZWNrX2RlZmF1bHRfYWxsb3dzX2JvdW5kKFJlbGF0 aW9uIHBhcmVudCwgUmVsYXRpb24gZGVmYXVsdF9yZWwsCiAJICogbm90IGNvbnRhaW4gYW55IHJv dyB0aGF0IHdvdWxkIGJlbG9uZyB0byB0aGUgbmV3IHBhcnRpdGlvbiwgd2UgY2FuCiAJICogYXZv aWQgc2Nhbm5pbmcgdGhlIGRlZmF1bHQgcGFydGl0aW9uLgogCSAqLwotCWlmIChQYXJ0Q29uc3Ry YWludEltcGxpZWRCeVJlbENvbnN0cmFpbnQoZGVmYXVsdF9yZWwsIGRlZl9wYXJ0X2NvbnN0cmFp bnRzKSkKKwlpZiAoQ29uc3RyYWludEltcGxpZWRCeVJlbENvbnN0cmFpbnQoZGVmYXVsdF9yZWws IGRlZl9wYXJ0X2NvbnN0cmFpbnRzKSkKIAl7CiAJCWVyZXBvcnQoSU5GTywKIAkJCQkoZXJybXNn KCJ1cGRhdGVkIHBhcnRpdGlvbiBjb25zdHJhaW50IGZvciBkZWZhdWx0IHBhcnRpdGlvbiBcIiVz XCIgaXMgaW1wbGllZCBieSBleGlzdGluZyBjb25zdHJhaW50cyIsCkBAIC0xMzAyLDggKzEzMDIs OCBAQCBjaGVja19kZWZhdWx0X2FsbG93c19ib3VuZChSZWxhdGlvbiBwYXJlbnQsIFJlbGF0aW9u IGRlZmF1bHRfcmVsLAogCQkJICogdGhhdCBpdCB3aWxsIG5vdCBjb250YWluIGFueSByb3cgdGhh dCB3b3VsZCBiZWxvbmcgdG8gdGhlIG5ldwogCQkJICogcGFydGl0aW9uLCB3ZSBjYW4gYXZvaWQg c2Nhbm5pbmcgdGhlIGNoaWxkIHRhYmxlLgogCQkJICovCi0JCQlpZiAoUGFydENvbnN0cmFpbnRJ bXBsaWVkQnlSZWxDb25zdHJhaW50KHBhcnRfcmVsLAotCQkJCQkJCQkJCQkJCSBkZWZfcGFydF9j b25zdHJhaW50cykpCisJCQlpZiAoQ29uc3RyYWludEltcGxpZWRCeVJlbENvbnN0cmFpbnQocGFy dF9yZWwsCisJCQkJCQkJCQkJCQkgZGVmX3BhcnRfY29uc3RyYWludHMpKQogCQkJewogCQkJCWVy ZXBvcnQoSU5GTywKIAkJCQkJCShlcnJtc2coInVwZGF0ZWQgcGFydGl0aW9uIGNvbnN0cmFpbnQg Zm9yIGRlZmF1bHQgcGFydGl0aW9uIFwiJXNcIiBpcyBpbXBsaWVkIGJ5IGV4aXN0aW5nIGNvbnN0 cmFpbnRzIiwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKaW5kZXggZTU1OWFmYi4uYjZkMzk1YiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKKysrIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKQEAgLTE2Miw3ICsxNjIsNyBAQCB0eXBlZGVmIHN0 cnVjdCBBbHRlcmVkVGFibGVJbmZvCiAJLyogSW5mb3JtYXRpb24gc2F2ZWQgYnkgUGhhc2VzIDEv MiBmb3IgUGhhc2UgMzogKi8KIAlMaXN0CSAgICpjb25zdHJhaW50czsJLyogTGlzdCBvZiBOZXdD b25zdHJhaW50ICovCiAJTGlzdAkgICAqbmV3dmFsczsJCS8qIExpc3Qgb2YgTmV3Q29sdW1uVmFs dWUgKi8KLQlib29sCQluZXdfbm90bnVsbDsJLyogVCBpZiB3ZSBhZGRlZCBuZXcgTk9UIE5VTEwg Y29uc3RyYWludHMgKi8KKwlib29sCQl2ZXJpZnlfbmV3X25vdG51bGw7IC8qIFQgaWYgd2Ugc2hv dWxkIHJlY2hlY2sgTk9UIE5VTEwgKi8KIAlpbnQJCQlyZXdyaXRlOwkJLyogUmVhc29uIGZvciBm b3JjZWQgcmV3cml0ZSwgaWYgYW55ICovCiAJT2lkCQkJbmV3VGFibGVTcGFjZTsJLyogbmV3IHRh Ymxlc3BhY2U7IDAgbWVhbnMgbm8gY2hhbmdlICovCiAJYm9vbAkJY2hnUGVyc2lzdGVuY2U7IC8q IFQgaWYgU0VUIExPR0dFRC9VTkxPR0dFRCBpcyB1c2VkICovCkBAIC0zNzcsNiArMzc3LDcgQEAg c3RhdGljIE9iamVjdEFkZHJlc3MgQVRFeGVjRHJvcE5vdE51bGwoUmVsYXRpb24gcmVsLCBjb25z dCBjaGFyICpjb2xOYW1lLCBMT0NLTU8KIHN0YXRpYyB2b2lkIEFUUHJlcFNldE5vdE51bGwoUmVs YXRpb24gcmVsLCBib29sIHJlY3Vyc2UsIGJvb2wgcmVjdXJzaW5nKTsKIHN0YXRpYyBPYmplY3RB ZGRyZXNzIEFURXhlY1NldE5vdE51bGwoQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBSZWxhdGlvbiBy ZWwsCiAJCQkJIGNvbnN0IGNoYXIgKmNvbE5hbWUsIExPQ0tNT0RFIGxvY2ttb2RlKTsKK3N0YXRp YyBib29sIE5vdE51bGxJbXBsaWVkQnlSZWxDb25zdHJhaW50cyhSZWxhdGlvbiByZWwsIEZvcm1f cGdfYXR0cmlidXRlIGF0dHIpOwogc3RhdGljIE9iamVjdEFkZHJlc3MgQVRFeGVjQ29sdW1uRGVm YXVsdChSZWxhdGlvbiByZWwsIGNvbnN0IGNoYXIgKmNvbE5hbWUsCiAJCQkJCU5vZGUgKm5ld0Rl ZmF1bHQsIExPQ0tNT0RFIGxvY2ttb2RlKTsKIHN0YXRpYyBPYmplY3RBZGRyZXNzIEFURXhlY0Fk ZElkZW50aXR5KFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqY29sTmFtZSwKQEAgLTQzNzEsNyAr NDM3Miw3IEBAIEFUUmV3cml0ZVRhYmxlcyhBbHRlclRhYmxlU3RtdCAqcGFyc2V0cmVlLCBMaXN0 ICoqd3F1ZXVlLCBMT0NLTU9ERSBsb2NrbW9kZSkKIAkJCSAqIFRlc3QgdGhlIGN1cnJlbnQgZGF0 YSB3aXRoaW4gdGhlIHRhYmxlIGFnYWluc3QgbmV3IGNvbnN0cmFpbnRzCiAJCQkgKiBnZW5lcmF0 ZWQgYnkgQUxURVIgVEFCTEUgY29tbWFuZHMsIGJ1dCBkb24ndCByZWJ1aWxkIGRhdGEuCiAJCQkg Ki8KLQkJCWlmICh0YWItPmNvbnN0cmFpbnRzICE9IE5JTCB8fCB0YWItPm5ld19ub3RudWxsIHx8 CisJCQlpZiAodGFiLT5jb25zdHJhaW50cyAhPSBOSUwgfHwgdGFiLT52ZXJpZnlfbmV3X25vdG51 bGwgfHwKIAkJCQl0YWItPnBhcnRpdGlvbl9jb25zdHJhaW50ICE9IE5VTEwpCiAJCQkJQVRSZXdy aXRlVGFibGUodGFiLCBJbnZhbGlkT2lkLCBsb2NrbW9kZSk7CiAKQEAgLTQ1MzIsNyArNDUzMyw3 IEBAIEFUUmV3cml0ZVRhYmxlKEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgT2lkIE9JRE5ld0hlYXAs IExPQ0tNT0RFIGxvY2ttb2RlKQogCX0KIAogCW5vdG51bGxfYXR0cnMgPSBOSUw7Ci0JaWYgKG5l d3JlbCB8fCB0YWItPm5ld19ub3RudWxsKQorCWlmIChuZXdyZWwgfHwgdGFiLT52ZXJpZnlfbmV3 X25vdG51bGwpCiAJewogCQkvKgogCQkgKiBJZiB3ZSBhcmUgcmVidWlsZGluZyB0aGUgdHVwbGVz IE9SIGlmIHdlIGFkZGVkIGFueSBuZXcgTk9UIE5VTEwKQEAgLTU1NDUsNyArNTU0Niw3IEBAIEFU RXhlY0FkZENvbHVtbihMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0 aW9uIHJlbCwKIAkJICogbnVsbCwgYnV0IHNpbmNlIGl0J3MgZmlsbGVkIHNwZWNpYWxseSwgdGhl cmUncyBubyBuZWVkIHRvIHRlc3QKIAkJICogYW55dGhpbmcuKQogCQkgKi8KLQkJdGFiLT5uZXdf bm90bnVsbCB8PSBjb2xEZWYtPmlzX25vdF9udWxsOworCQl0YWItPnZlcmlmeV9uZXdfbm90bnVs bCB8PSBjb2xEZWYtPmlzX25vdF9udWxsOwogCX0KIAogCS8qCkBAIC01OTQ4LDggKzU5NDksMTcg QEAgQVRFeGVjU2V0Tm90TnVsbChBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwK IAogCQlDYXRhbG9nVHVwbGVVcGRhdGUoYXR0cl9yZWwsICZ0dXBsZS0+dF9zZWxmLCB0dXBsZSk7 CiAKLQkJLyogVGVsbCBQaGFzZSAzIGl0IG5lZWRzIHRvIHRlc3QgdGhlIGNvbnN0cmFpbnQgKi8K LQkJdGFiLT5uZXdfbm90bnVsbCA9IHRydWU7CisJCS8qCisJCSAqIFZlcmlmeWluZyB0YWJsZSBk YXRhIGNhbiBiZSBkb25lIGluIFBoYXNlIDMgd2l0aCBzaW5nbGUgdGFibGUgc2NhbgorCQkgKiBm b3IgYWxsIGNvbnN0cmFpbnQgKGJvdGggZXhpc3RpbmcgYW5kIG5ldykKKwkJICogV2UgY2FuIHNr aXAgdGhpcyBjaGVjayBvbmx5IGlmIGV2ZXJ5IG5ldyBOT1QgTlVMTCBjb250cmFpbnQKKwkJICog aW1wbGllZCBieSBleGlzdGVkIHRhYmxlIGNvbnN0cmFpbnRzCisJCSAqLworCQlpZiAoIU5vdE51 bGxJbXBsaWVkQnlSZWxDb25zdHJhaW50cyhyZWwsIChGb3JtX3BnX2F0dHJpYnV0ZSkgR0VUU1RS VUNUKHR1cGxlKSkpCisJCXsKKwkJCS8qIFRlbGwgUGhhc2UgMyBpdCBuZWVkcyB0byB0ZXN0IHRo ZSBjb25zdHJhaW50cyAqLworCQkJdGFiLT52ZXJpZnlfbmV3X25vdG51bGwgPSB0cnVlOworCQl9 CiAKIAkJT2JqZWN0QWRkcmVzc1N1YlNldChhZGRyZXNzLCBSZWxhdGlvblJlbGF0aW9uSWQsCiAJ CQkJCQkJUmVsYXRpb25HZXRSZWxpZChyZWwpLCBhdHRudW0pOwpAQCAtNTk2Niw2ICs1OTc2LDQ2 IEBAIEFURXhlY1NldE5vdE51bGwoQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBSZWxhdGlvbiByZWws CiB9CiAKIC8qCisgKiBOb3ROdWxsSW1wbGllZEJ5UmVsQ29uc3RyYWludHMKKyAqCQlEb2VzIHJl bCdzIGV4aXN0aW5nIGNvbnN0cmFpbnRzIGltcGx5IE5PVCBOVUxMIGZvciBnaXZlbiBhdHRyaWJ1 dGUKKyAqLworc3RhdGljIGJvb2wKK05vdE51bGxJbXBsaWVkQnlSZWxDb25zdHJhaW50cyhSZWxh dGlvbiByZWwsIEZvcm1fcGdfYXR0cmlidXRlIGF0dHIpCit7CisJTGlzdAkgICAqbm90TnVsbENv bnN0cmFpbnQgPSBOSUw7CisJTnVsbFRlc3QgICAqbm51bGx0ZXN0ID0gbWFrZU5vZGUoTnVsbFRl c3QpOworCisJbm51bGx0ZXN0LT5hcmcgPSAoRXhwciAqKSBtYWtlVmFyKDEsCisJCQkJCQkJCQkg IGF0dHItPmF0dG51bSwKKwkJCQkJCQkJCSAgYXR0ci0+YXR0dHlwaWQsCisJCQkJCQkJCQkgIGF0 dHItPmF0dHR5cG1vZCwKKwkJCQkJCQkJCSAgYXR0ci0+YXR0Y29sbGF0aW9uLAorCQkJCQkJCQkJ ICAwKTsKKwlubnVsbHRlc3QtPm51bGx0ZXN0dHlwZSA9IElTX05PVF9OVUxMOworCisJLyoKKwkg KiBzYW1lIHRoaW5nIGFzIGluIENvbnN0cmFpbnRJbXBsaWVkQnlSZWxDb25zdHJhaW50IGFyZ2lz cm93PWZhbHNlIGlzCisJICogY29ycmVjdCBldmVuIGZvciBhIGNvbXBvc2l0ZSBjb2x1bW4sIGJl Y2F1c2UgYXR0bm90bnVsbCBkb2VzIG5vdAorCSAqIHJlcHJlc2VudCBhIFNRTC1zcGVjIElTIE5P VCBOVUxMIHRlc3QgaW4gc3VjaCBhIGNhc2UsIGp1c3QgSVMgRElTVElOQ1QKKwkgKiBGUk9NIE5V TEwuCisJICovCisJbm51bGx0ZXN0LT5hcmdpc3JvdyA9IGZhbHNlOworCW5udWxsdGVzdC0+bG9j YXRpb24gPSAtMTsKKwlub3ROdWxsQ29uc3RyYWludCA9IGxhcHBlbmQobm90TnVsbENvbnN0cmFp bnQsIG5udWxsdGVzdCk7CisKKwlpZiAoQ29uc3RyYWludEltcGxpZWRCeVJlbENvbnN0cmFpbnQo cmVsLCBub3ROdWxsQ29uc3RyYWludCkpCisJeworCQllcmVwb3J0KERFQlVHMSwKKwkJCQkoZXJy bXNnKCJ2ZXJpZnlpbmcgdGFibGUgXCIlc1wiIE5PVCBOVUxMIGNvbnN0cmFpbnQgIgorCQkJCQkJ Im9uICVzIGF0dHJpYnV0ZSBieSBleGlzdGVkIGNvbnN0cmFpbnRzIiwKKwkJCQkJCVJlbGF0aW9u R2V0UmVsYXRpb25OYW1lKHJlbCksIE5hbWVTdHIoYXR0ci0+YXR0bmFtZSkpKSk7CisJCXJldHVy biB0cnVlOworCX0KKworCXJldHVybiBmYWxzZTsKK30KKworLyoKICAqIEFMVEVSIFRBQkxFIEFM VEVSIENPTFVNTiBTRVQvRFJPUCBERUZBVUxUCiAgKgogICogUmV0dXJuIHRoZSBhZGRyZXNzIG9m IHRoZSBhZmZlY3RlZCBjb2x1bW4uCkBAIC0xMzY1MCwxNiArMTM3MDAsMTUgQEAgQ29tcHV0ZVBh cnRpdGlvbkF0dHJzKFJlbGF0aW9uIHJlbCwgTGlzdCAqcGFydFBhcmFtcywgQXR0ck51bWJlciAq cGFydGF0dHJzLAogfQogCiAvKgotICogUGFydENvbnN0cmFpbnRJbXBsaWVkQnlSZWxDb25zdHJh aW50Ci0gKgkJRG8gc2NhbnJlbCdzIGV4aXN0aW5nIGNvbnN0cmFpbnRzIGltcGx5IHRoZSBwYXJ0 aXRpb24gY29uc3RyYWludD8KKyAqIENvbnN0cmFpbnRJbXBsaWVkQnlSZWxDb25zdHJhaW50Cisg KgkJRG8gc2NhbnJlbCdzIGV4aXN0aW5nIGNvbnN0cmFpbnRzIGltcGx5IGdpdmVuIGNvbnN0cmFp bnQ/CiAgKgogICogIkV4aXN0aW5nIGNvbnN0cmFpbnRzIiBpbmNsdWRlIGl0cyBjaGVjayBjb25z dHJhaW50cyBhbmQgY29sdW1uLWxldmVsCi0gKiBOT1QgTlVMTCBjb25zdHJhaW50cy4gIHBhcnRD b25zdHJhaW50IGRlc2NyaWJlcyB0aGUgcGFydGl0aW9uIGNvbnN0cmFpbnQsCisgKiBOT1QgTlVM TCBjb25zdHJhaW50cy4gIHRlc3RDb25zdHJhaW50IGRlc2NyaWJlcyB0aGUgY2hlY2tlZCBjb25z dHJhaW50LAogICogaW4gaW1wbGljaXQtQU5EIGZvcm0uCiAgKi8KIGJvb2wKLVBhcnRDb25zdHJh aW50SW1wbGllZEJ5UmVsQ29uc3RyYWludChSZWxhdGlvbiBzY2FucmVsLAotCQkJCQkJCQkJIExp c3QgKnBhcnRDb25zdHJhaW50KQorQ29uc3RyYWludEltcGxpZWRCeVJlbENvbnN0cmFpbnQoUmVs YXRpb24gc2NhbnJlbCwgTGlzdCAqdGVzdENvbnN0cmFpbnQpCiB7CiAJTGlzdAkgICAqZXhpc3RD b25zdHJhaW50ID0gTklMOwogCVR1cGxlQ29uc3RyICpjb25zdHIgPSBSZWxhdGlvbkdldERlc2Ny KHNjYW5yZWwpLT5jb25zdHI7CkBAIC0xMzcyOCwxMyArMTM3NzcsMTMgQEAgUGFydENvbnN0cmFp bnRJbXBsaWVkQnlSZWxDb25zdHJhaW50KFJlbGF0aW9uIHNjYW5yZWwsCiAJLyoKIAkgKiBUcnkg dG8gbWFrZSB0aGUgcHJvb2YuICBTaW5jZSB3ZSBhcmUgY29tcGFyaW5nIENIRUNLIGNvbnN0cmFp bnRzLCB3ZQogCSAqIG5lZWQgdG8gdXNlIHdlYWsgaW1wbGljYXRpb24sIGkuZS4sIHdlIGFzc3Vt ZSBleGlzdENvbnN0cmFpbnQgaXMKLQkgKiBub3QtZmFsc2UgYW5kIHRyeSB0byBwcm92ZSB0aGUg c2FtZSBmb3IgcGFydENvbnN0cmFpbnQuCisJICogbm90LWZhbHNlIGFuZCB0cnkgdG8gcHJvdmUg dGhlIHNhbWUgZm9yIHRlc3RDb25zdHJhaW50LgogCSAqCiAJICogTm90ZSB0aGF0IHByZWRpY2F0 ZV9pbXBsaWVkX2J5IGFzc3VtZXMgaXRzIGZpcnN0IGFyZ3VtZW50IGlzIGtub3duCi0JICogaW1t dXRhYmxlLiAgVGhhdCBzaG91bGQgYWx3YXlzIGJlIHRydWUgZm9yIHBhcnRpdGlvbiBjb25zdHJh aW50cywgc28gd2UKLQkgKiBkb24ndCB0ZXN0IGl0IGhlcmUuCisJICogaW1tdXRhYmxlLiAgVGhh dCBzaG91bGQgYWx3YXlzIGJlIHRydWUgZm9yIGJvdGggbm90IG51bGwgYW5kCisJICogcGFydGl0 aW9uIGNvbnN0cmFpbnRzLCBzbyB3ZSBkb24ndCB0ZXN0IGl0IGhlcmUuCiAJICovCi0JcmV0dXJu IHByZWRpY2F0ZV9pbXBsaWVkX2J5KHBhcnRDb25zdHJhaW50LCBleGlzdENvbnN0cmFpbnQsIHRy dWUpOworCXJldHVybiBwcmVkaWNhdGVfaW1wbGllZF9ieSh0ZXN0Q29uc3RyYWludCwgZXhpc3RD b25zdHJhaW50LCB0cnVlKTsKIH0KIAogLyoKQEAgLTEzNzYyLDcgKzEzODExLDcgQEAgVmFsaWRh dGVQYXJ0aXRpb25Db25zdHJhaW50cyhMaXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiBzY2FucmVsLAog CSAqIEJhc2VkIG9uIHRoZSB0YWJsZSdzIGV4aXN0aW5nIGNvbnN0cmFpbnRzLCBkZXRlcm1pbmUg aWYgd2UgY2FuIHNraXAKIAkgKiBzY2FubmluZyB0aGUgdGFibGUgdG8gdmFsaWRhdGUgdGhlIHBh cnRpdGlvbiBjb25zdHJhaW50LgogCSAqLwotCWlmIChQYXJ0Q29uc3RyYWludEltcGxpZWRCeVJl bENvbnN0cmFpbnQoc2NhbnJlbCwgcGFydENvbnN0cmFpbnQpKQorCWlmIChDb25zdHJhaW50SW1w bGllZEJ5UmVsQ29uc3RyYWludChzY2FucmVsLCBwYXJ0Q29uc3RyYWludCkpCiAJewogCQlpZiAo IXZhbGlkYXRlX2RlZmF1bHQpCiAJCQllcmVwb3J0KElORk8sCkBAIC0xMzgxNCw3ICsxMzg2Myw3 IEBAIFZhbGlkYXRlUGFydGl0aW9uQ29uc3RyYWludHMoTGlzdCAqKndxdWV1ZSwgUmVsYXRpb24g c2NhbnJlbCwKIAkJCQllbG9nKEVSUk9SLCAidW5leHBlY3RlZCB3aG9sZS1yb3cgcmVmZXJlbmNl IGZvdW5kIGluIHBhcnRpdGlvbiBrZXkiKTsKIAogCQkJLyogQ2FuIHdlIHNraXAgc2Nhbm5pbmcg dGhpcyBwYXJ0X3JlbD8gKi8KLQkJCWlmIChQYXJ0Q29uc3RyYWludEltcGxpZWRCeVJlbENvbnN0 cmFpbnQocGFydF9yZWwsIG15X3BhcnRjb25zdHIpKQorCQkJaWYgKENvbnN0cmFpbnRJbXBsaWVk QnlSZWxDb25zdHJhaW50KHBhcnRfcmVsLCBteV9wYXJ0Y29uc3RyKSkKIAkJCXsKIAkJCQlpZiAo IXZhbGlkYXRlX2RlZmF1bHQpCiAJCQkJCWVyZXBvcnQoSU5GTywKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL2NvbW1hbmRzL3RhYmxlY21kcy5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvdGFibGVj bWRzLmgKaW5kZXggMDZlNTE4MC4uOGUzZDBjMiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29t bWFuZHMvdGFibGVjbWRzLmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvdGFibGVjbWRzLmgK QEAgLTg4LDcgKzg4LDcgQEAgZXh0ZXJuIHZvaWQgUmFuZ2VWYXJDYWxsYmFja093bnNUYWJsZShj b25zdCBSYW5nZVZhciAqcmVsYXRpb24sCiAKIGV4dGVybiB2b2lkIFJhbmdlVmFyQ2FsbGJhY2tP d25zUmVsYXRpb24oY29uc3QgUmFuZ2VWYXIgKnJlbGF0aW9uLAogCQkJCQkJCSBPaWQgcmVsSWQs IE9pZCBvbGRSZWxJZCwgdm9pZCAqbm9DYXRhbG9ncyk7Ci1leHRlcm4gYm9vbCBQYXJ0Q29uc3Ry YWludEltcGxpZWRCeVJlbENvbnN0cmFpbnQoUmVsYXRpb24gc2NhbnJlbCwKLQkJCQkJCQkJCSBM aXN0ICpwYXJ0Q29uc3RyYWludCk7CitleHRlcm4gYm9vbCBDb25zdHJhaW50SW1wbGllZEJ5UmVs Q29uc3RyYWludChSZWxhdGlvbiBzY2FucmVsLAorCQkJCQkJCQkgTGlzdCAqdGVzdENvbnN0cmFp bnQpOwogCiAjZW5kaWYJCQkJCQkJLyogVEFCTEVDTURTX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvYWx0ZXJfdGFibGUub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9hbHRlcl90YWJsZS5vdXQKaW5kZXggY2NkMmMzOC4uMjE3YzIyZCAxMDA2NDQKLS0t IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9hbHRlcl90YWJsZS5vdXQKKysrIGIvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9hbHRlcl90YWJsZS5vdXQKQEAgLTEwMzgsNiArMTAzOCw0MSBA QCBhbHRlciB0YWJsZSBteXZpZXcgYWx0ZXIgY29sdW1uIHRlc3Qgc2V0IG5vdCBudWxsOwogRVJS T1I6ICAibXl2aWV3IiBpcyBub3QgYSB0YWJsZSBvciBmb3JlaWduIHRhYmxlCiBkcm9wIHZpZXcg bXl2aWV3OwogZHJvcCB0YWJsZSBhdGFjYzE7CistLSBzZXQgbm90IG51bGwgdmVyaWZpZWQgYnkg Y29uc3RyYWludHMKK2NyZWF0ZSB0YWJsZSBhdGFjYzEgKHRlc3RfYSBpbnQsIHRlc3RfYiBpbnQp OworaW5zZXJ0IGludG8gYXRhY2MxIHZhbHVlcyAobnVsbCwgMSk7CistLSBjb25zdHJhaW50IG5v dCBjb3ZlciBhbGwgdmFsdWVzLCBzaG91bGQgZmFpbAorYWx0ZXIgdGFibGUgYXRhY2MxIGFkZCBj b25zdHJhaW50IGF0YWNjMV9jb25zdHJfb3IgY2hlY2sodGVzdF9hIGlzIG5vdCBudWxsIG9yIHRl c3RfYiA8IDEwKTsKK2FsdGVyIHRhYmxlIGF0YWNjMSBhbHRlciB0ZXN0X2Egc2V0IG5vdCBudWxs OworRVJST1I6ICBjb2x1bW4gInRlc3RfYSIgY29udGFpbnMgbnVsbCB2YWx1ZXMKK2FsdGVyIHRh YmxlIGF0YWNjMSBkcm9wIGNvbnN0cmFpbnQgYXRhY2MxX2NvbnN0cl9vcjsKKy0tIG5vdCB2YWxp ZCBjb25zdHJhaW50LCBzaG91bGQgZmFpbAorYWx0ZXIgdGFibGUgYXRhY2MxIGFkZCBjb25zdHJh aW50IGF0YWNjMV9jb25zdHJfaW52YWxpZCBjaGVjayh0ZXN0X2EgaXMgbm90IG51bGwpIG5vdCB2 YWxpZDsKK2FsdGVyIHRhYmxlIGF0YWNjMSBhbHRlciB0ZXN0X2Egc2V0IG5vdCBudWxsOworRVJS T1I6ICBjb2x1bW4gInRlc3RfYSIgY29udGFpbnMgbnVsbCB2YWx1ZXMKK2FsdGVyIHRhYmxlIGF0 YWNjMSBkcm9wIGNvbnN0cmFpbnQgYXRhY2MxX2NvbnN0cl9pbnZhbGlkOworLS0gd2l0aCB2YWxp ZCBjb25zdHJhaW50Cit1cGRhdGUgYXRhY2MxIHNldCB0ZXN0X2EgPSAxOworYWx0ZXIgdGFibGUg YXRhY2MxIGFkZCBjb25zdHJhaW50IGF0YWNjMV9jb25zdHJfYV92YWxpZCBjaGVjayh0ZXN0X2Eg aXMgbm90IG51bGwpOworYWx0ZXIgdGFibGUgYXRhY2MxIGFsdGVyIHRlc3RfYSBzZXQgbm90IG51 bGw7CitkZWxldGUgZnJvbSBhdGFjYzE7CitpbnNlcnQgaW50byBhdGFjYzEgdmFsdWVzICgyLCBu dWxsKTsKK2FsdGVyIHRhYmxlIGF0YWNjMSBhbHRlciB0ZXN0X2EgZHJvcCBub3QgbnVsbDsKKy0t IHRlc3QgbXVsdGlwbGUgc2V0IG5vdCBudWxsIGF0IHNhbWUgdGltZQorLS0gdGVzdF9hIGNoZWNr ZWQgYnkgYXRhY2MxX2NvbnN0cl9hX3ZhbGlkLCB0ZXN0X2Igc2hvdWxkIGZhaWwgYnkgdGFibGUg c2NhbgorYWx0ZXIgdGFibGUgYXRhY2MxIGFsdGVyIHRlc3RfYSBzZXQgbm90IG51bGwsIGFsdGVy IHRlc3RfYiBzZXQgbm90IG51bGw7CitFUlJPUjogIGNvbHVtbiAidGVzdF9iIiBjb250YWlucyBu dWxsIHZhbHVlcworLS0gY29tbWFuZHMgb3JkZXIgaGFzIG5vIGltcG9ydGFuY2UKK2FsdGVyIHRh YmxlIGF0YWNjMSBhbHRlciB0ZXN0X2Igc2V0IG5vdCBudWxsLCBhbHRlciB0ZXN0X2Egc2V0IG5v dCBudWxsOworRVJST1I6ICBjb2x1bW4gInRlc3RfYiIgY29udGFpbnMgbnVsbCB2YWx1ZXMKKy0t IHZhbGlkIG9uZSBieSB0YWJsZSBzY2FuLCBvbmUgYnkgY2hlY2sgY29uc3RyYWludHMKK3VwZGF0 ZSBhdGFjYzEgc2V0IHRlc3RfYiA9IDE7CithbHRlciB0YWJsZSBhdGFjYzEgYWx0ZXIgdGVzdF9i IHNldCBub3QgbnVsbCwgYWx0ZXIgdGVzdF9hIHNldCBub3QgbnVsbDsKK2FsdGVyIHRhYmxlIGF0 YWNjMSBhbHRlciB0ZXN0X2EgZHJvcCBub3QgbnVsbCwgYWx0ZXIgdGVzdF9iIGRyb3Agbm90IG51 bGw7CistLSBib3RoIGNvbHVtbiBoYXMgY2hlY2sgY29uc3RyYWludHMKK2FsdGVyIHRhYmxlIGF0 YWNjMSBhZGQgY29uc3RyYWludCBhdGFjYzFfY29uc3RyX2JfdmFsaWQgY2hlY2sodGVzdF9iIGlz IG5vdCBudWxsKTsKK2FsdGVyIHRhYmxlIGF0YWNjMSBhbHRlciB0ZXN0X2Igc2V0IG5vdCBudWxs LCBhbHRlciB0ZXN0X2Egc2V0IG5vdCBudWxsOworZHJvcCB0YWJsZSBhdGFjYzE7CiAtLSB0ZXN0 IGluaGVyaXRhbmNlCiBjcmVhdGUgdGFibGUgcGFyZW50IChhIGludCk7CiBjcmVhdGUgdGFibGUg Y2hpbGQgKGIgdmFyY2hhcigyNTUpKSBpbmhlcml0cyAocGFyZW50KTsKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL2FsdGVyX3RhYmxlLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L2FsdGVyX3RhYmxlLnNxbAppbmRleCBiNzNmNTIzLi4wYWJhMGZiIDEwMDY0NAotLS0gYS9zcmMv dGVzdC9yZWdyZXNzL3NxbC9hbHRlcl90YWJsZS5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9z cWwvYWx0ZXJfdGFibGUuc3FsCkBAIC03OTgsNiArNzk4LDQxIEBAIGRyb3AgdmlldyBteXZpZXc7 CiAKIGRyb3AgdGFibGUgYXRhY2MxOwogCistLSBzZXQgbm90IG51bGwgdmVyaWZpZWQgYnkgY29u c3RyYWludHMKK2NyZWF0ZSB0YWJsZSBhdGFjYzEgKHRlc3RfYSBpbnQsIHRlc3RfYiBpbnQpOwor aW5zZXJ0IGludG8gYXRhY2MxIHZhbHVlcyAobnVsbCwgMSk7CistLSBjb25zdHJhaW50IG5vdCBj b3ZlciBhbGwgdmFsdWVzLCBzaG91bGQgZmFpbAorYWx0ZXIgdGFibGUgYXRhY2MxIGFkZCBjb25z dHJhaW50IGF0YWNjMV9jb25zdHJfb3IgY2hlY2sodGVzdF9hIGlzIG5vdCBudWxsIG9yIHRlc3Rf YiA8IDEwKTsKK2FsdGVyIHRhYmxlIGF0YWNjMSBhbHRlciB0ZXN0X2Egc2V0IG5vdCBudWxsOwor YWx0ZXIgdGFibGUgYXRhY2MxIGRyb3AgY29uc3RyYWludCBhdGFjYzFfY29uc3RyX29yOworLS0g bm90IHZhbGlkIGNvbnN0cmFpbnQsIHNob3VsZCBmYWlsCithbHRlciB0YWJsZSBhdGFjYzEgYWRk IGNvbnN0cmFpbnQgYXRhY2MxX2NvbnN0cl9pbnZhbGlkIGNoZWNrKHRlc3RfYSBpcyBub3QgbnVs bCkgbm90IHZhbGlkOworYWx0ZXIgdGFibGUgYXRhY2MxIGFsdGVyIHRlc3RfYSBzZXQgbm90IG51 bGw7CithbHRlciB0YWJsZSBhdGFjYzEgZHJvcCBjb25zdHJhaW50IGF0YWNjMV9jb25zdHJfaW52 YWxpZDsKKy0tIHdpdGggdmFsaWQgY29uc3RyYWludAordXBkYXRlIGF0YWNjMSBzZXQgdGVzdF9h ID0gMTsKK2FsdGVyIHRhYmxlIGF0YWNjMSBhZGQgY29uc3RyYWludCBhdGFjYzFfY29uc3RyX2Ff dmFsaWQgY2hlY2sodGVzdF9hIGlzIG5vdCBudWxsKTsKK2FsdGVyIHRhYmxlIGF0YWNjMSBhbHRl ciB0ZXN0X2Egc2V0IG5vdCBudWxsOworZGVsZXRlIGZyb20gYXRhY2MxOworCitpbnNlcnQgaW50 byBhdGFjYzEgdmFsdWVzICgyLCBudWxsKTsKK2FsdGVyIHRhYmxlIGF0YWNjMSBhbHRlciB0ZXN0 X2EgZHJvcCBub3QgbnVsbDsKKy0tIHRlc3QgbXVsdGlwbGUgc2V0IG5vdCBudWxsIGF0IHNhbWUg dGltZQorLS0gdGVzdF9hIGNoZWNrZWQgYnkgYXRhY2MxX2NvbnN0cl9hX3ZhbGlkLCB0ZXN0X2Ig c2hvdWxkIGZhaWwgYnkgdGFibGUgc2NhbgorYWx0ZXIgdGFibGUgYXRhY2MxIGFsdGVyIHRlc3Rf YSBzZXQgbm90IG51bGwsIGFsdGVyIHRlc3RfYiBzZXQgbm90IG51bGw7CistLSBjb21tYW5kcyBv cmRlciBoYXMgbm8gaW1wb3J0YW5jZQorYWx0ZXIgdGFibGUgYXRhY2MxIGFsdGVyIHRlc3RfYiBz ZXQgbm90IG51bGwsIGFsdGVyIHRlc3RfYSBzZXQgbm90IG51bGw7CisKKy0tIHZhbGlkIG9uZSBi eSB0YWJsZSBzY2FuLCBvbmUgYnkgY2hlY2sgY29uc3RyYWludHMKK3VwZGF0ZSBhdGFjYzEgc2V0 IHRlc3RfYiA9IDE7CithbHRlciB0YWJsZSBhdGFjYzEgYWx0ZXIgdGVzdF9iIHNldCBub3QgbnVs bCwgYWx0ZXIgdGVzdF9hIHNldCBub3QgbnVsbDsKKworYWx0ZXIgdGFibGUgYXRhY2MxIGFsdGVy IHRlc3RfYSBkcm9wIG5vdCBudWxsLCBhbHRlciB0ZXN0X2IgZHJvcCBub3QgbnVsbDsKKy0tIGJv dGggY29sdW1uIGhhcyBjaGVjayBjb25zdHJhaW50cworYWx0ZXIgdGFibGUgYXRhY2MxIGFkZCBj b25zdHJhaW50IGF0YWNjMV9jb25zdHJfYl92YWxpZCBjaGVjayh0ZXN0X2IgaXMgbm90IG51bGwp OworYWx0ZXIgdGFibGUgYXRhY2MxIGFsdGVyIHRlc3RfYiBzZXQgbm90IG51bGwsIGFsdGVyIHRl c3RfYSBzZXQgbm90IG51bGw7Citkcm9wIHRhYmxlIGF0YWNjMTsKKwogLS0gdGVzdCBpbmhlcml0 YW5jZQogY3JlYXRlIHRhYmxlIHBhcmVudCAoYSBpbnQpOwogY3JlYXRlIHRhYmxlIGNoaWxkIChi IHZhcmNoYXIoMjU1KSkgaW5oZXJpdHMgKHBhcmVudCk7Cg== ------==--bound.537633.web1j.yandex.ru--