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 1f5cKm-0003Kc-8o for pgsql-hackers@arkaria.postgresql.org; Mon, 09 Apr 2018 19:20:08 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1f5cKk-00051c-MX for pgsql-hackers@arkaria.postgresql.org; Mon, 09 Apr 2018 19:20:06 +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 1f5cKk-00051A-49 for pgsql-hackers@lists.postgresql.org; Mon, 09 Apr 2018 19:20:06 +0000 Received: from forward3o.cmail.yandex.net ([2a02:6b8:0:1a72::288]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1f5cKb-0008F7-7g for pgsql-hackers@postgresql.org; Mon, 09 Apr 2018 19:20:04 +0000 Received: from mxback9g.mail.yandex.net (mxback9g.mail.yandex.net [IPv6:2a02:6b8:0:1472:2741:0:8b7:170]) by forward3o.cmail.yandex.net (Yandex) with ESMTP id E411920E72; Mon, 9 Apr 2018 22:19:50 +0300 (MSK) Received: from localhost (localhost [::1]) by mxback9g.mail.yandex.net (nwsmtp/Yandex) with ESMTP id ZlyyNjo2UV-Jl5i22ce; Mon, 09 Apr 2018 22:19:49 +0300 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=zsrv.org; s=mail; t=1523301589; bh=aITOLlQnbAQdqxuHPVYotxslEPV9DABXnMAfsLm2DkE=; h=From:To:Cc:In-Reply-To:References:Subject:Message-Id:Date; b=Ebd9IC5tsr6ee23ujX1P+IfoYwTejFOBAiRPpCiNjTLtvVpvEhV9RUwBenMkwTbN6 3oBs0ZSMgmYbGu1uMhIyCLLgwDDP/Pg6uq0I+vZrThds9wzHUCvNkThIREetTmujsM r+1MDtDlWRoNIhmEcnLjVoLv5dzUG7PI6Z34sbyM= Authentication-Results: mxback9g.mail.yandex.net; dkim=pass header.i=@zsrv.org Received: by web39j.yandex.ru with HTTP; Mon, 09 Apr 2018 22:19:47 +0300 From: Sergei Kornilov To: PostgreSQL mailing lists Cc: Alvaro Herrera , Stephen Frost , Robert Haas , Ildar Musin , Tom Lane In-Reply-To: <5376321520674521@web1j.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> Subject: Re: using index or check in ALTER TABLE SET NOT NULL MIME-Version: 1.0 Message-Id: <979461523301587@web39j.yandex.ru> X-Mailer: Yamail [ http://yandex.ru ] 5.0 Date: Mon, 09 Apr 2018 22:19:47 +0300 Content-Type: multipart/mixed; boundary="----==--bound.97948.web39j.yandex.ru" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk ------==--bound.97948.web39j.yandex.ru Content-Transfer-Encoding: 7bit Content-Type: text/plain Hello I notice my patch does not apply again. Here is update to current HEAD regards, Sergei ------==--bound.97948.web39j.yandex.ru Content-Disposition: attachment; filename="alter_table_set_not_null_by_constraints_only_v8.patch" Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name="alter_table_set_not_null_by_constraints_only_v8.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 c3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKaW5kZXggNDNiMmZjZS4uMTFkYzkyYyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKKysrIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKQEAgLTE2MCw3ICsxNjAsNyBAQCB0eXBlZGVmIHN0 cnVjdCBBbHRlcmVkVGFibGVJbmZvCiAJLyogSW5mb3JtYXRpb24gc2F2ZWQgYnkgUGhhc2VzIDEv MiBmb3IgUGhhc2UgMzogKi8KIAlMaXN0CSAgICpjb25zdHJhaW50czsJLyogTGlzdCBvZiBOZXdD b25zdHJhaW50ICovCiAJTGlzdAkgICAqbmV3dmFsczsJCS8qIExpc3Qgb2YgTmV3Q29sdW1uVmFs dWUgKi8KLQlib29sCQluZXdfbm90bnVsbDsJLyogVCBpZiB3ZSBhZGRlZCBuZXcgTk9UIE5VTEwg Y29uc3RyYWludHMgKi8KKwlib29sCQl2ZXJpZnlfbmV3X25vdG51bGw7IC8qIFQgaWYgd2Ugc2hv dWxkIHJlY2hlY2sgTk9UIE5VTEwgKi8KIAlpbnQJCQlyZXdyaXRlOwkJLyogUmVhc29uIGZvciBm b3JjZWQgcmV3cml0ZSwgaWYgYW55ICovCiAJT2lkCQkJbmV3VGFibGVTcGFjZTsJLyogbmV3IHRh Ymxlc3BhY2U7IDAgbWVhbnMgbm8gY2hhbmdlICovCiAJYm9vbAkJY2hnUGVyc2lzdGVuY2U7IC8q IFQgaWYgU0VUIExPR0dFRC9VTkxPR0dFRCBpcyB1c2VkICovCkBAIC0zNzIsNiArMzcyLDcgQEAg c3RhdGljIE9iamVjdEFkZHJlc3MgQVRFeGVjRHJvcE5vdE51bGwoUmVsYXRpb24gcmVsLCBjb25z dCBjaGFyICpjb2xOYW1lLCBMT0NLTU8KIHN0YXRpYyB2b2lkIEFUUHJlcFNldE5vdE51bGwoUmVs YXRpb24gcmVsLCBib29sIHJlY3Vyc2UsIGJvb2wgcmVjdXJzaW5nKTsKIHN0YXRpYyBPYmplY3RB ZGRyZXNzIEFURXhlY1NldE5vdE51bGwoQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBSZWxhdGlvbiBy ZWwsCiAJCQkJIGNvbnN0IGNoYXIgKmNvbE5hbWUsIExPQ0tNT0RFIGxvY2ttb2RlKTsKK3N0YXRp YyBib29sIE5vdE51bGxJbXBsaWVkQnlSZWxDb25zdHJhaW50cyhSZWxhdGlvbiByZWwsIEZvcm1f cGdfYXR0cmlidXRlIGF0dHIpOwogc3RhdGljIE9iamVjdEFkZHJlc3MgQVRFeGVjQ29sdW1uRGVm YXVsdChSZWxhdGlvbiByZWwsIGNvbnN0IGNoYXIgKmNvbE5hbWUsCiAJCQkJCU5vZGUgKm5ld0Rl ZmF1bHQsIExPQ0tNT0RFIGxvY2ttb2RlKTsKIHN0YXRpYyBPYmplY3RBZGRyZXNzIEFURXhlY0Fk ZElkZW50aXR5KFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqY29sTmFtZSwKQEAgLTQ0NjIsNyAr NDQ2Myw3IEBAIEFUUmV3cml0ZVRhYmxlcyhBbHRlclRhYmxlU3RtdCAqcGFyc2V0cmVlLCBMaXN0 ICoqd3F1ZXVlLCBMT0NLTU9ERSBsb2NrbW9kZSkKIAkJCSAqIFRlc3QgdGhlIGN1cnJlbnQgZGF0 YSB3aXRoaW4gdGhlIHRhYmxlIGFnYWluc3QgbmV3IGNvbnN0cmFpbnRzCiAJCQkgKiBnZW5lcmF0 ZWQgYnkgQUxURVIgVEFCTEUgY29tbWFuZHMsIGJ1dCBkb24ndCByZWJ1aWxkIGRhdGEuCiAJCQkg Ki8KLQkJCWlmICh0YWItPmNvbnN0cmFpbnRzICE9IE5JTCB8fCB0YWItPm5ld19ub3RudWxsIHx8 CisJCQlpZiAodGFiLT5jb25zdHJhaW50cyAhPSBOSUwgfHwgdGFiLT52ZXJpZnlfbmV3X25vdG51 bGwgfHwKIAkJCQl0YWItPnBhcnRpdGlvbl9jb25zdHJhaW50ICE9IE5VTEwpCiAJCQkJQVRSZXdy aXRlVGFibGUodGFiLCBJbnZhbGlkT2lkLCBsb2NrbW9kZSk7CiAKQEAgLTQ2MjMsNyArNDYyNCw3 IEBAIEFUUmV3cml0ZVRhYmxlKEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgT2lkIE9JRE5ld0hlYXAs IExPQ0tNT0RFIGxvY2ttb2RlKQogCX0KIAogCW5vdG51bGxfYXR0cnMgPSBOSUw7Ci0JaWYgKG5l d3JlbCB8fCB0YWItPm5ld19ub3RudWxsKQorCWlmIChuZXdyZWwgfHwgdGFiLT52ZXJpZnlfbmV3 X25vdG51bGwpCiAJewogCQkvKgogCQkgKiBJZiB3ZSBhcmUgcmVidWlsZGluZyB0aGUgdHVwbGVz IE9SIGlmIHdlIGFkZGVkIGFueSBuZXcgTk9UIE5VTEwKQEAgLTU2NTgsNyArNTY1OSw3IEBAIEFU RXhlY0FkZENvbHVtbihMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0 aW9uIHJlbCwKIAkJCSAqIGFuIE9JRCBjb2x1bW4uICBPSUQgd2lsbCBiZSBtYXJrZWQgbm90IG51 bGwsIGJ1dCBzaW5jZSBpdCdzCiAJCQkgKiBmaWxsZWQgc3BlY2lhbGx5LCB0aGVyZSdzIG5vIG5l ZWQgdG8gdGVzdCBhbnl0aGluZy4pCiAJCQkgKi8KLQkJCXRhYi0+bmV3X25vdG51bGwgfD0gY29s RGVmLT5pc19ub3RfbnVsbDsKKwkJCXRhYi0+dmVyaWZ5X25ld19ub3RudWxsIHw9IGNvbERlZi0+ aXNfbm90X251bGw7CiAJCX0KIAl9CiAKQEAgLTYwNjIsOCArNjA2MywxNyBAQCBBVEV4ZWNTZXRO b3ROdWxsKEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVsLAogCiAJCUNhdGFsb2dU dXBsZVVwZGF0ZShhdHRyX3JlbCwgJnR1cGxlLT50X3NlbGYsIHR1cGxlKTsKIAotCQkvKiBUZWxs IFBoYXNlIDMgaXQgbmVlZHMgdG8gdGVzdCB0aGUgY29uc3RyYWludCAqLwotCQl0YWItPm5ld19u b3RudWxsID0gdHJ1ZTsKKwkJLyoKKwkJICogVmVyaWZ5aW5nIHRhYmxlIGRhdGEgY2FuIGJlIGRv bmUgaW4gUGhhc2UgMyB3aXRoIHNpbmdsZSB0YWJsZSBzY2FuCisJCSAqIGZvciBhbGwgY29uc3Ry YWludCAoYm90aCBleGlzdGluZyBhbmQgbmV3KQorCQkgKiBXZSBjYW4gc2tpcCB0aGlzIGNoZWNr IG9ubHkgaWYgZXZlcnkgbmV3IE5PVCBOVUxMIGNvbnRyYWludAorCQkgKiBpbXBsaWVkIGJ5IGV4 aXN0ZWQgdGFibGUgY29uc3RyYWludHMKKwkJICovCisJCWlmICghTm90TnVsbEltcGxpZWRCeVJl bENvbnN0cmFpbnRzKHJlbCwgKEZvcm1fcGdfYXR0cmlidXRlKSBHRVRTVFJVQ1QodHVwbGUpKSkK KwkJeworCQkJLyogVGVsbCBQaGFzZSAzIGl0IG5lZWRzIHRvIHRlc3QgdGhlIGNvbnN0cmFpbnRz ICovCisJCQl0YWItPnZlcmlmeV9uZXdfbm90bnVsbCA9IHRydWU7CisJCX0KIAogCQlPYmplY3RB ZGRyZXNzU3ViU2V0KGFkZHJlc3MsIFJlbGF0aW9uUmVsYXRpb25JZCwKIAkJCQkJCQlSZWxhdGlv bkdldFJlbGlkKHJlbCksIGF0dG51bSk7CkBAIC02MDgwLDYgKzYwOTAsNDYgQEAgQVRFeGVjU2V0 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 IGNvbHVtbi4KQEAgLTEzODUxLDE2ICsxMzkwMSwxNSBAQCBDb21wdXRlUGFydGl0aW9uQXR0cnMo UmVsYXRpb24gcmVsLCBMaXN0ICpwYXJ0UGFyYW1zLCBBdHRyTnVtYmVyICpwYXJ0YXR0cnMsCiB9 CiAKIC8qCi0gKiBQYXJ0Q29uc3RyYWludEltcGxpZWRCeVJlbENvbnN0cmFpbnQKLSAqCQlEbyBz Y2FucmVsJ3MgZXhpc3RpbmcgY29uc3RyYWludHMgaW1wbHkgdGhlIHBhcnRpdGlvbiBjb25zdHJh aW50PworICogQ29uc3RyYWludEltcGxpZWRCeVJlbENvbnN0cmFpbnQKKyAqCQlEbyBzY2FucmVs J3MgZXhpc3RpbmcgY29uc3RyYWludHMgaW1wbHkgZ2l2ZW4gY29uc3RyYWludD8KICAqCiAgKiAi RXhpc3RpbmcgY29uc3RyYWludHMiIGluY2x1ZGUgaXRzIGNoZWNrIGNvbnN0cmFpbnRzIGFuZCBj b2x1bW4tbGV2ZWwKLSAqIE5PVCBOVUxMIGNvbnN0cmFpbnRzLiAgcGFydENvbnN0cmFpbnQgZGVz Y3JpYmVzIHRoZSBwYXJ0aXRpb24gY29uc3RyYWludCwKKyAqIE5PVCBOVUxMIGNvbnN0cmFpbnRz LiAgdGVzdENvbnN0cmFpbnQgZGVzY3JpYmVzIHRoZSBjaGVja2VkIGNvbnN0cmFpbnQsCiAgKiBp biBpbXBsaWNpdC1BTkQgZm9ybS4KICAqLwogYm9vbAotUGFydENvbnN0cmFpbnRJbXBsaWVkQnlS ZWxDb25zdHJhaW50KFJlbGF0aW9uIHNjYW5yZWwsCi0JCQkJCQkJCQkgTGlzdCAqcGFydENvbnN0 cmFpbnQpCitDb25zdHJhaW50SW1wbGllZEJ5UmVsQ29uc3RyYWludChSZWxhdGlvbiBzY2FucmVs LCBMaXN0ICp0ZXN0Q29uc3RyYWludCkKIHsKIAlMaXN0CSAgICpleGlzdENvbnN0cmFpbnQgPSBO SUw7CiAJVHVwbGVDb25zdHIgKmNvbnN0ciA9IFJlbGF0aW9uR2V0RGVzY3Ioc2NhbnJlbCktPmNv bnN0cjsKQEAgLTEzOTI5LDEzICsxMzk3OCwxMyBAQCBQYXJ0Q29uc3RyYWludEltcGxpZWRCeVJl bENvbnN0cmFpbnQoUmVsYXRpb24gc2NhbnJlbCwKIAkvKgogCSAqIFRyeSB0byBtYWtlIHRoZSBw cm9vZi4gIFNpbmNlIHdlIGFyZSBjb21wYXJpbmcgQ0hFQ0sgY29uc3RyYWludHMsIHdlCiAJICog bmVlZCB0byB1c2Ugd2VhayBpbXBsaWNhdGlvbiwgaS5lLiwgd2UgYXNzdW1lIGV4aXN0Q29uc3Ry YWludCBpcwotCSAqIG5vdC1mYWxzZSBhbmQgdHJ5IHRvIHByb3ZlIHRoZSBzYW1lIGZvciBwYXJ0 Q29uc3RyYWludC4KKwkgKiBub3QtZmFsc2UgYW5kIHRyeSB0byBwcm92ZSB0aGUgc2FtZSBmb3Ig dGVzdENvbnN0cmFpbnQuCiAJICoKIAkgKiBOb3RlIHRoYXQgcHJlZGljYXRlX2ltcGxpZWRfYnkg YXNzdW1lcyBpdHMgZmlyc3QgYXJndW1lbnQgaXMga25vd24KLQkgKiBpbW11dGFibGUuICBUaGF0 IHNob3VsZCBhbHdheXMgYmUgdHJ1ZSBmb3IgcGFydGl0aW9uIGNvbnN0cmFpbnRzLCBzbyB3ZQot CSAqIGRvbid0IHRlc3QgaXQgaGVyZS4KKwkgKiBpbW11dGFibGUuICBUaGF0IHNob3VsZCBhbHdh eXMgYmUgdHJ1ZSBmb3IgYm90aCBub3QgbnVsbCBhbmQKKwkgKiBwYXJ0aXRpb24gY29uc3RyYWlu dHMsIHNvIHdlIGRvbid0IHRlc3QgaXQgaGVyZS4KIAkgKi8KLQlyZXR1cm4gcHJlZGljYXRlX2lt cGxpZWRfYnkocGFydENvbnN0cmFpbnQsIGV4aXN0Q29uc3RyYWludCwgdHJ1ZSk7CisJcmV0dXJu IHByZWRpY2F0ZV9pbXBsaWVkX2J5KHRlc3RDb25zdHJhaW50LCBleGlzdENvbnN0cmFpbnQsIHRy dWUpOwogfQogCiAvKgpAQCAtMTM5NjMsNyArMTQwMTIsNyBAQCBWYWxpZGF0ZVBhcnRpdGlvbkNv bnN0cmFpbnRzKExpc3QgKip3cXVldWUsIFJlbGF0aW9uIHNjYW5yZWwsCiAJICogQmFzZWQgb24g dGhlIHRhYmxlJ3MgZXhpc3RpbmcgY29uc3RyYWludHMsIGRldGVybWluZSBpZiB3ZSBjYW4gc2tp cAogCSAqIHNjYW5uaW5nIHRoZSB0YWJsZSB0byB2YWxpZGF0ZSB0aGUgcGFydGl0aW9uIGNvbnN0 cmFpbnQuCiAJICovCi0JaWYgKFBhcnRDb25zdHJhaW50SW1wbGllZEJ5UmVsQ29uc3RyYWludChz Y2FucmVsLCBwYXJ0Q29uc3RyYWludCkpCisJaWYgKENvbnN0cmFpbnRJbXBsaWVkQnlSZWxDb25z dHJhaW50KHNjYW5yZWwsIHBhcnRDb25zdHJhaW50KSkKIAl7CiAJCWlmICghdmFsaWRhdGVfZGVm YXVsdCkKIAkJCWVyZXBvcnQoSU5GTywKQEAgLTE0MDE1LDcgKzE0MDY0LDcgQEAgVmFsaWRhdGVQ YXJ0aXRpb25Db25zdHJhaW50cyhMaXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiBzY2FucmVsLAogCQkJ CWVsb2coRVJST1IsICJ1bmV4cGVjdGVkIHdob2xlLXJvdyByZWZlcmVuY2UgZm91bmQgaW4gcGFy dGl0aW9uIGtleSIpOwogCiAJCQkvKiBDYW4gd2Ugc2tpcCBzY2FubmluZyB0aGlzIHBhcnRfcmVs PyAqLwotCQkJaWYgKFBhcnRDb25zdHJhaW50SW1wbGllZEJ5UmVsQ29uc3RyYWludChwYXJ0X3Jl bCwgbXlfcGFydGNvbnN0cikpCisJCQlpZiAoQ29uc3RyYWludEltcGxpZWRCeVJlbENvbnN0cmFp bnQocGFydF9yZWwsIG15X3BhcnRjb25zdHIpKQogCQkJewogCQkJCWlmICghdmFsaWRhdGVfZGVm YXVsdCkKIAkJCQkJZXJlcG9ydChJTkZPLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFu ZHMvdGFibGVjbWRzLmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy90YWJsZWNtZHMuaAppbmRleCA3 MGVlM2RhLi4xZjAzYjkyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy90YWJsZWNt ZHMuaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy90YWJsZWNtZHMuaApAQCAtOTQsNyArOTQs NyBAQCBleHRlcm4gdm9pZCBSYW5nZVZhckNhbGxiYWNrT3duc1RhYmxlKGNvbnN0IFJhbmdlVmFy ICpyZWxhdGlvbiwKIAogZXh0ZXJuIHZvaWQgUmFuZ2VWYXJDYWxsYmFja093bnNSZWxhdGlvbihj b25zdCBSYW5nZVZhciAqcmVsYXRpb24sCiAJCQkJCQkJIE9pZCByZWxJZCwgT2lkIG9sZFJlbElk LCB2b2lkICpub0NhdGFsb2dzKTsKLWV4dGVybiBib29sIFBhcnRDb25zdHJhaW50SW1wbGllZEJ5 UmVsQ29uc3RyYWludChSZWxhdGlvbiBzY2FucmVsLAotCQkJCQkJCQkJIExpc3QgKnBhcnRDb25z dHJhaW50KTsKK2V4dGVybiBib29sIENvbnN0cmFpbnRJbXBsaWVkQnlSZWxDb25zdHJhaW50KFJl bGF0aW9uIHNjYW5yZWwsCisJCQkJCQkJCSBMaXN0ICp0ZXN0Q29uc3RyYWludCk7CiAKICNlbmRp ZgkJCQkJCQkvKiBUQUJMRUNNRFNfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9hbHRlcl90YWJsZS5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2FsdGVy X3RhYmxlLm91dAppbmRleCAxZDZjYzljLi5kNDg2ZGQxIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL2FsdGVyX3RhYmxlLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL2FsdGVyX3RhYmxlLm91dApAQCAtMTAzOCw2ICsxMDM4LDQxIEBAIGFsdGVyIHRhYmxl IG15dmlldyBhbHRlciBjb2x1bW4gdGVzdCBzZXQgbm90IG51bGw7CiBFUlJPUjogICJteXZpZXci IGlzIG5vdCBhIHRhYmxlIG9yIGZvcmVpZ24gdGFibGUKIGRyb3AgdmlldyBteXZpZXc7CiBkcm9w IHRhYmxlIGF0YWNjMTsKKy0tIHNldCBub3QgbnVsbCB2ZXJpZmllZCBieSBjb25zdHJhaW50cwor Y3JlYXRlIHRhYmxlIGF0YWNjMSAodGVzdF9hIGludCwgdGVzdF9iIGludCk7CitpbnNlcnQgaW50 byBhdGFjYzEgdmFsdWVzIChudWxsLCAxKTsKKy0tIGNvbnN0cmFpbnQgbm90IGNvdmVyIGFsbCB2 YWx1ZXMsIHNob3VsZCBmYWlsCithbHRlciB0YWJsZSBhdGFjYzEgYWRkIGNvbnN0cmFpbnQgYXRh Y2MxX2NvbnN0cl9vciBjaGVjayh0ZXN0X2EgaXMgbm90IG51bGwgb3IgdGVzdF9iIDwgMTApOwor YWx0ZXIgdGFibGUgYXRhY2MxIGFsdGVyIHRlc3RfYSBzZXQgbm90IG51bGw7CitFUlJPUjogIGNv bHVtbiAidGVzdF9hIiBjb250YWlucyBudWxsIHZhbHVlcworYWx0ZXIgdGFibGUgYXRhY2MxIGRy b3AgY29uc3RyYWludCBhdGFjYzFfY29uc3RyX29yOworLS0gbm90IHZhbGlkIGNvbnN0cmFpbnQs IHNob3VsZCBmYWlsCithbHRlciB0YWJsZSBhdGFjYzEgYWRkIGNvbnN0cmFpbnQgYXRhY2MxX2Nv bnN0cl9pbnZhbGlkIGNoZWNrKHRlc3RfYSBpcyBub3QgbnVsbCkgbm90IHZhbGlkOworYWx0ZXIg dGFibGUgYXRhY2MxIGFsdGVyIHRlc3RfYSBzZXQgbm90IG51bGw7CitFUlJPUjogIGNvbHVtbiAi dGVzdF9hIiBjb250YWlucyBudWxsIHZhbHVlcworYWx0ZXIgdGFibGUgYXRhY2MxIGRyb3AgY29u c3RyYWludCBhdGFjYzFfY29uc3RyX2ludmFsaWQ7CistLSB3aXRoIHZhbGlkIGNvbnN0cmFpbnQK K3VwZGF0ZSBhdGFjYzEgc2V0IHRlc3RfYSA9IDE7CithbHRlciB0YWJsZSBhdGFjYzEgYWRkIGNv bnN0cmFpbnQgYXRhY2MxX2NvbnN0cl9hX3ZhbGlkIGNoZWNrKHRlc3RfYSBpcyBub3QgbnVsbCk7 CithbHRlciB0YWJsZSBhdGFjYzEgYWx0ZXIgdGVzdF9hIHNldCBub3QgbnVsbDsKK2RlbGV0ZSBm cm9tIGF0YWNjMTsKK2luc2VydCBpbnRvIGF0YWNjMSB2YWx1ZXMgKDIsIG51bGwpOworYWx0ZXIg dGFibGUgYXRhY2MxIGFsdGVyIHRlc3RfYSBkcm9wIG5vdCBudWxsOworLS0gdGVzdCBtdWx0aXBs ZSBzZXQgbm90IG51bGwgYXQgc2FtZSB0aW1lCistLSB0ZXN0X2EgY2hlY2tlZCBieSBhdGFjYzFf Y29uc3RyX2FfdmFsaWQsIHRlc3RfYiBzaG91bGQgZmFpbCBieSB0YWJsZSBzY2FuCithbHRlciB0 YWJsZSBhdGFjYzEgYWx0ZXIgdGVzdF9hIHNldCBub3QgbnVsbCwgYWx0ZXIgdGVzdF9iIHNldCBu b3QgbnVsbDsKK0VSUk9SOiAgY29sdW1uICJ0ZXN0X2IiIGNvbnRhaW5zIG51bGwgdmFsdWVzCist LSBjb21tYW5kcyBvcmRlciBoYXMgbm8gaW1wb3J0YW5jZQorYWx0ZXIgdGFibGUgYXRhY2MxIGFs dGVyIHRlc3RfYiBzZXQgbm90IG51bGwsIGFsdGVyIHRlc3RfYSBzZXQgbm90IG51bGw7CitFUlJP UjogIGNvbHVtbiAidGVzdF9iIiBjb250YWlucyBudWxsIHZhbHVlcworLS0gdmFsaWQgb25lIGJ5 IHRhYmxlIHNjYW4sIG9uZSBieSBjaGVjayBjb25zdHJhaW50cwordXBkYXRlIGF0YWNjMSBzZXQg dGVzdF9iID0gMTsKK2FsdGVyIHRhYmxlIGF0YWNjMSBhbHRlciB0ZXN0X2Igc2V0IG5vdCBudWxs LCBhbHRlciB0ZXN0X2Egc2V0IG5vdCBudWxsOworYWx0ZXIgdGFibGUgYXRhY2MxIGFsdGVyIHRl c3RfYSBkcm9wIG5vdCBudWxsLCBhbHRlciB0ZXN0X2IgZHJvcCBub3QgbnVsbDsKKy0tIGJvdGgg Y29sdW1uIGhhcyBjaGVjayBjb25zdHJhaW50cworYWx0ZXIgdGFibGUgYXRhY2MxIGFkZCBjb25z dHJhaW50IGF0YWNjMV9jb25zdHJfYl92YWxpZCBjaGVjayh0ZXN0X2IgaXMgbm90IG51bGwpOwor YWx0ZXIgdGFibGUgYXRhY2MxIGFsdGVyIHRlc3RfYiBzZXQgbm90IG51bGwsIGFsdGVyIHRlc3Rf YSBzZXQgbm90IG51bGw7Citkcm9wIHRhYmxlIGF0YWNjMTsKIC0tIHRlc3QgaW5oZXJpdGFuY2UK IGNyZWF0ZSB0YWJsZSBwYXJlbnQgKGEgaW50KTsKIGNyZWF0ZSB0YWJsZSBjaGlsZCAoYiB2YXJj aGFyKDI1NSkpIGluaGVyaXRzIChwYXJlbnQpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVz cy9zcWwvYWx0ZXJfdGFibGUuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvYWx0ZXJfdGFibGUu c3FsCmluZGV4IDYxNzk5YjYuLmVjYThmMDUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL2FsdGVyX3RhYmxlLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9hbHRlcl90YWJs ZS5zcWwKQEAgLTc5OCw2ICs3OTgsNDEgQEAgZHJvcCB2aWV3IG15dmlldzsKIAogZHJvcCB0YWJs ZSBhdGFjYzE7CiAKKy0tIHNldCBub3QgbnVsbCB2ZXJpZmllZCBieSBjb25zdHJhaW50cworY3Jl YXRlIHRhYmxlIGF0YWNjMSAodGVzdF9hIGludCwgdGVzdF9iIGludCk7CitpbnNlcnQgaW50byBh dGFjYzEgdmFsdWVzIChudWxsLCAxKTsKKy0tIGNvbnN0cmFpbnQgbm90IGNvdmVyIGFsbCB2YWx1 ZXMsIHNob3VsZCBmYWlsCithbHRlciB0YWJsZSBhdGFjYzEgYWRkIGNvbnN0cmFpbnQgYXRhY2Mx X2NvbnN0cl9vciBjaGVjayh0ZXN0X2EgaXMgbm90IG51bGwgb3IgdGVzdF9iIDwgMTApOworYWx0 ZXIgdGFibGUgYXRhY2MxIGFsdGVyIHRlc3RfYSBzZXQgbm90IG51bGw7CithbHRlciB0YWJsZSBh dGFjYzEgZHJvcCBjb25zdHJhaW50IGF0YWNjMV9jb25zdHJfb3I7CistLSBub3QgdmFsaWQgY29u c3RyYWludCwgc2hvdWxkIGZhaWwKK2FsdGVyIHRhYmxlIGF0YWNjMSBhZGQgY29uc3RyYWludCBh dGFjYzFfY29uc3RyX2ludmFsaWQgY2hlY2sodGVzdF9hIGlzIG5vdCBudWxsKSBub3QgdmFsaWQ7 CithbHRlciB0YWJsZSBhdGFjYzEgYWx0ZXIgdGVzdF9hIHNldCBub3QgbnVsbDsKK2FsdGVyIHRh YmxlIGF0YWNjMSBkcm9wIGNvbnN0cmFpbnQgYXRhY2MxX2NvbnN0cl9pbnZhbGlkOworLS0gd2l0 aCB2YWxpZCBjb25zdHJhaW50Cit1cGRhdGUgYXRhY2MxIHNldCB0ZXN0X2EgPSAxOworYWx0ZXIg dGFibGUgYXRhY2MxIGFkZCBjb25zdHJhaW50IGF0YWNjMV9jb25zdHJfYV92YWxpZCBjaGVjayh0 ZXN0X2EgaXMgbm90IG51bGwpOworYWx0ZXIgdGFibGUgYXRhY2MxIGFsdGVyIHRlc3RfYSBzZXQg bm90IG51bGw7CitkZWxldGUgZnJvbSBhdGFjYzE7CisKK2luc2VydCBpbnRvIGF0YWNjMSB2YWx1 ZXMgKDIsIG51bGwpOworYWx0ZXIgdGFibGUgYXRhY2MxIGFsdGVyIHRlc3RfYSBkcm9wIG5vdCBu dWxsOworLS0gdGVzdCBtdWx0aXBsZSBzZXQgbm90IG51bGwgYXQgc2FtZSB0aW1lCistLSB0ZXN0 X2EgY2hlY2tlZCBieSBhdGFjYzFfY29uc3RyX2FfdmFsaWQsIHRlc3RfYiBzaG91bGQgZmFpbCBi eSB0YWJsZSBzY2FuCithbHRlciB0YWJsZSBhdGFjYzEgYWx0ZXIgdGVzdF9hIHNldCBub3QgbnVs bCwgYWx0ZXIgdGVzdF9iIHNldCBub3QgbnVsbDsKKy0tIGNvbW1hbmRzIG9yZGVyIGhhcyBubyBp bXBvcnRhbmNlCithbHRlciB0YWJsZSBhdGFjYzEgYWx0ZXIgdGVzdF9iIHNldCBub3QgbnVsbCwg YWx0ZXIgdGVzdF9hIHNldCBub3QgbnVsbDsKKworLS0gdmFsaWQgb25lIGJ5IHRhYmxlIHNjYW4s IG9uZSBieSBjaGVjayBjb25zdHJhaW50cwordXBkYXRlIGF0YWNjMSBzZXQgdGVzdF9iID0gMTsK K2FsdGVyIHRhYmxlIGF0YWNjMSBhbHRlciB0ZXN0X2Igc2V0IG5vdCBudWxsLCBhbHRlciB0ZXN0 X2Egc2V0IG5vdCBudWxsOworCithbHRlciB0YWJsZSBhdGFjYzEgYWx0ZXIgdGVzdF9hIGRyb3Ag bm90IG51bGwsIGFsdGVyIHRlc3RfYiBkcm9wIG5vdCBudWxsOworLS0gYm90aCBjb2x1bW4gaGFz IGNoZWNrIGNvbnN0cmFpbnRzCithbHRlciB0YWJsZSBhdGFjYzEgYWRkIGNvbnN0cmFpbnQgYXRh Y2MxX2NvbnN0cl9iX3ZhbGlkIGNoZWNrKHRlc3RfYiBpcyBub3QgbnVsbCk7CithbHRlciB0YWJs ZSBhdGFjYzEgYWx0ZXIgdGVzdF9iIHNldCBub3QgbnVsbCwgYWx0ZXIgdGVzdF9hIHNldCBub3Qg bnVsbDsKK2Ryb3AgdGFibGUgYXRhY2MxOworCiAtLSB0ZXN0IGluaGVyaXRhbmNlCiBjcmVhdGUg dGFibGUgcGFyZW50IChhIGludCk7CiBjcmVhdGUgdGFibGUgY2hpbGQgKGIgdmFyY2hhcigyNTUp KSBpbmhlcml0cyAocGFyZW50KTsK ------==--bound.97948.web39j.yandex.ru--