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 1f6KuX-0007UY-5j for pgsql-hackers@arkaria.postgresql.org; Wed, 11 Apr 2018 18:56:01 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1f6KuV-0007Bj-IH for pgsql-hackers@arkaria.postgresql.org; Wed, 11 Apr 2018 18:55: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.89) (envelope-from ) id 1f6KuV-00079v-07 for pgsql-hackers@lists.postgresql.org; Wed, 11 Apr 2018 18:55:59 +0000 Received: from forward1j.cmail.yandex.net ([2a02:6b8:0:1630::14]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1f6KuQ-0007vN-7Q for pgsql-hackers@postgresql.org; Wed, 11 Apr 2018 18:55:57 +0000 Received: from mxback6g.mail.yandex.net (mxback6g.mail.yandex.net [IPv6:2a02:6b8:0:1472:2741:0:8b7:167]) by forward1j.cmail.yandex.net (Yandex) with ESMTP id B6FE921821; Wed, 11 Apr 2018 21:55:48 +0300 (MSK) Received: from localhost (localhost [::1]) by mxback6g.mail.yandex.net (nwsmtp/Yandex) with ESMTP id HD2mPVQmVc-tkBeljFx; Wed, 11 Apr 2018 21:55:47 +0300 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=zsrv.org; s=mail; t=1523472947; bh=gCbCa103XaygR3O742PqECXZdUjSTXcHCg3EHqy7nWs=; h=From:To:Cc:In-Reply-To:References:Subject:Message-Id:Date; b=V3YmKPco7INGOugeB6ZSbmCxLCkZ21yyCOIDJ8Y6mt0Lb6rqIOMUQ3ynLjZI6/OsJ jxwlQUFSG5KSonmzNd+6oshoeoxLbhW4i2UQABEoF+6+KMvfBD7hzKEkuI7hIubHLy EOyPNAqDHWxNGG1ScxqRRXQVzkP6R+VRUSHdS3+A= Authentication-Results: mxback6g.mail.yandex.net; dkim=pass header.i=@zsrv.org Received: by web58j.yandex.ru with HTTP; Wed, 11 Apr 2018 21:55:46 +0300 From: Sergei Kornilov To: PostgreSQL mailing lists Cc: Alvaro Herrera , Stephen Frost , Robert Haas , Ildar Musin , Tom Lane In-Reply-To: <979461523301587@web39j.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> Subject: Re: using index or check in ALTER TABLE SET NOT NULL MIME-Version: 1.0 Message-Id: <247201523472946@web58j.yandex.ru> X-Mailer: Yamail [ http://yandex.ru ] 5.0 Date: Wed, 11 Apr 2018 21:55:46 +0300 Content-Type: multipart/mixed; boundary="----==--bound.24721.web58j.yandex.ru" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk ------==--bound.24721.web58j.yandex.ru Content-Transfer-Encoding: 7bit Content-Type: text/plain Hi I noticed new merge conflict, updated version attached. regards, Sergei ------==--bound.24721.web58j.yandex.ru Content-Disposition: attachment; filename="alter_table_set_not_null_by_constraints_only_v9.patch" Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name="alter_table_set_not_null_by_constraints_only_v9.patch" ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfdGFibGUuc2dtbCBiL2RvYy9zcmMv c2dtbC9yZWYvYWx0ZXJfdGFibGUuc2dtbAppbmRleCBiZDIyNjI3Li5kYjk4YTk4IDEwMDY0NAot LS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3RhYmxlLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21s L3JlZi9hbHRlcl90YWJsZS5zZ21sCkBAIC0yMTUsOCArMjE1LDE1IEBAIFdJVEggKCBNT0RVTFVT IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1lcmljX2xpdGVyYWw8L3JlcGxhY2Vh YmxlPiwgUkVNCiAgICAgPGxpc3RpdGVtPgogICAgICA8cGFyYT4KICAgICAgIFRoZXNlIGZvcm1z IGNoYW5nZSB3aGV0aGVyIGEgY29sdW1uIGlzIG1hcmtlZCB0byBhbGxvdyBudWxsCi0gICAgICB2 YWx1ZXMgb3IgdG8gcmVqZWN0IG51bGwgdmFsdWVzLiAgWW91IGNhbiBvbmx5IHVzZSA8bGl0ZXJh bD5TRVQKLSAgICAgIE5PVCBOVUxMPC9saXRlcmFsPiB3aGVuIHRoZSBjb2x1bW4gY29udGFpbnMg bm8gbnVsbCB2YWx1ZXMuCisgICAgICB2YWx1ZXMgb3IgdG8gcmVqZWN0IG51bGwgdmFsdWVzLgor ICAgICA8L3BhcmE+CisKKyAgICAgPHBhcmE+CisgICAgICBZb3UgY2FuIG9ubHkgdXNlIDxsaXRl cmFsPlNFVCBOT1QgTlVMTDwvbGl0ZXJhbD4gd2hlbiB0aGUgY29sdW1uIAorICAgICAgY29udGFp bnMgbm8gbnVsbCB2YWx1ZXMuIEZ1bGwgdGFibGUgc2NhbiBpcyBwZXJmb3JtZWQgdG8gY2hlY2sg CisgICAgICB0aGlzIGNvbmRpdGlvbiB1bmxlc3MgdGhlcmUgYXJlIHZhbGlkIDxsaXRlcmFsPkNI RUNLPC9saXRlcmFsPiAKKyAgICAgIGNvbnN0cmFpbnRzIHRoYXQgcHJvaGliaXQgTlVMTCB2YWx1 ZXMgZm9yIHNwZWNpZmllZCBjb2x1bW4uCisgICAgICBJbiB0aGUgbGF0dGVyIGNhc2UgdGFibGUg c2NhbiBpcyBza2lwcGVkLgogICAgICA8L3BhcmE+CiAKICAgICAgPHBhcmE+CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9jYXRhbG9nL3BhcnRpdGlvbi5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9w YXJ0aXRpb24uYwppbmRleCAwZjU5MzJmLi42ZmQzNjYzIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9jYXRhbG9nL3BhcnRpdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGFydGl0aW9u LmMKQEAgLTExNTMsNyArMTE1Myw3IEBAIGNoZWNrX2RlZmF1bHRfYWxsb3dzX2JvdW5kKFJlbGF0 aW9uIHBhcmVudCwgUmVsYXRpb24gZGVmYXVsdF9yZWwsCiAJICogbm90IGNvbnRhaW4gYW55IHJv dyB0aGF0IHdvdWxkIGJlbG9uZyB0byB0aGUgbmV3IHBhcnRpdGlvbiwgd2UgY2FuCiAJICogYXZv aWQgc2Nhbm5pbmcgdGhlIGRlZmF1bHQgcGFydGl0aW9uLgogCSAqLwotCWlmIChQYXJ0Q29uc3Ry YWludEltcGxpZWRCeVJlbENvbnN0cmFpbnQoZGVmYXVsdF9yZWwsIGRlZl9wYXJ0X2NvbnN0cmFp bnRzKSkKKwlpZiAoQ29uc3RyYWludEltcGxpZWRCeVJlbENvbnN0cmFpbnQoZGVmYXVsdF9yZWws IGRlZl9wYXJ0X2NvbnN0cmFpbnRzKSkKIAl7CiAJCWVyZXBvcnQoSU5GTywKIAkJCQkoZXJybXNn KCJ1cGRhdGVkIHBhcnRpdGlvbiBjb25zdHJhaW50IGZvciBkZWZhdWx0IHBhcnRpdGlvbiBcIiVz XCIgaXMgaW1wbGllZCBieSBleGlzdGluZyBjb25zdHJhaW50cyIsCkBAIC0xMTk3LDggKzExOTcs OCBAQCBjaGVja19kZWZhdWx0X2FsbG93c19ib3VuZChSZWxhdGlvbiBwYXJlbnQsIFJlbGF0aW9u IGRlZmF1bHRfcmVsLAogCQkJICogdGhhdCBpdCB3aWxsIG5vdCBjb250YWluIGFueSByb3cgdGhh dCB3b3VsZCBiZWxvbmcgdG8gdGhlIG5ldwogCQkJICogcGFydGl0aW9uLCB3ZSBjYW4gYXZvaWQg c2Nhbm5pbmcgdGhlIGNoaWxkIHRhYmxlLgogCQkJICovCi0JCQlpZiAoUGFydENvbnN0cmFpbnRJ bXBsaWVkQnlSZWxDb25zdHJhaW50KHBhcnRfcmVsLAotCQkJCQkJCQkJCQkJCSBkZWZfcGFydF9j b25zdHJhaW50cykpCisJCQlpZiAoQ29uc3RyYWludEltcGxpZWRCeVJlbENvbnN0cmFpbnQocGFy dF9yZWwsCisJCQkJCQkJCQkJCQkgZGVmX3BhcnRfY29uc3RyYWludHMpKQogCQkJewogCQkJCWVy ZXBvcnQoSU5GTywKIAkJCQkJCShlcnJtc2coInVwZGF0ZWQgcGFydGl0aW9uIGNvbnN0cmFpbnQg Zm9yIGRlZmF1bHQgcGFydGl0aW9uIFwiJXNcIiBpcyBpbXBsaWVkIGJ5IGV4aXN0aW5nIGNvbnN0 cmFpbnRzIiwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKaW5kZXggZjgxMDg4NS4uZTEwZWRiMSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKKysrIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKQEAgLTE2MCw3ICsxNjAsNyBAQCB0eXBlZGVmIHN0 cnVjdCBBbHRlcmVkVGFibGVJbmZvCiAJLyogSW5mb3JtYXRpb24gc2F2ZWQgYnkgUGhhc2VzIDEv MiBmb3IgUGhhc2UgMzogKi8KIAlMaXN0CSAgICpjb25zdHJhaW50czsJLyogTGlzdCBvZiBOZXdD b25zdHJhaW50ICovCiAJTGlzdAkgICAqbmV3dmFsczsJCS8qIExpc3Qgb2YgTmV3Q29sdW1uVmFs dWUgKi8KLQlib29sCQluZXdfbm90bnVsbDsJLyogVCBpZiB3ZSBhZGRlZCBuZXcgTk9UIE5VTEwg Y29uc3RyYWludHMgKi8KKwlib29sCQl2ZXJpZnlfbmV3X25vdG51bGw7IC8qIFQgaWYgd2Ugc2hv dWxkIHJlY2hlY2sgTk9UIE5VTEwgKi8KIAlpbnQJCQlyZXdyaXRlOwkJLyogUmVhc29uIGZvciBm b3JjZWQgcmV3cml0ZSwgaWYgYW55ICovCiAJT2lkCQkJbmV3VGFibGVTcGFjZTsJLyogbmV3IHRh Ymxlc3BhY2U7IDAgbWVhbnMgbm8gY2hhbmdlICovCiAJYm9vbAkJY2hnUGVyc2lzdGVuY2U7IC8q IFQgaWYgU0VUIExPR0dFRC9VTkxPR0dFRCBpcyB1c2VkICovCkBAIC0zNzIsNiArMzcyLDcgQEAg c3RhdGljIE9iamVjdEFkZHJlc3MgQVRFeGVjRHJvcE5vdE51bGwoUmVsYXRpb24gcmVsLCBjb25z dCBjaGFyICpjb2xOYW1lLCBMT0NLTU8KIHN0YXRpYyB2b2lkIEFUUHJlcFNldE5vdE51bGwoUmVs YXRpb24gcmVsLCBib29sIHJlY3Vyc2UsIGJvb2wgcmVjdXJzaW5nKTsKIHN0YXRpYyBPYmplY3RB ZGRyZXNzIEFURXhlY1NldE5vdE51bGwoQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBSZWxhdGlvbiBy ZWwsCiAJCQkJIGNvbnN0IGNoYXIgKmNvbE5hbWUsIExPQ0tNT0RFIGxvY2ttb2RlKTsKK3N0YXRp YyBib29sIE5vdE51bGxJbXBsaWVkQnlSZWxDb25zdHJhaW50cyhSZWxhdGlvbiByZWwsIEZvcm1f cGdfYXR0cmlidXRlIGF0dHIpOwogc3RhdGljIE9iamVjdEFkZHJlc3MgQVRFeGVjQ29sdW1uRGVm YXVsdChSZWxhdGlvbiByZWwsIGNvbnN0IGNoYXIgKmNvbE5hbWUsCiAJCQkJCU5vZGUgKm5ld0Rl ZmF1bHQsIExPQ0tNT0RFIGxvY2ttb2RlKTsKIHN0YXRpYyBPYmplY3RBZGRyZXNzIEFURXhlY0Fk ZElkZW50aXR5KFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqY29sTmFtZSwKQEAgLTQ0NjEsNyAr NDQ2Miw3IEBAIEFUUmV3cml0ZVRhYmxlcyhBbHRlclRhYmxlU3RtdCAqcGFyc2V0cmVlLCBMaXN0 ICoqd3F1ZXVlLCBMT0NLTU9ERSBsb2NrbW9kZSkKIAkJCSAqIFRlc3QgdGhlIGN1cnJlbnQgZGF0 YSB3aXRoaW4gdGhlIHRhYmxlIGFnYWluc3QgbmV3IGNvbnN0cmFpbnRzCiAJCQkgKiBnZW5lcmF0 ZWQgYnkgQUxURVIgVEFCTEUgY29tbWFuZHMsIGJ1dCBkb24ndCByZWJ1aWxkIGRhdGEuCiAJCQkg Ki8KLQkJCWlmICh0YWItPmNvbnN0cmFpbnRzICE9IE5JTCB8fCB0YWItPm5ld19ub3RudWxsIHx8 CisJCQlpZiAodGFiLT5jb25zdHJhaW50cyAhPSBOSUwgfHwgdGFiLT52ZXJpZnlfbmV3X25vdG51 bGwgfHwKIAkJCQl0YWItPnBhcnRpdGlvbl9jb25zdHJhaW50ICE9IE5VTEwpCiAJCQkJQVRSZXdy aXRlVGFibGUodGFiLCBJbnZhbGlkT2lkLCBsb2NrbW9kZSk7CiAKQEAgLTQ2MjIsNyArNDYyMyw3 IEBAIEFUUmV3cml0ZVRhYmxlKEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgT2lkIE9JRE5ld0hlYXAs IExPQ0tNT0RFIGxvY2ttb2RlKQogCX0KIAogCW5vdG51bGxfYXR0cnMgPSBOSUw7Ci0JaWYgKG5l d3JlbCB8fCB0YWItPm5ld19ub3RudWxsKQorCWlmIChuZXdyZWwgfHwgdGFiLT52ZXJpZnlfbmV3 X25vdG51bGwpCiAJewogCQkvKgogCQkgKiBJZiB3ZSBhcmUgcmVidWlsZGluZyB0aGUgdHVwbGVz IE9SIGlmIHdlIGFkZGVkIGFueSBuZXcgTk9UIE5VTEwKQEAgLTU2NTcsNyArNTY1OCw3IEBAIEFU RXhlY0FkZENvbHVtbihMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0 aW9uIHJlbCwKIAkJCSAqIGFuIE9JRCBjb2x1bW4uICBPSUQgd2lsbCBiZSBtYXJrZWQgbm90IG51 bGwsIGJ1dCBzaW5jZSBpdCdzCiAJCQkgKiBmaWxsZWQgc3BlY2lhbGx5LCB0aGVyZSdzIG5vIG5l ZWQgdG8gdGVzdCBhbnl0aGluZy4pCiAJCQkgKi8KLQkJCXRhYi0+bmV3X25vdG51bGwgfD0gY29s RGVmLT5pc19ub3RfbnVsbDsKKwkJCXRhYi0+dmVyaWZ5X25ld19ub3RudWxsIHw9IGNvbERlZi0+ aXNfbm90X251bGw7CiAJCX0KIAl9CiAKQEAgLTYwNjEsOCArNjA2MiwxNyBAQCBBVEV4ZWNTZXRO b3ROdWxsKEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVsLAogCiAJCUNhdGFsb2dU dXBsZVVwZGF0ZShhdHRyX3JlbCwgJnR1cGxlLT50X3NlbGYsIHR1cGxlKTsKIAotCQkvKiBUZWxs IFBoYXNlIDMgaXQgbmVlZHMgdG8gdGVzdCB0aGUgY29uc3RyYWludCAqLwotCQl0YWItPm5ld19u b3RudWxsID0gdHJ1ZTsKKwkJLyoKKwkJICogVmVyaWZ5aW5nIHRhYmxlIGRhdGEgY2FuIGJlIGRv bmUgaW4gUGhhc2UgMyB3aXRoIHNpbmdsZSB0YWJsZSBzY2FuCisJCSAqIGZvciBhbGwgY29uc3Ry YWludCAoYm90aCBleGlzdGluZyBhbmQgbmV3KQorCQkgKiBXZSBjYW4gc2tpcCB0aGlzIGNoZWNr IG9ubHkgaWYgZXZlcnkgbmV3IE5PVCBOVUxMIGNvbnRyYWludAorCQkgKiBpbXBsaWVkIGJ5IGV4 aXN0ZWQgdGFibGUgY29uc3RyYWludHMKKwkJICovCisJCWlmICghTm90TnVsbEltcGxpZWRCeVJl bENvbnN0cmFpbnRzKHJlbCwgKEZvcm1fcGdfYXR0cmlidXRlKSBHRVRTVFJVQ1QodHVwbGUpKSkK KwkJeworCQkJLyogVGVsbCBQaGFzZSAzIGl0IG5lZWRzIHRvIHRlc3QgdGhlIGNvbnN0cmFpbnRz ICovCisJCQl0YWItPnZlcmlmeV9uZXdfbm90bnVsbCA9IHRydWU7CisJCX0KIAogCQlPYmplY3RB ZGRyZXNzU3ViU2V0KGFkZHJlc3MsIFJlbGF0aW9uUmVsYXRpb25JZCwKIAkJCQkJCQlSZWxhdGlv bkdldFJlbGlkKHJlbCksIGF0dG51bSk7CkBAIC02MDc5LDYgKzYwODksNDYgQEAgQVRFeGVjU2V0 Tm90TnVsbChBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKIH0KIAogLyoKKyAq IE5vdE51bGxJbXBsaWVkQnlSZWxDb25zdHJhaW50cworICoJCURvZXMgcmVsJ3MgZXhpc3Rpbmcg Y29uc3RyYWludHMgaW1wbHkgTk9UIE5VTEwgZm9yIGdpdmVuIGF0dHJpYnV0ZQorICovCitzdGF0 aWMgYm9vbAorTm90TnVsbEltcGxpZWRCeVJlbENvbnN0cmFpbnRzKFJlbGF0aW9uIHJlbCwgRm9y bV9wZ19hdHRyaWJ1dGUgYXR0cikKK3sKKwlMaXN0CSAgICpub3ROdWxsQ29uc3RyYWludCA9IE5J TDsKKwlOdWxsVGVzdCAgICpubnVsbHRlc3QgPSBtYWtlTm9kZShOdWxsVGVzdCk7CisKKwlubnVs bHRlc3QtPmFyZyA9IChFeHByICopIG1ha2VWYXIoMSwKKwkJCQkJCQkJCSAgYXR0ci0+YXR0bnVt LAorCQkJCQkJCQkJICBhdHRyLT5hdHR0eXBpZCwKKwkJCQkJCQkJCSAgYXR0ci0+YXR0dHlwbW9k LAorCQkJCQkJCQkJICBhdHRyLT5hdHRjb2xsYXRpb24sCisJCQkJCQkJCQkgIDApOworCW5udWxs dGVzdC0+bnVsbHRlc3R0eXBlID0gSVNfTk9UX05VTEw7CisKKwkvKgorCSAqIHNhbWUgdGhpbmcg YXMgaW4gQ29uc3RyYWludEltcGxpZWRCeVJlbENvbnN0cmFpbnQgYXJnaXNyb3c9ZmFsc2UgaXMK KwkgKiBjb3JyZWN0IGV2ZW4gZm9yIGEgY29tcG9zaXRlIGNvbHVtbiwgYmVjYXVzZSBhdHRub3Ru dWxsIGRvZXMgbm90CisJICogcmVwcmVzZW50IGEgU1FMLXNwZWMgSVMgTk9UIE5VTEwgdGVzdCBp biBzdWNoIGEgY2FzZSwganVzdCBJUyBESVNUSU5DVAorCSAqIEZST00gTlVMTC4KKwkgKi8KKwlu bnVsbHRlc3QtPmFyZ2lzcm93ID0gZmFsc2U7CisJbm51bGx0ZXN0LT5sb2NhdGlvbiA9IC0xOwor CW5vdE51bGxDb25zdHJhaW50ID0gbGFwcGVuZChub3ROdWxsQ29uc3RyYWludCwgbm51bGx0ZXN0 KTsKKworCWlmIChDb25zdHJhaW50SW1wbGllZEJ5UmVsQ29uc3RyYWludChyZWwsIG5vdE51bGxD b25zdHJhaW50KSkKKwl7CisJCWVyZXBvcnQoREVCVUcxLAorCQkJCShlcnJtc2coInZlcmlmeWlu ZyB0YWJsZSBcIiVzXCIgTk9UIE5VTEwgY29uc3RyYWludCAiCisJCQkJCQkib24gJXMgYXR0cmli dXRlIGJ5IGV4aXN0ZWQgY29uc3RyYWludHMiLAorCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5h bWUocmVsKSwgTmFtZVN0cihhdHRyLT5hdHRuYW1lKSkpKTsKKwkJcmV0dXJuIHRydWU7CisJfQor CisJcmV0dXJuIGZhbHNlOworfQorCisvKgogICogQUxURVIgVEFCTEUgQUxURVIgQ09MVU1OIFNF VC9EUk9QIERFRkFVTFQKICAqCiAgKiBSZXR1cm4gdGhlIGFkZHJlc3Mgb2YgdGhlIGFmZmVjdGVk IGNvbHVtbi4KQEAgLTEzODUwLDE2ICsxMzkwMCwxNSBAQCBDb21wdXRlUGFydGl0aW9uQXR0cnMo UmVsYXRpb24gcmVsLCBMaXN0ICpwYXJ0UGFyYW1zLCBBdHRyTnVtYmVyICpwYXJ0YXR0cnMsCiB9 CiAKIC8qCi0gKiBQYXJ0Q29uc3RyYWludEltcGxpZWRCeVJlbENvbnN0cmFpbnQKLSAqCQlEbyBz Y2FucmVsJ3MgZXhpc3RpbmcgY29uc3RyYWludHMgaW1wbHkgdGhlIHBhcnRpdGlvbiBjb25zdHJh aW50PworICogQ29uc3RyYWludEltcGxpZWRCeVJlbENvbnN0cmFpbnQKKyAqCQlEbyBzY2FucmVs J3MgZXhpc3RpbmcgY29uc3RyYWludHMgaW1wbHkgZ2l2ZW4gY29uc3RyYWludD8KICAqCiAgKiAi RXhpc3RpbmcgY29uc3RyYWludHMiIGluY2x1ZGUgaXRzIGNoZWNrIGNvbnN0cmFpbnRzIGFuZCBj b2x1bW4tbGV2ZWwKLSAqIE5PVCBOVUxMIGNvbnN0cmFpbnRzLiAgcGFydENvbnN0cmFpbnQgZGVz Y3JpYmVzIHRoZSBwYXJ0aXRpb24gY29uc3RyYWludCwKKyAqIE5PVCBOVUxMIGNvbnN0cmFpbnRz LiAgdGVzdENvbnN0cmFpbnQgZGVzY3JpYmVzIHRoZSBjaGVja2VkIGNvbnN0cmFpbnQsCiAgKiBp biBpbXBsaWNpdC1BTkQgZm9ybS4KICAqLwogYm9vbAotUGFydENvbnN0cmFpbnRJbXBsaWVkQnlS ZWxDb25zdHJhaW50KFJlbGF0aW9uIHNjYW5yZWwsCi0JCQkJCQkJCQkgTGlzdCAqcGFydENvbnN0 cmFpbnQpCitDb25zdHJhaW50SW1wbGllZEJ5UmVsQ29uc3RyYWludChSZWxhdGlvbiBzY2FucmVs LCBMaXN0ICp0ZXN0Q29uc3RyYWludCkKIHsKIAlMaXN0CSAgICpleGlzdENvbnN0cmFpbnQgPSBO SUw7CiAJVHVwbGVDb25zdHIgKmNvbnN0ciA9IFJlbGF0aW9uR2V0RGVzY3Ioc2NhbnJlbCktPmNv bnN0cjsKQEAgLTEzOTI4LDEzICsxMzk3NywxMyBAQCBQYXJ0Q29uc3RyYWludEltcGxpZWRCeVJl bENvbnN0cmFpbnQoUmVsYXRpb24gc2NhbnJlbCwKIAkvKgogCSAqIFRyeSB0byBtYWtlIHRoZSBw cm9vZi4gIFNpbmNlIHdlIGFyZSBjb21wYXJpbmcgQ0hFQ0sgY29uc3RyYWludHMsIHdlCiAJICog bmVlZCB0byB1c2Ugd2VhayBpbXBsaWNhdGlvbiwgaS5lLiwgd2UgYXNzdW1lIGV4aXN0Q29uc3Ry YWludCBpcwotCSAqIG5vdC1mYWxzZSBhbmQgdHJ5IHRvIHByb3ZlIHRoZSBzYW1lIGZvciBwYXJ0 Q29uc3RyYWludC4KKwkgKiBub3QtZmFsc2UgYW5kIHRyeSB0byBwcm92ZSB0aGUgc2FtZSBmb3Ig dGVzdENvbnN0cmFpbnQuCiAJICoKIAkgKiBOb3RlIHRoYXQgcHJlZGljYXRlX2ltcGxpZWRfYnkg YXNzdW1lcyBpdHMgZmlyc3QgYXJndW1lbnQgaXMga25vd24KLQkgKiBpbW11dGFibGUuICBUaGF0 IHNob3VsZCBhbHdheXMgYmUgdHJ1ZSBmb3IgcGFydGl0aW9uIGNvbnN0cmFpbnRzLCBzbyB3ZQot CSAqIGRvbid0IHRlc3QgaXQgaGVyZS4KKwkgKiBpbW11dGFibGUuICBUaGF0IHNob3VsZCBhbHdh eXMgYmUgdHJ1ZSBmb3IgYm90aCBub3QgbnVsbCBhbmQKKwkgKiBwYXJ0aXRpb24gY29uc3RyYWlu dHMsIHNvIHdlIGRvbid0IHRlc3QgaXQgaGVyZS4KIAkgKi8KLQlyZXR1cm4gcHJlZGljYXRlX2lt cGxpZWRfYnkocGFydENvbnN0cmFpbnQsIGV4aXN0Q29uc3RyYWludCwgdHJ1ZSk7CisJcmV0dXJu IHByZWRpY2F0ZV9pbXBsaWVkX2J5KHRlc3RDb25zdHJhaW50LCBleGlzdENvbnN0cmFpbnQsIHRy dWUpOwogfQogCiAvKgpAQCAtMTM5NTYsNyArMTQwMDUsNyBAQCBRdWV1ZVBhcnRpdGlvbkNvbnN0 cmFpbnRWYWxpZGF0aW9uKExpc3QgKip3cXVldWUsIFJlbGF0aW9uIHNjYW5yZWwsCiAJICogQmFz ZWQgb24gdGhlIHRhYmxlJ3MgZXhpc3RpbmcgY29uc3RyYWludHMsIGRldGVybWluZSB3aGV0aGVy IG9yIG5vdCB3ZQogCSAqIG1heSBza2lwIHNjYW5uaW5nIHRoZSB0YWJsZS4KIAkgKi8KLQlpZiAo UGFydENvbnN0cmFpbnRJbXBsaWVkQnlSZWxDb25zdHJhaW50KHNjYW5yZWwsIHBhcnRDb25zdHJh aW50KSkKKwlpZiAoQ29uc3RyYWludEltcGxpZWRCeVJlbENvbnN0cmFpbnQoc2NhbnJlbCwgcGFy dENvbnN0cmFpbnQpKQogCXsKIAkJaWYgKCF2YWxpZGF0ZV9kZWZhdWx0KQogCQkJZXJlcG9ydChJ TkZPLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvdGFibGVjbWRzLmggYi9zcmMv aW5jbHVkZS9jb21tYW5kcy90YWJsZWNtZHMuaAppbmRleCA3MGVlM2RhLi4xZjAzYjkyIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy90YWJsZWNtZHMuaAorKysgYi9zcmMvaW5jbHVk ZS9jb21tYW5kcy90YWJsZWNtZHMuaApAQCAtOTQsNyArOTQsNyBAQCBleHRlcm4gdm9pZCBSYW5n ZVZhckNhbGxiYWNrT3duc1RhYmxlKGNvbnN0IFJhbmdlVmFyICpyZWxhdGlvbiwKIAogZXh0ZXJu IHZvaWQgUmFuZ2VWYXJDYWxsYmFja093bnNSZWxhdGlvbihjb25zdCBSYW5nZVZhciAqcmVsYXRp b24sCiAJCQkJCQkJIE9pZCByZWxJZCwgT2lkIG9sZFJlbElkLCB2b2lkICpub0NhdGFsb2dzKTsK LWV4dGVybiBib29sIFBhcnRDb25zdHJhaW50SW1wbGllZEJ5UmVsQ29uc3RyYWludChSZWxhdGlv biBzY2FucmVsLAotCQkJCQkJCQkJIExpc3QgKnBhcnRDb25zdHJhaW50KTsKK2V4dGVybiBib29s IENvbnN0cmFpbnRJbXBsaWVkQnlSZWxDb25zdHJhaW50KFJlbGF0aW9uIHNjYW5yZWwsCisJCQkJ CQkJCSBMaXN0ICp0ZXN0Q29uc3RyYWludCk7CiAKICNlbmRpZgkJCQkJCQkvKiBUQUJMRUNNRFNf SCAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9hbHRlcl90YWJsZS5v dXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2FsdGVyX3RhYmxlLm91dAppbmRleCA2Mzg0 NTkxLi43NmNlZDNiIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2FsdGVy X3RhYmxlLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2FsdGVyX3RhYmxlLm91 dApAQCAtMTAzOCw2ICsxMDM4LDQxIEBAIGFsdGVyIHRhYmxlIG15dmlldyBhbHRlciBjb2x1bW4g dGVzdCBzZXQgbm90IG51bGw7CiBFUlJPUjogICJteXZpZXciIGlzIG5vdCBhIHRhYmxlIG9yIGZv cmVpZ24gdGFibGUKIGRyb3AgdmlldyBteXZpZXc7CiBkcm9wIHRhYmxlIGF0YWNjMTsKKy0tIHNl dCBub3QgbnVsbCB2ZXJpZmllZCBieSBjb25zdHJhaW50cworY3JlYXRlIHRhYmxlIGF0YWNjMSAo dGVzdF9hIGludCwgdGVzdF9iIGludCk7CitpbnNlcnQgaW50byBhdGFjYzEgdmFsdWVzIChudWxs LCAxKTsKKy0tIGNvbnN0cmFpbnQgbm90IGNvdmVyIGFsbCB2YWx1ZXMsIHNob3VsZCBmYWlsCith bHRlciB0YWJsZSBhdGFjYzEgYWRkIGNvbnN0cmFpbnQgYXRhY2MxX2NvbnN0cl9vciBjaGVjayh0 ZXN0X2EgaXMgbm90IG51bGwgb3IgdGVzdF9iIDwgMTApOworYWx0ZXIgdGFibGUgYXRhY2MxIGFs dGVyIHRlc3RfYSBzZXQgbm90IG51bGw7CitFUlJPUjogIGNvbHVtbiAidGVzdF9hIiBjb250YWlu cyBudWxsIHZhbHVlcworYWx0ZXIgdGFibGUgYXRhY2MxIGRyb3AgY29uc3RyYWludCBhdGFjYzFf Y29uc3RyX29yOworLS0gbm90IHZhbGlkIGNvbnN0cmFpbnQsIHNob3VsZCBmYWlsCithbHRlciB0 YWJsZSBhdGFjYzEgYWRkIGNvbnN0cmFpbnQgYXRhY2MxX2NvbnN0cl9pbnZhbGlkIGNoZWNrKHRl c3RfYSBpcyBub3QgbnVsbCkgbm90IHZhbGlkOworYWx0ZXIgdGFibGUgYXRhY2MxIGFsdGVyIHRl c3RfYSBzZXQgbm90IG51bGw7CitFUlJPUjogIGNvbHVtbiAidGVzdF9hIiBjb250YWlucyBudWxs IHZhbHVlcworYWx0ZXIgdGFibGUgYXRhY2MxIGRyb3AgY29uc3RyYWludCBhdGFjYzFfY29uc3Ry X2ludmFsaWQ7CistLSB3aXRoIHZhbGlkIGNvbnN0cmFpbnQKK3VwZGF0ZSBhdGFjYzEgc2V0IHRl c3RfYSA9IDE7CithbHRlciB0YWJsZSBhdGFjYzEgYWRkIGNvbnN0cmFpbnQgYXRhY2MxX2NvbnN0 cl9hX3ZhbGlkIGNoZWNrKHRlc3RfYSBpcyBub3QgbnVsbCk7CithbHRlciB0YWJsZSBhdGFjYzEg YWx0ZXIgdGVzdF9hIHNldCBub3QgbnVsbDsKK2RlbGV0ZSBmcm9tIGF0YWNjMTsKK2luc2VydCBp bnRvIGF0YWNjMSB2YWx1ZXMgKDIsIG51bGwpOworYWx0ZXIgdGFibGUgYXRhY2MxIGFsdGVyIHRl c3RfYSBkcm9wIG5vdCBudWxsOworLS0gdGVzdCBtdWx0aXBsZSBzZXQgbm90IG51bGwgYXQgc2Ft ZSB0aW1lCistLSB0ZXN0X2EgY2hlY2tlZCBieSBhdGFjYzFfY29uc3RyX2FfdmFsaWQsIHRlc3Rf YiBzaG91bGQgZmFpbCBieSB0YWJsZSBzY2FuCithbHRlciB0YWJsZSBhdGFjYzEgYWx0ZXIgdGVz dF9hIHNldCBub3QgbnVsbCwgYWx0ZXIgdGVzdF9iIHNldCBub3QgbnVsbDsKK0VSUk9SOiAgY29s dW1uICJ0ZXN0X2IiIGNvbnRhaW5zIG51bGwgdmFsdWVzCistLSBjb21tYW5kcyBvcmRlciBoYXMg bm8gaW1wb3J0YW5jZQorYWx0ZXIgdGFibGUgYXRhY2MxIGFsdGVyIHRlc3RfYiBzZXQgbm90IG51 bGwsIGFsdGVyIHRlc3RfYSBzZXQgbm90IG51bGw7CitFUlJPUjogIGNvbHVtbiAidGVzdF9iIiBj b250YWlucyBudWxsIHZhbHVlcworLS0gdmFsaWQgb25lIGJ5IHRhYmxlIHNjYW4sIG9uZSBieSBj aGVjayBjb25zdHJhaW50cwordXBkYXRlIGF0YWNjMSBzZXQgdGVzdF9iID0gMTsKK2FsdGVyIHRh YmxlIGF0YWNjMSBhbHRlciB0ZXN0X2Igc2V0IG5vdCBudWxsLCBhbHRlciB0ZXN0X2Egc2V0IG5v dCBudWxsOworYWx0ZXIgdGFibGUgYXRhY2MxIGFsdGVyIHRlc3RfYSBkcm9wIG5vdCBudWxsLCBh bHRlciB0ZXN0X2IgZHJvcCBub3QgbnVsbDsKKy0tIGJvdGggY29sdW1uIGhhcyBjaGVjayBjb25z dHJhaW50cworYWx0ZXIgdGFibGUgYXRhY2MxIGFkZCBjb25zdHJhaW50IGF0YWNjMV9jb25zdHJf Yl92YWxpZCBjaGVjayh0ZXN0X2IgaXMgbm90IG51bGwpOworYWx0ZXIgdGFibGUgYXRhY2MxIGFs dGVyIHRlc3RfYiBzZXQgbm90IG51bGwsIGFsdGVyIHRlc3RfYSBzZXQgbm90IG51bGw7Citkcm9w IHRhYmxlIGF0YWNjMTsKIC0tIHRlc3QgaW5oZXJpdGFuY2UKIGNyZWF0ZSB0YWJsZSBwYXJlbnQg KGEgaW50KTsKIGNyZWF0ZSB0YWJsZSBjaGlsZCAoYiB2YXJjaGFyKDI1NSkpIGluaGVyaXRzIChw YXJlbnQpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvYWx0ZXJfdGFibGUuc3Fs IGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvYWx0ZXJfdGFibGUuc3FsCmluZGV4IDQ5MjlhMzYuLjlm OTA1MDggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2FsdGVyX3RhYmxlLnNxbAor KysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9hbHRlcl90YWJsZS5zcWwKQEAgLTc5OCw2ICs3OTgs NDEgQEAgZHJvcCB2aWV3IG15dmlldzsKIAogZHJvcCB0YWJsZSBhdGFjYzE7CiAKKy0tIHNldCBu b3QgbnVsbCB2ZXJpZmllZCBieSBjb25zdHJhaW50cworY3JlYXRlIHRhYmxlIGF0YWNjMSAodGVz dF9hIGludCwgdGVzdF9iIGludCk7CitpbnNlcnQgaW50byBhdGFjYzEgdmFsdWVzIChudWxsLCAx KTsKKy0tIGNvbnN0cmFpbnQgbm90IGNvdmVyIGFsbCB2YWx1ZXMsIHNob3VsZCBmYWlsCithbHRl ciB0YWJsZSBhdGFjYzEgYWRkIGNvbnN0cmFpbnQgYXRhY2MxX2NvbnN0cl9vciBjaGVjayh0ZXN0 X2EgaXMgbm90IG51bGwgb3IgdGVzdF9iIDwgMTApOworYWx0ZXIgdGFibGUgYXRhY2MxIGFsdGVy IHRlc3RfYSBzZXQgbm90IG51bGw7CithbHRlciB0YWJsZSBhdGFjYzEgZHJvcCBjb25zdHJhaW50 IGF0YWNjMV9jb25zdHJfb3I7CistLSBub3QgdmFsaWQgY29uc3RyYWludCwgc2hvdWxkIGZhaWwK K2FsdGVyIHRhYmxlIGF0YWNjMSBhZGQgY29uc3RyYWludCBhdGFjYzFfY29uc3RyX2ludmFsaWQg Y2hlY2sodGVzdF9hIGlzIG5vdCBudWxsKSBub3QgdmFsaWQ7CithbHRlciB0YWJsZSBhdGFjYzEg YWx0ZXIgdGVzdF9hIHNldCBub3QgbnVsbDsKK2FsdGVyIHRhYmxlIGF0YWNjMSBkcm9wIGNvbnN0 cmFpbnQgYXRhY2MxX2NvbnN0cl9pbnZhbGlkOworLS0gd2l0aCB2YWxpZCBjb25zdHJhaW50Cit1 cGRhdGUgYXRhY2MxIHNldCB0ZXN0X2EgPSAxOworYWx0ZXIgdGFibGUgYXRhY2MxIGFkZCBjb25z dHJhaW50IGF0YWNjMV9jb25zdHJfYV92YWxpZCBjaGVjayh0ZXN0X2EgaXMgbm90IG51bGwpOwor YWx0ZXIgdGFibGUgYXRhY2MxIGFsdGVyIHRlc3RfYSBzZXQgbm90IG51bGw7CitkZWxldGUgZnJv bSBhdGFjYzE7CisKK2luc2VydCBpbnRvIGF0YWNjMSB2YWx1ZXMgKDIsIG51bGwpOworYWx0ZXIg dGFibGUgYXRhY2MxIGFsdGVyIHRlc3RfYSBkcm9wIG5vdCBudWxsOworLS0gdGVzdCBtdWx0aXBs ZSBzZXQgbm90IG51bGwgYXQgc2FtZSB0aW1lCistLSB0ZXN0X2EgY2hlY2tlZCBieSBhdGFjYzFf Y29uc3RyX2FfdmFsaWQsIHRlc3RfYiBzaG91bGQgZmFpbCBieSB0YWJsZSBzY2FuCithbHRlciB0 YWJsZSBhdGFjYzEgYWx0ZXIgdGVzdF9hIHNldCBub3QgbnVsbCwgYWx0ZXIgdGVzdF9iIHNldCBu b3QgbnVsbDsKKy0tIGNvbW1hbmRzIG9yZGVyIGhhcyBubyBpbXBvcnRhbmNlCithbHRlciB0YWJs ZSBhdGFjYzEgYWx0ZXIgdGVzdF9iIHNldCBub3QgbnVsbCwgYWx0ZXIgdGVzdF9hIHNldCBub3Qg bnVsbDsKKworLS0gdmFsaWQgb25lIGJ5IHRhYmxlIHNjYW4sIG9uZSBieSBjaGVjayBjb25zdHJh aW50cwordXBkYXRlIGF0YWNjMSBzZXQgdGVzdF9iID0gMTsKK2FsdGVyIHRhYmxlIGF0YWNjMSBh bHRlciB0ZXN0X2Igc2V0IG5vdCBudWxsLCBhbHRlciB0ZXN0X2Egc2V0IG5vdCBudWxsOworCith bHRlciB0YWJsZSBhdGFjYzEgYWx0ZXIgdGVzdF9hIGRyb3Agbm90IG51bGwsIGFsdGVyIHRlc3Rf YiBkcm9wIG5vdCBudWxsOworLS0gYm90aCBjb2x1bW4gaGFzIGNoZWNrIGNvbnN0cmFpbnRzCith bHRlciB0YWJsZSBhdGFjYzEgYWRkIGNvbnN0cmFpbnQgYXRhY2MxX2NvbnN0cl9iX3ZhbGlkIGNo ZWNrKHRlc3RfYiBpcyBub3QgbnVsbCk7CithbHRlciB0YWJsZSBhdGFjYzEgYWx0ZXIgdGVzdF9i IHNldCBub3QgbnVsbCwgYWx0ZXIgdGVzdF9hIHNldCBub3QgbnVsbDsKK2Ryb3AgdGFibGUgYXRh Y2MxOworCiAtLSB0ZXN0IGluaGVyaXRhbmNlCiBjcmVhdGUgdGFibGUgcGFyZW50IChhIGludCk7 CiBjcmVhdGUgdGFibGUgY2hpbGQgKGIgdmFyY2hhcigyNTUpKSBpbmhlcml0cyAocGFyZW50KTsK ------==--bound.24721.web58j.yandex.ru--