Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1l5TcD-0007wA-BM for pgsql-hackers@arkaria.postgresql.org; Fri, 29 Jan 2021 13:15:09 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1l5TcC-0002aq-8s for pgsql-hackers@arkaria.postgresql.org; Fri, 29 Jan 2021 13:15:08 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1l5TcB-0002aj-GQ for pgsql-hackers@lists.postgresql.org; Fri, 29 Jan 2021 13:15:08 +0000 Received: from [66.111.4.226] (helo=forward2-smtp.messagingengine.com) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1l5Tc7-00055W-Mc for pgsql-hackers@lists.postgresql.org; Fri, 29 Jan 2021 13:15:07 +0000 Received: from compute1.internal (compute1.nyi.internal [10.202.2.41]) by mailforward.nyi.internal (Postfix) with ESMTP id 2639A1956441; Fri, 29 Jan 2021 08:14:52 -0500 (EST) Received: from mailfrontend1 ([10.202.2.162]) by compute1.internal (MEProxy); Fri, 29 Jan 2021 08:14:52 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to:x-me-proxy :x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm1; bh=SI0Nfk 2n3N4G6lpwReog9ZnwO2hI/fQYpJixIFJShHY=; b=kBcmq+FoeYlxBB70fLdUAy nVnjLEFVl6FNYuaJpyxh72tCf1Z7z217Bz0FD89SI3fXneFpsEORZocXp41ovgEK dTJUlLOMMG9oEyRUGuxS9nRiTRwG83KxydGlRrQWXShm4s9r1zJ/sKD3pv/D2gZe ir+83kDq/UwTp3Vjt7TrJmJp+K8KBHQJ8EyUkAsVID6pQOPTYlbCwnPNgXl5h8Mk qsvvSoP2e/donoAw8nAwEbYBxjzJfo61jdh29CYPSXWNSOCQ6Y/L8YRrEMMrsmcj rc58Fb9bSfvEiTFfjbmHmxNDLogj1FKlY6ki7ip9wt9Izs3lY8HghKowrDy43j4A == X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeduledrfedvgdehtdcutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenuc fjughrpefuvfhfhfhokffffgggjggtsehmtderredtfeejnecuhfhrohhmpefrvghtvghr ucfgihhsvghnthhrrghuthcuoehpvghtvghrrdgvihhsvghnthhrrghuthesvdhnughquh grughrrghnthdrtghomheqnecuggftrfgrthhtvghrnhepudfgueevieeluefggeeludfg hfeuhffhjeehfefgledufedtieevudfggeevgfejnecuffhomhgrihhnpedvnhguqhhurg gurhgrnhhtrdgtohhmnecukfhppeekjedrudejjedrieelrddugedtnecuvehluhhsthgv rhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepphgvthgvrhdrvghishgvnh htrhgruhhtsedvnhguqhhurggurhgrnhhtrdgtohhm X-ME-Proxy: Received: from april.pezone.net (p57b1458c.dip0.t-ipconnect.de [87.177.69.140]) by mail.messagingengine.com (Postfix) with ESMTPA id 6A24624005C; Fri, 29 Jan 2021 08:14:50 -0500 (EST) Subject: Re: Dumping/restoring fails on inherited generated column To: Anastasia Lubennikova , Masahiko Sawada References: <15830.1575468847@sss.pgh.pa.us> <31905.1575491779@sss.pgh.pa.us> <24369.1580758361@sss.pgh.pa.us> <3f272982-0e0d-17a1-3fb6-fedc74197676@2ndquadrant.com> <3169466.1594841366@sss.pgh.pa.us> <0f57d5e9-4112-1ba8-64d8-c02062c1e95d@postgrespro.ru> Cc: Masahiko Sawada , Tom Lane , PostgreSQL Hackers From: Peter Eisentraut Organization: 2ndQuadrant Message-ID: <41888c80-e5bd-f9e5-75dc-fb377113168c@2ndquadrant.com> Date: Fri, 29 Jan 2021 14:14:48 +0100 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 MIME-Version: 1.0 In-Reply-To: <0f57d5e9-4112-1ba8-64d8-c02062c1e95d@postgrespro.ru> Content-Type: multipart/mixed; boundary="------------B1C3237128B38DEF0F433F8D" Content-Language: en-US X-Host-Lookup-Failed: Reverse DNS lookup failed for 66.111.4.226 (deferred) List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk This is a multi-part message in MIME format. --------------B1C3237128B38DEF0F433F8D Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit I've had another go at this, and I've found a solution that appears to address all the issues I'm aware of. It's all very similar to the previously discussed patches. The main difference is that previous patches had attempted to use something like tbinfo->attislocal to determine whether a column was inherited, but that's not correct. This patch uses the existing logic in flagInhAttrs() to find whether there is a matching parent column with a generation expression. I've added pg_dump test cases here to check the different variations that the code addresses. -- Peter Eisentraut 2ndQuadrant, an EDB company https://www.2ndquadrant.com/ --------------B1C3237128B38DEF0F433F8D Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="v4-0001-pg_dump-Fix-dumping-of-inherited-generated-column.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename*0="v4-0001-pg_dump-Fix-dumping-of-inherited-generated-column.pa"; filename*1="tch" RnJvbSA2Y2FjZTZlNmU3OTM1ODQ0MjcyZmIyMDFmYzAwOTZkOGYyMzgxZDAwIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogRnJpLCAyOSBKYW4gMjAyMSAxMzoyMDo0MSArMDEwMApTdWJqZWN0 OiBbUEFUQ0ggdjRdIHBnX2R1bXA6IEZpeCBkdW1waW5nIG9mIGluaGVyaXRlZCBnZW5lcmF0 ZWQgY29sdW1ucwoKR2VuZXJhdGlvbiBleHByZXNzaW9ucyBvZiBnZW5lcmF0ZWQgY29sdW1u cyBhcmUgYWx3YXlzIGluaGVyaXRlZCwgc28KdGhlcmUgaXMgbm8gbmVlZCB0byBzZXQgdGhl bSBzZXBhcmF0ZWx5IGluIGNoaWxkIHRhYmxlcywgYW5kIHRoZXJlIGlzCm5vIHN5bnRheCB0 byBkbyBzbyBlaXRoZXIuICBUaGUgY29kZSBwcmV2aW91c2x5IHVzZWQgdGhlIGNvZGUgcGF0 aHMKZm9yIHRoZSBoYW5kbGluZyBvZiBkZWZhdWx0IHZhbHVlcywgZm9yIHdoaWNoIGRpZmZl cmVudCBydWxlcyBhcHBseTsKaW4gcGFydGljdWxhciBpdCBtaWdodCB3YW50IHRvIHNldCBh IGRlZmF1bHQgdmFsdWUgZXhwbGljaXRseSBmb3IgYW4KaW5oZXJpdGVkIGNvbHVtbi4gIFRo aXMgcmVzdWx0ZWQgaW4gdW5yZXN0b3JhYmxlIGR1bXBzLiAgRm9yIGdlbmVyYXRlZApjb2x1 bW5zLCBqdXN0IHNraXAgdGhlbSBpbiBpbmhlcml0ZWQgdGFibGVzLgoKRGlzY3Vzc2lvbjog aHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvbWVzc2FnZS1pZC9mbGF0LzE1ODMwLjE1NzU0 Njg4NDclNDBzc3MucGdoLnBhLnVzCi0tLQogc3JjL2Jpbi9wZ19kdW1wL2NvbW1vbi5jICAg ICAgICAgfCAzMSArKysrKysrKysrKysrKysrLS0tLS0KIHNyYy9iaW4vcGdfZHVtcC9wZ19k dW1wLmMgICAgICAgIHwgMzcgKysrKysrKysrKysrKysrKysrKysrLS0tLQogc3JjL2Jpbi9w Z19kdW1wL3QvMDAyX3BnX2R1bXAucGwgfCA0NiArKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCAxMDIgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL2NvbW1vbi5jIGIvc3JjL2Jp bi9wZ19kdW1wL2NvbW1vbi5jCmluZGV4IGIwZjAyYmMxZjYuLjFhMjYxYTU1NDUgMTAwNjQ0 Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9jb21tb24uYworKysgYi9zcmMvYmluL3BnX2R1bXAv Y29tbW9uLmMKQEAgLTQ2NywxMiArNDY3LDIyIEBAIGZsYWdJbmhJbmRleGVzKEFyY2hpdmUg KmZvdXQsIFRhYmxlSW5mbyB0YmxpbmZvW10sIGludCBudW1UYWJsZXMpCiAvKiBmbGFnSW5o QXR0cnMgLQogICoJIGZvciBlYWNoIGR1bXBhYmxlIHRhYmxlIGluIHRibGluZm8sIGZsYWcg aXRzIGluaGVyaXRlZCBhdHRyaWJ1dGVzCiAgKgotICogV2hhdCB3ZSBuZWVkIHRvIGRvIGhl cmUgaXMgZGV0ZWN0IGNoaWxkIGNvbHVtbnMgdGhhdCBpbmhlcml0IE5PVCBOVUxMCi0gKiBi aXRzIGZyb20gdGhlaXIgcGFyZW50cyAoc28gdGhhdCB3ZSBuZWVkbid0IHNwZWNpZnkgdGhh dCBhZ2FpbiBmb3IgdGhlCi0gKiBjaGlsZCkgYW5kIGNoaWxkIGNvbHVtbnMgdGhhdCBoYXZl IERFRkFVTFQgTlVMTCB3aGVuIHRoZWlyIHBhcmVudHMgaGFkCi0gKiBzb21lIG5vbi1udWxs IGRlZmF1bHQuICBJbiB0aGUgbGF0dGVyIGNhc2UsIHdlIG1ha2UgdXAgYSBkdW1teSBBdHRy RGVmSW5mbwotICogb2JqZWN0IHNvIHRoYXQgd2UnbGwgY29ycmVjdGx5IGVtaXQgdGhlIG5l Y2Vzc2FyeSBERUZBVUxUIE5VTEwgY2xhdXNlOwotICogb3RoZXJ3aXNlIHRoZSBiYWNrZW5k IHdpbGwgYXBwbHkgYW4gaW5oZXJpdGVkIGRlZmF1bHQgdG8gdGhlIGNvbHVtbi4KKyAqIFdo YXQgd2UgbmVlZCB0byBkbyBoZXJlIGlzOgorICoKKyAqIC0gRGV0ZWN0IGNoaWxkIGNvbHVt bnMgdGhhdCBpbmhlcml0IE5PVCBOVUxMIGJpdHMgZnJvbSB0aGVpciBwYXJlbnRzLCBzbwor ICogICB0aGF0IHdlIG5lZWRuJ3Qgc3BlY2lmeSB0aGF0IGFnYWluIGZvciB0aGUgY2hpbGQu CisgKgorICogLSBEZXRlY3QgY2hpbGQgY29sdW1ucyB0aGF0IGhhdmUgREVGQVVMVCBOVUxM IHdoZW4gdGhlaXIgcGFyZW50cyBoYWQgc29tZQorICogICBub24tbnVsbCBkZWZhdWx0LiAg SW4gdGhpcyBjYXNlLCB3ZSBtYWtlIHVwIGEgZHVtbXkgQXR0ckRlZkluZm8gb2JqZWN0IHNv CisgKiAgIHRoYXQgd2UnbGwgY29ycmVjdGx5IGVtaXQgdGhlIG5lY2Vzc2FyeSBERUZBVUxU IE5VTEwgY2xhdXNlOyBvdGhlcndpc2UKKyAqICAgdGhlIGJhY2tlbmQgd2lsbCBhcHBseSBh biBpbmhlcml0ZWQgZGVmYXVsdCB0byB0aGUgY29sdW1uLgorICoKKyAqIC0gRGV0ZWN0IGNo aWxkIGNvbHVtbnMgdGhhdCBoYXZlIGEgZ2VuZXJhdGlvbiBleHByZXNzaW9uIHdoZW4gdGhl aXIgcGFyZW50cworICogICBhbHNvIGhhdmUgb25lLiAgR2VuZXJhdGlvbiBleHByZXNzaW9u cyBhcmUgYWx3YXlzIGluaGVyaXRlZCwgc28gdGhlcmUgaXMKKyAqICAgbm8gbmVlZCB0byBz ZXQgdGhlbSBhZ2FpbiBpbiBjaGlsZCB0YWJsZXMsIGFuZCB0aGVyZSBpcyBubyBzeW50YXgg Zm9yIGl0CisgKiAgIGVpdGhlci4gIChFeGNlcHRpb246IEluIGJpbmFyeSB1cGdyYWRlIG1v ZGUgd2UgZHVtcCB0aGVtIGJlY2F1c2UKKyAqICAgaW5oZXJpdGVkIHRhYmxlcyBhcmUgcmVj cmVhdGVkIHN0YW5kYWxvbmUgZmlyc3QgYW5kIHRoZW4gcmVhdHRhY2hlZCB0bworICogICB0 aGUgcGFyZW50LikKICAqCiAgKiBtb2RpZmllcyB0YmxpbmZvCiAgKi8KQEAgLTUxMCw2ICs1 MjAsNyBAQCBmbGFnSW5oQXR0cnMoRHVtcE9wdGlvbnMgKmRvcHQsIFRhYmxlSW5mbyAqdGJs aW5mbywgaW50IG51bVRhYmxlcykKIAkJewogCQkJYm9vbAkJZm91bmROb3ROdWxsOwkvKiBB dHRyIHdhcyBOT1QgTlVMTCBpbiBhIHBhcmVudCAqLwogCQkJYm9vbAkJZm91bmREZWZhdWx0 OwkvKiBGb3VuZCBhIGRlZmF1bHQgaW4gYSBwYXJlbnQgKi8KKwkJCWJvb2wJCWZvdW5kR2Vu ZXJhdGVkOwkvKiBGb3VuZCBhIGdlbmVyYXRlZCBpbiBhIHBhcmVudCAqLwogCiAJCQkvKiBu byBwb2ludCBpbiBleGFtaW5pbmcgZHJvcHBlZCBjb2x1bW5zICovCiAJCQlpZiAodGJpbmZv LT5hdHRpc2Ryb3BwZWRbal0pCkBAIC01MTcsNiArNTI4LDcgQEAgZmxhZ0luaEF0dHJzKER1 bXBPcHRpb25zICpkb3B0LCBUYWJsZUluZm8gKnRibGluZm8sIGludCBudW1UYWJsZXMpCiAK IAkJCWZvdW5kTm90TnVsbCA9IGZhbHNlOwogCQkJZm91bmREZWZhdWx0ID0gZmFsc2U7CisJ CQlmb3VuZEdlbmVyYXRlZCA9IGZhbHNlOwogCQkJZm9yIChrID0gMDsgayA8IG51bVBhcmVu dHM7IGsrKykKIAkJCXsKIAkJCQlUYWJsZUluZm8gICpwYXJlbnQgPSBwYXJlbnRzW2tdOwpA QCAtNTI4LDcgKzU0MCw4IEBAIGZsYWdJbmhBdHRycyhEdW1wT3B0aW9ucyAqZG9wdCwgVGFi bGVJbmZvICp0YmxpbmZvLCBpbnQgbnVtVGFibGVzKQogCQkJCWlmIChpbmhBdHRySW5kID49 IDApCiAJCQkJewogCQkJCQlmb3VuZE5vdE51bGwgfD0gcGFyZW50LT5ub3RudWxsW2luaEF0 dHJJbmRdOwotCQkJCQlmb3VuZERlZmF1bHQgfD0gKHBhcmVudC0+YXR0cmRlZnNbaW5oQXR0 ckluZF0gIT0gTlVMTCk7CisJCQkJCWZvdW5kRGVmYXVsdCB8PSAocGFyZW50LT5hdHRyZGVm c1tpbmhBdHRySW5kXSAhPSBOVUxMICYmICFwYXJlbnQtPmF0dGdlbmVyYXRlZFtpbmhBdHRy SW5kXSk7CisJCQkJCWZvdW5kR2VuZXJhdGVkIHw9IHBhcmVudC0+YXR0Z2VuZXJhdGVkW2lu aEF0dHJJbmRdOwogCQkJCX0KIAkJCX0KIApAQCAtNTcwLDYgKzU4MywxMCBAQCBmbGFnSW5o QXR0cnMoRHVtcE9wdGlvbnMgKmRvcHQsIFRhYmxlSW5mbyAqdGJsaW5mbywgaW50IG51bVRh YmxlcykKIAogCQkJCXRiaW5mby0+YXR0cmRlZnNbal0gPSBhdHRyRGVmOwogCQkJfQorCisJ CQkvKiBSZW1vdmUgZ2VuZXJhdGlvbiBleHByZXNzaW9uIGZyb20gY2hpbGQgKi8KKwkJCWlm IChmb3VuZEdlbmVyYXRlZCAmJiAhZG9wdC0+YmluYXJ5X3VwZ3JhZGUpCisJCQkJdGJpbmZv LT5hdHRyZGVmc1tqXSA9IE5VTEw7CiAJCX0KIAl9CiB9CmRpZmYgLS1naXQgYS9zcmMvYmlu L3BnX2R1bXAvcGdfZHVtcC5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwppbmRleCA3 OThkMTQ1ODBlLi44MWE4M2I0YTEyIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdf ZHVtcC5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKQEAgLTg4MzksMTMgKzg4 MzksMzcgQEAgZ2V0VGFibGVBdHRycyhBcmNoaXZlICpmb3V0LCBUYWJsZUluZm8gKnRibGlu Zm8sIGludCBudW1UYWJsZXMpCiAJCQkJYXR0cmRlZnNbal0uZG9iai5kdW1wID0gdGJpbmZv LT5kb2JqLmR1bXA7CiAKIAkJCQkvKgotCQkJCSAqIERlZmF1bHRzIG9uIGEgVklFVyBtdXN0 IGFsd2F5cyBiZSBkdW1wZWQgYXMgc2VwYXJhdGUgQUxURVIKLQkJCQkgKiBUQUJMRSBjb21t YW5kcy4gIERlZmF1bHRzIG9uIHJlZ3VsYXIgdGFibGVzIGFyZSBkdW1wZWQgYXMKLQkJCQkg KiBwYXJ0IG9mIHRoZSBDUkVBVEUgVEFCTEUgaWYgcG9zc2libGUsIHdoaWNoIGl0IHdvbid0 IGJlIGlmCi0JCQkJICogdGhlIGNvbHVtbiBpcyBub3QgZ29pbmcgdG8gYmUgZW1pdHRlZCBl eHBsaWNpdGx5LgorCQkJCSAqIEZpZ3VyZSBvdXQgd2hldGhlciB0aGUgZGVmYXVsdC9nZW5l cmF0aW9uIGV4cHJlc3Npb24gc2hvdWxkCisJCQkJICogYmUgZHVtcGVkIGFzIHBhcnQgb2Yg dGhlIG1haW4gQ1JFQVRFIFRBQkxFIChvciBzaW1pbGFyKQorCQkJCSAqIGNvbW1hbmQgb3Ig YXMgYSBzZXBhcmF0ZSBBTFRFUiBUQUJMRSAob3Igc2ltaWxhcikgY29tbWFuZC4KKwkJCQkg KiBUaGUgcHJlZmVyZW5jZSBpcyB0byBwdXQgaXQgaW50byB0aGUgQ1JFQVRFIGNvbW1hbmQs IGJ1dCBpbgorCQkJCSAqIHNvbWUgY2FzZXMgdGhhdCdzIG5vdCBwb3NzaWJsZS4KIAkJCQkg Ki8KLQkJCQlpZiAodGJpbmZvLT5yZWxraW5kID09IFJFTEtJTkRfVklFVykKKwkJCQlpZiAo dGJpbmZvLT5hdHRnZW5lcmF0ZWRbYWRudW0gLSAxXSkKIAkJCQl7CisJCQkJCS8qCisJCQkJ CSAqIENvbHVtbiBnZW5lcmF0aW9uIGV4cHJlc3Npb25zIGNhbm5vdCBiZSBkdW1wZWQKKwkJ CQkJICogc2VwYXJhdGVseSwgYmVjYXVzZSB0aGVyZSBpcyBubyBzeW50YXggZm9yIGl0LiAg VGhlCisJCQkJCSAqICFzaG91bGRQcmludENvbHVtbiBjYXNlIGJlbG93IHdpbGwgYmUgdGVt cHRlZCB0byBzZXQKKwkJCQkJICogdGhlbSB0byBzZXBhcmF0ZSBpZiB0aGV5IGFyZSBhdHRh Y2hlZCB0byBhbiBpbmhlcml0ZWQKKwkJCQkJICogY29sdW1uIHdpdGhvdXQgYSBsb2NhbCBk ZWZpbml0aW9uLCBidXQgdGhhdCB3b3VsZCBiZQorCQkJCQkgKiB3cm9uZyBhbmQgdW5uZWNl c3NhcnksIGJlY2F1c2UgZ2VuZXJhdGlvbiBleHByZXNzaW9ucworCQkJCQkgKiBhcmUgYWx3 YXlzIGluaGVyaXRlZCwgc28gdGhlcmUgaXMgbm8gbmVlZCB0byBzZXQgdGhlbQorCQkJCQkg KiBhZ2FpbiBpbiBjaGlsZCB0YWJsZXMsIGFuZCB0aGVyZSBpcyBubyBzeW50YXggZm9yIGl0 CisJCQkJCSAqIGVpdGhlci4gIEJ5IHNldHRpbmcgc2VwYXJhdGUgdG8gZmFsc2UgaGVyZSB3 ZSBwcmV2ZW50CisJCQkJCSAqIHRoZSAiZGVmYXVsdCIgZnJvbSBiZWluZyBwcm9jZXNzZWQg YXMgaXRzIG93biBkdW1wYWJsZQorCQkJCQkgKiBvYmplY3QsIGFuZCBmbGFnSW5oQXR0cnMo KSB3aWxsIHJlbW92ZSBpdCBmcm9tIHRoZQorCQkJCQkgKiB0YWJsZSB3aGVuIGl0IGRldGVj dHMgdGhhdCBpdCBiZWxvbmdzIHRvIGFuIGluaGVyaXRlZAorCQkJCQkgKiBjb2x1bW4uCisJ CQkJCSAqLworCQkJCQlhdHRyZGVmc1tqXS5zZXBhcmF0ZSA9IGZhbHNlOworCQkJCX0KKwkJ CQllbHNlIGlmICh0YmluZm8tPnJlbGtpbmQgPT0gUkVMS0lORF9WSUVXKQorCQkJCXsKKwkJ CQkJLyoKKwkJCQkJICogRGVmYXVsdHMgb24gYSBWSUVXIG11c3QgYWx3YXlzIGJlIGR1bXBl ZCBhcyBzZXBhcmF0ZQorCQkJCQkgKiBBTFRFUiBUQUJMRSBjb21tYW5kcy4KKwkJCQkJICov CiAJCQkJCWF0dHJkZWZzW2pdLnNlcGFyYXRlID0gdHJ1ZTsKIAkJCQl9CiAJCQkJZWxzZSBp ZiAoIXNob3VsZFByaW50Q29sdW1uKGRvcHQsIHRiaW5mbywgYWRudW0gLSAxKSkKQEAgLTg4 NTYsNyArODg4MCwxMCBAQCBnZXRUYWJsZUF0dHJzKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5m byAqdGJsaW5mbywgaW50IG51bVRhYmxlcykKIAkJCQllbHNlCiAJCQkJewogCQkJCQlhdHRy ZGVmc1tqXS5zZXBhcmF0ZSA9IGZhbHNlOworCQkJCX0KIAorCQkJCWlmICghYXR0cmRlZnNb al0uc2VwYXJhdGUpCisJCQkJewogCQkJCQkvKgogCQkJCQkgKiBNYXJrIHRoZSBkZWZhdWx0 IGFzIG5lZWRpbmcgdG8gYXBwZWFyIGJlZm9yZSB0aGUgdGFibGUsCiAJCQkJCSAqIHNvIHRo YXQgYW55IGRlcGVuZGVuY2llcyBpdCBoYXMgbXVzdCBiZSBlbWl0dGVkIGJlZm9yZQpkaWZm IC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwgYi9zcmMvYmluL3Bn X2R1bXAvdC8wMDJfcGdfZHVtcC5wbAppbmRleCA3OTg4ODRkYTM2Li43MzdlNDY0NjRhIDEw MDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbAorKysgYi9zcmMv YmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbApAQCAtMjQ5Myw2ICsyNDkzLDUyIEBACiAJ CXVubGlrZSA9PiB7IGV4Y2x1ZGVfZHVtcF90ZXN0X3NjaGVtYSA9PiAxLCB9LAogCX0sCiAK KwknQ1JFQVRFIFRBQkxFIHRlc3RfdGFibGVfZ2VuZXJhdGVkX2NoaWxkMSAod2l0aG91dCBs b2NhbCBjb2x1bW5zKScgPT4geworCQljcmVhdGVfb3JkZXIgPT4gNCwKKwkJY3JlYXRlX3Nx bCAgID0+ICdDUkVBVEUgVEFCTEUgZHVtcF90ZXN0LnRlc3RfdGFibGVfZ2VuZXJhdGVkX2No aWxkMSAoKQorCQkJCQkJIElOSEVSSVRTIChkdW1wX3Rlc3QudGVzdF90YWJsZV9nZW5lcmF0 ZWQpOycsCisJCXJlZ2V4cCA9PiBxci9eCisJCQlcUUNSRUFURSBUQUJMRSBkdW1wX3Rlc3Qu dGVzdF90YWJsZV9nZW5lcmF0ZWRfY2hpbGQxIChcRVxuCisJCQlcKVxuCisJCQlcUUlOSEVS SVRTIChkdW1wX3Rlc3QudGVzdF90YWJsZV9nZW5lcmF0ZWQpO1xFXG4KKwkJCS94bXMsCisJ CWxpa2UgPT4KKwkJICB7ICVmdWxsX3J1bnMsICVkdW1wX3Rlc3Rfc2NoZW1hX3J1bnMsIHNl Y3Rpb25fcHJlX2RhdGEgPT4gMSwgfSwKKwkJdW5saWtlID0+IHsKKwkJCWJpbmFyeV91cGdy YWRlICAgICAgICAgICA9PiAxLAorCQkJZXhjbHVkZV9kdW1wX3Rlc3Rfc2NoZW1hID0+IDEs CisJCX0sCisJfSwKKworCSdBTFRFUiBUQUJMRSB0ZXN0X3RhYmxlX2dlbmVyYXRlZF9jaGls ZDEnID0+IHsKKwkJcmVnZXhwID0+CisJCSAgcXIvXlxRQUxURVIgVEFCTEUgT05MWSBkdW1w X3Rlc3QudGVzdF90YWJsZV9nZW5lcmF0ZWRfY2hpbGQxIEFMVEVSIENPTFVNTiBjb2wyIFxF L20sCisKKwkJIyBzaG91bGQgbm90IGdldCBlbWl0dGVkCisJCWxpa2UgPT4ge30sCisJfSwK KworCSdDUkVBVEUgVEFCTEUgdGVzdF90YWJsZV9nZW5lcmF0ZWRfY2hpbGQyICh3aXRoIGxv Y2FsIGNvbHVtbnMpJyA9PiB7CisJCWNyZWF0ZV9vcmRlciA9PiA0LAorCQljcmVhdGVfc3Fs ICAgPT4gJ0NSRUFURSBUQUJMRSBkdW1wX3Rlc3QudGVzdF90YWJsZV9nZW5lcmF0ZWRfY2hp bGQyICgKKwkJCQkJCSAgIGNvbDEgaW50LAorCQkJCQkJICAgY29sMiBpbnQKKwkJCQkJCSAp IElOSEVSSVRTIChkdW1wX3Rlc3QudGVzdF90YWJsZV9nZW5lcmF0ZWQpOycsCisJCXJlZ2V4 cCA9PiBxci9eCisJCQlcUUNSRUFURSBUQUJMRSBkdW1wX3Rlc3QudGVzdF90YWJsZV9nZW5l cmF0ZWRfY2hpbGQyIChcRVxuCisJCQlccytcUWNvbDEgaW50ZWdlcixcRVxuCisJCQlccytc UWNvbDIgaW50ZWdlclxFXG4KKwkJCVwpXG4KKwkJCVxRSU5IRVJJVFMgKGR1bXBfdGVzdC50 ZXN0X3RhYmxlX2dlbmVyYXRlZCk7XEVcbgorCQkJL3htcywKKwkJbGlrZSA9PgorCQkgIHsg JWZ1bGxfcnVucywgJWR1bXBfdGVzdF9zY2hlbWFfcnVucywgc2VjdGlvbl9wcmVfZGF0YSA9 PiAxLCB9LAorCQl1bmxpa2UgPT4geworCQkJYmluYXJ5X3VwZ3JhZGUgICAgICAgICAgID0+ IDEsCisJCQlleGNsdWRlX2R1bXBfdGVzdF9zY2hlbWEgPT4gMSwKKwkJfSwKKwl9LAorCiAJ J0NSRUFURSBUQUJMRSB0YWJsZV93aXRoX3N0YXRzJyA9PiB7CiAJCWNyZWF0ZV9vcmRlciA9 PiA5OCwKIAkJY3JlYXRlX3NxbCAgID0+ICdDUkVBVEUgVEFCTEUgZHVtcF90ZXN0LnRhYmxl X2luZGV4X3N0YXRzICgKCmJhc2UtY29tbWl0OiBiMDM0ZWY5YjM3NmRiZTcxMmNhYTA3NjU0 MWQ2YTc1MGYzN2Q4NWNlCi0tIAoyLjMwLjAKCg== --------------B1C3237128B38DEF0F433F8D--