Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bO63f-0000rT-J9 for pgsql-hackers@arkaria.postgresql.org; Fri, 15 Jul 2016 16:33:47 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84_2) (envelope-from ) id 1bO63e-00055m-KN for pgsql-hackers@arkaria.postgresql.org; Fri, 15 Jul 2016 16:33:46 +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.84_2) (envelope-from ) id 1bO63d-000559-4U for pgsql-hackers@postgresql.org; Fri, 15 Jul 2016 16:33:45 +0000 Received: from jiboia.ensmp.fr ([194.214.158.137]) by makus.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bO63X-0003fC-Rk for pgsql-hackers@postgresql.org; Fri, 15 Jul 2016 16:33:43 +0000 Received: from cri.ensmp.fr (AGrenoble-653-1-9-251.w90-52.abo.wanadoo.fr [90.52.183.251]) (authenticated bits=0) by jiboia.ensmp.fr (8.15.2/8.15.1/JMMC-22/Oct/2013) with ESMTPSA id u6FGXX1P019912 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Fri, 15 Jul 2016 18:33:34 +0200 Date: Fri, 15 Jul 2016 18:33:33 +0200 (CEST) From: Fabien COELHO X-X-Sender: fabien@sto To: Tom Lane cc: Robert Haas , Pavel Stehule , PostgreSQL Developers Subject: Re: pgbench - allow to store select results into variables In-Reply-To: <32184.1468440143@sss.pgh.pa.us> Message-ID: References: <32184.1468440143@sss.pgh.pa.us> User-Agent: Alpine 2.20 (DEB 67 2015-01-07) MIME-Version: 1.0 Content-Type: multipart/mixed; BOUNDARY="8323329-692611719-1468600414=:7291" X-Miltered: at jiboia.ensmp.fr with ID 5789105D.000 by Joe's j-chkmail (http : // j-chkmail dot ensmp dot fr)! X-j-chkmail-Auth: USER-ID fabien.coelho X-j-chkmail-Enveloppe: 5789105D.000 from AGrenoble-653-1-9-251.w90-52.abo.wanadoo.fr/AGrenoble-653-1-9-251.w90-52.abo.wanadoo.fr/90.52.183.251/cri.ensmp.fr/ X-Pg-Spam-Score: -3.2 (---) List-Archive: List-Help: List-ID: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-Mailing-List: pgsql-hackers Precedence: bulk Sender: pgsql-hackers-owner@postgresql.org This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. --8323329-692611719-1468600414=:7291 Content-Type: text/plain; charset=US-ASCII; format=flowed Hello again, > I'd be okay with > > SELECT 1, 2 \into one two > SELECT 3 \into three Here is a v2 with more or less this approach, although \into does not end the query, but applies to the current or last sql command. A query is still terminated with a ";". Now it handles things like : -- standard sql command SELECT balance FROM bank WHERE id=1; \into balance -- compound sql command, three == 3. SELECT 1, 2 \; SELECT 3 ; \into three -- compound query with 2 selects & 3 variables SELECT i \into one FROM generate_series(1, 1) AS i \; SELECT i+1, i+2 \into two three FROM generate_series(1, 1) AS i ; I had to add a few lines in psql scanner to count "\;", so the parsing logic is a little more complicated than before. -- Fabien. --8323329-692611719-1468600414=:7291 Content-Type: text/x-diff; name=pgbench-into-2.patch Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename=pgbench-into-2.patch ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvcGdiZW5jaC5zZ21sIGIv ZG9jL3NyYy9zZ21sL3JlZi9wZ2JlbmNoLnNnbWwNCmluZGV4IGYzYWZlZGIu LmNjYTJjYzIgMTAwNjQ0DQotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL3BnYmVu Y2guc2dtbA0KKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9wZ2JlbmNoLnNnbWwN CkBAIC04MDksNiArODA5LDMwIEBAIHBnYmVuY2ggPG9wdGlvbmFsPiA8cmVw bGFjZWFibGU+b3B0aW9uczwvPiA8L29wdGlvbmFsPiA8cmVwbGFjZWFibGU+ ZGJuYW1lPC8+DQogICA8L3BhcmE+DQogDQogICA8dmFyaWFibGVsaXN0Pg0K KyAgIDx2YXJsaXN0ZW50cnkgaWQ9J3BnYmVuY2gtbWV0YWNvbW1hbmQtaW50 byc+DQorICAgIDx0ZXJtPg0KKyAgICAgPGxpdGVyYWw+XGludG8gPHJlcGxh Y2VhYmxlPnZhcjE8Lz4gWzxyZXBsYWNlYWJsZT52YXIyPC8+IC4uLl08L2xp dGVyYWw+DQorICAgIDwvdGVybT4NCisNCisgICAgPGxpc3RpdGVtPg0KKyAg ICAgPHBhcmE+DQorICAgICAgU3RvcmVzIHRoZSBmaXJzdCBmaWVsZHMgb2Yg dGhlIHJlc3VsdGluZyByb3cgZnJvbSB0aGUgY3VycmVudCBvciBwcmVjZWRp bmcNCisgICAgICA8Y29tbWFuZD5TRUxFQ1Q8Lz4gY29tbWFuZCBpbnRvIHRo ZXNlIHZhcmlhYmxlcy4NCisgICAgICBUaGUgcXVlcmllcyBtdXN0IHlpZWxk IGV4YWN0bHkgb25lIHJvdyBhbmQgdGhlIG51bWJlciBvZiBwcm92aWRlZA0K KyAgICAgIHZhcmlhYmxlcyBtdXN0IGJlIGxlc3MgdGhhbiB0aGUgdG90YWwg bnVtYmVyIG9mIGNvbHVtbnMgb2YgdGhlIHJlc3VsdHMuDQorICAgICAgVGhp cyBtZXRhIGNvbW1hbmQgZG9lcyBub3QgZW5kIHRoZSBjdXJyZW50IFNRTCBj b21tYW5kLg0KKyAgICAgPC9wYXJhPg0KKw0KKyAgICAgPHBhcmE+DQorICAg ICAgRXhhbXBsZToNCis8cHJvZ3JhbWxpc3Rpbmc+DQorU0VMRUNUIGFiYWxh bmNlIFxpbnRvIGFiYWxhbmNlDQorICBGUk9NIHBnYmVuY2hfYWNjb3VudHMg V0hFUkUgYWlkPTU0MzI7DQorPC9wcm9ncmFtbGlzdGluZz4NCisgICAgIDwv cGFyYT4NCisgICAgPC9saXN0aXRlbT4NCisgICA8L3Zhcmxpc3RlbnRyeT4N CisNCiAgICA8dmFybGlzdGVudHJ5IGlkPSdwZ2JlbmNoLW1ldGFjb21tYW5k LXNldCc+DQogICAgIDx0ZXJtPg0KICAgICAgPGxpdGVyYWw+XHNldCA8cmVw bGFjZWFibGU+dmFybmFtZTwvPiA8cmVwbGFjZWFibGU+ZXhwcmVzc2lvbjwv PjwvbGl0ZXJhbD4NCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnYmVuY2gvcGdi ZW5jaC5jIGIvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYw0KaW5kZXggODdm YjAwNi4uNjY3YjYzYyAxMDA2NDQNCi0tLSBhL3NyYy9iaW4vcGdiZW5jaC9w Z2JlbmNoLmMNCisrKyBiL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMNCkBA IC0zMDIsMTEgKzMwMiwxNCBAQCBzdGF0aWMgY29uc3QgY2hhciAqUVVFUllN T0RFW10gPSB7InNpbXBsZSIsICJleHRlbmRlZCIsICJwcmVwYXJlZCJ9Ow0K IA0KIHR5cGVkZWYgc3RydWN0DQogew0KLQljaGFyCSAgICpsaW5lOwkJCS8q IHRleHQgb2YgY29tbWFuZCBsaW5lICovDQorCWNoYXIJICAgKmxpbmU7CQkJ LyogZmlyc3QgbGluZSBmb3Igc2hvcnQgZGlzcGxheSAqLw0KKwljaGFyCSAg ICpsaW5lczsJCQkvKiBmdWxsIG11bHRpLWxpbmUgdGV4dCBvZiBjb21tYW5k ICovDQogCWludAkJCWNvbW1hbmRfbnVtOwkvKiB1bmlxdWUgaW5kZXggb2Yg dGhpcyBDb21tYW5kIHN0cnVjdCAqLw0KIAlpbnQJCQl0eXBlOwkJCS8qIGNv bW1hbmQgdHlwZSAoU1FMX0NPTU1BTkQgb3IgTUVUQV9DT01NQU5EKSAqLw0K IAlpbnQJCQlhcmdjOwkJCS8qIG51bWJlciBvZiBjb21tYW5kIHdvcmRzICov DQogCWNoYXIJICAgKmFyZ3ZbTUFYX0FSR1NdOyAvKiBjb21tYW5kIHdvcmQg bGlzdCAqLw0KKwlpbnQJCQljb21wb3VuZDsgICAgICAgLyogbGFzdCBjb21w b3VuZCBjb21tYW5kIChudW1iZXIgb2YgXDspICovDQorCWNoYXIgICAgKioq aW50b3M7ICAgICAgICAgICAvKiBwZXItY29tcG91bmQgY29tbWFuZCBcaW50 byB2YXJpYWJsZXMgKi8NCiAJUGdCZW5jaEV4cHIgKmV4cHI7CQkJLyogcGFy c2VkIGV4cHJlc3Npb24sIGlmIG5lZWRlZCAqLw0KIAlTaW1wbGVTdGF0cyBz dGF0czsJCQkvKiB0aW1lIHNwZW50IGluIHRoaXMgY29tbWFuZCAqLw0KIH0g Q29tbWFuZDsNCkBAIC0xMTQ4LDYgKzExNTEsMTA3IEBAIGdldFF1ZXJ5UGFy YW1zKENTdGF0ZSAqc3QsIGNvbnN0IENvbW1hbmQgKmNvbW1hbmQsIGNvbnN0 IGNoYXIgKipwYXJhbXMpDQogCQlwYXJhbXNbaV0gPSBnZXRWYXJpYWJsZShz dCwgY29tbWFuZC0+YXJndltpICsgMV0pOw0KIH0NCiANCisvKiByZWFkIGFs bCByZXNwb25zZXMgZnJvbSBiYWNrZW5kICovDQorc3RhdGljIGJvb2wNCity ZWFkX3Jlc3BvbnNlKENTdGF0ZSAqc3QsIGNoYXIgKiogaW50b3NbXSkNCit7 DQorCVBHcmVzdWx0ICAgKnJlczsNCisJaW50CQkJY29tcG91bmQgPSAtMTsN CisNCisJd2hpbGUgKChyZXMgPSBQUWdldFJlc3VsdChzdC0+Y29uKSkgIT0g TlVMTCkNCisJew0KKwkJY29tcG91bmQgKz0gMTsNCisNCisJCXN3aXRjaCAo UFFyZXN1bHRTdGF0dXMocmVzKSkNCisJCXsNCisJCWNhc2UgUEdSRVNfQ09N TUFORF9PSzogLyogbm9uLVNFTEVDVCBjb21tYW5kcyAqLw0KKwkJCWlmIChp bnRvc1tjb21wb3VuZF0gIT0gTlVMTCkNCisJCQl7DQorCQkJCWZwcmludGYo c3RkZXJyLA0KKwkJCQkJCSJjbGllbnQgJWQgc3RhdGUgJWQgY29tcG91bmQg JWQ6ICINCisJCQkJCQkiY2Fubm90IGFwcGx5IFxcaW50byB0byBub24gU0VM RUNUIHN0YXRlbWVudFxuIiwNCisJCQkJCQlzdC0+aWQsIHN0LT5zdGF0ZSwg Y29tcG91bmQpOw0KKwkJCQlzdC0+ZWNudCsrOw0KKwkJCQlyZXR1cm4gZmFs c2U7DQorCQkJfQ0KKwkJY2FzZSBQR1JFU19FTVBUWV9RVUVSWTogLyogbWF5 IGJlIHVzZWQgZm9yIHRlc3Rpbmcgbm8tb3Agb3ZlcmhlYWQgKi8NCisJCQli cmVhazsgLyogT0sgKi8NCisNCisJCWNhc2UgUEdSRVNfVFVQTEVTX09LOg0K KwkJCWlmIChpbnRvc1tjb21wb3VuZF0gIT0gTlVMTCkNCisJCQl7DQorCQkJ CS8qIHN0b3JlIHJlc3VsdCBpbnRvIHZhcmlhYmxlcyAqLw0KKwkJCQlpbnQg bnR1cGxlcyA9IFBRbnR1cGxlcyhyZXMpLA0KKwkJCQkJbmZpZWxkcyA9IFBR bmZpZWxkcyhyZXMpLA0KKwkJCQkJZiA9IDA7DQorDQorCQkJCWlmIChudHVw bGVzICE9IDEpDQorCQkJCXsNCisJCQkJCWZwcmludGYoc3RkZXJyLA0KKwkJ CQkJCQkiY2xpZW50ICVkIHN0YXRlICVkIGNvbXBvdW5kICVkOiAiDQorCQkJ CQkJCSJleHBlY3Rpbmcgb25lIHJvdywgZ290ICVkXG4iLA0KKwkJCQkJCQlz dC0+aWQsIHN0LT5zdGF0ZSwgY29tcG91bmQsIG50dXBsZXMpOw0KKwkJCQkJ c3QtPmVjbnQrKzsNCisJCQkJCVBRY2xlYXIocmVzKTsNCisJCQkJCWRpc2Nh cmRfcmVzcG9uc2Uoc3QpOw0KKwkJCQkJcmV0dXJuIGZhbHNlOw0KKwkJCQl9 DQorDQorCQkJCXdoaWxlIChpbnRvc1tjb21wb3VuZF1bZl0gIT0gTlVMTCAm JiBmIDwgbmZpZWxkcykNCisJCQkJew0KKwkJCQkJLyogc3RvcmUgcmVzdWx0 IGFzIGEgc3RyaW5nICovDQorCQkJCQlpZiAoIXB1dFZhcmlhYmxlKHN0LCAi aW50byIsIGludG9zW2NvbXBvdW5kXVtmXSwNCisJCQkJCQkJCQkgUFFnZXR2 YWx1ZShyZXMsIDAsIGYpKSkNCisJCQkJCXsNCisJCQkJCQkvKiBpbnRlcm5h bCBlcnJvciwgc2hvdWxkIGl0IHJhdGhlciBhYm9ydD8gKi8NCisJCQkJCQlm cHJpbnRmKHN0ZGVyciwNCisJCQkJCQkJCSJjbGllbnQgJWQgc3RhdGUgJWQg Y29tcG91bmQgJWQ6ICINCisJCQkJCQkJCSJlcnJvciBzdG9yaW5nIGludG8g dmFyICVzXG4iLA0KKwkJCQkJCQkJc3QtPmlkLCBzdC0+c3RhdGUsIGNvbXBv dW5kLCBpbnRvc1tjb21wb3VuZF1bZl0pOw0KKwkJCQkJCXN0LT5lY250Kys7 DQorCQkJCQkJUFFjbGVhcihyZXMpOw0KKwkJCQkJCWRpc2NhcmRfcmVzcG9u c2Uoc3QpOw0KKwkJCQkJCXJldHVybiBmYWxzZTsNCisJCQkJCX0NCisNCisJ CQkJCWYrKzsNCisJCQkJfQ0KKw0KKwkJCQlpZiAoaW50b3NbY29tcG91bmRd W2ZdICE9IE5VTEwpDQorCQkJCXsNCisJCQkJCWZwcmludGYoc3RkZXJyLA0K KwkJCQkJCQkiY2xpZW50ICVkIHN0YXRlICVkIGNvbXBvdW5kICVkOiBtaXNz aW5nIHJlc3VsdHMiDQorCQkJCQkJCSIgdG8gZmlsbCBpbnRvIHZhcmlhYmxl ICVzXG4iLA0KKwkJCQkJCQlzdC0+aWQsIHN0LT5zdGF0ZSwgY29tcG91bmQs IGludG9zW2NvbXBvdW5kXVtmXSk7DQorCQkJCQlzdC0+ZWNudCsrOw0KKwkJ CQkJcmV0dXJuIGZhbHNlOw0KKwkJCQl9DQorCQkJfQ0KKwkJCWJyZWFrOwkv KiBPSyAqLw0KKw0KKwkJZGVmYXVsdDoNCisJCQkvKiBldmVyeXRoaW5nIGVs c2UgaXMgdW5leHBlY3RlZCwgc28gcHJvYmFibHkgYW4gZXJyb3IgKi8NCisJ CQlmcHJpbnRmKHN0ZGVyciwgImNsaWVudCAlZCBhYm9ydGVkIGluIHN0YXRl ICVkIGNvbXBvdW5kICVkOiAlcyIsDQorCQkJCQlzdC0+aWQsIHN0LT5zdGF0 ZSwgY29tcG91bmQsIFBRZXJyb3JNZXNzYWdlKHN0LT5jb24pKTsNCisJCQlz dC0+ZWNudCsrOw0KKwkJCVBRY2xlYXIocmVzKTsNCisJCQlkaXNjYXJkX3Jl c3BvbnNlKHN0KTsNCisJCQlyZXR1cm4gZmFsc2U7DQorCQl9DQorDQorCQlQ UWNsZWFyKHJlcyk7DQorCX0NCisNCisJaWYgKGNvbXBvdW5kID09IC0xKQ0K Kwl7DQorCQlmcHJpbnRmKHN0ZGVyciwgImNsaWVudCAlZCBzdGF0ZSAlZDog bm8gcmVzdWx0c1xuIiwgc3QtPmlkLCBzdC0+c3RhdGUpOw0KKwkJc3QtPmVj bnQrKzsNCisJCXJldHVybiBmYWxzZTsNCisJfQ0KKw0KKwlyZXR1cm4gdHJ1 ZTsNCit9DQorDQogLyogZ2V0IGEgdmFsdWUgYXMgYW4gaW50LCB0ZWxsIGlm IHRoZXJlIGlzIGEgcHJvYmxlbSAqLw0KIHN0YXRpYyBib29sDQogY29lcmNl VG9JbnQoUGdCZW5jaFZhbHVlICpwdmFsLCBpbnQ2NCAqaXZhbCkNCkBAIC0x NzY0LDcgKzE4NjgsNiBAQCBjaG9vc2VTY3JpcHQoVFN0YXRlICp0aHJlYWQp DQogc3RhdGljIGJvb2wNCiBkb0N1c3RvbShUU3RhdGUgKnRocmVhZCwgQ1N0 YXRlICpzdCwgU3RhdHNEYXRhICphZ2cpDQogew0KLQlQR3Jlc3VsdCAgICpy ZXM7DQogCUNvbW1hbmQgICAqKmNvbW1hbmRzOw0KIAlib29sCQl0cmFuc19u ZWVkc190aHJvdHRsZSA9IGZhbHNlOw0KIAlpbnN0cl90aW1lCW5vdzsNCkBA IC0xODkxLDIyICsxOTk0LDExIEBAIHRvcDoNCiAJCXsNCiAJCQkvKg0KIAkJ CSAqIFJlYWQgYW5kIGRpc2NhcmQgdGhlIHF1ZXJ5IHJlc3VsdDsgbm90ZSB0 aGlzIGlzIG5vdCBpbmNsdWRlZCBpbg0KLQkJCSAqIHRoZSBzdGF0ZW1lbnQg bGF0ZW5jeSBudW1iZXJzLg0KKwkJCSAqIHRoZSBzdGF0ZW1lbnQgbGF0ZW5j eSBudW1iZXJzIChhYm92ZSksIHRodXMgaWYgcmVhZGluZyB0aGUNCisJCQkg KiByZXNwb25zZSBmYWlscyB0aGUgdHJhbnNhY3Rpb24gaXMgY291bnRlZCBu ZXZlcnRoZWxlc3MuDQogCQkJICovDQotCQkJcmVzID0gUFFnZXRSZXN1bHQo c3QtPmNvbik7DQotCQkJc3dpdGNoIChQUXJlc3VsdFN0YXR1cyhyZXMpKQ0K LQkJCXsNCi0JCQkJY2FzZSBQR1JFU19DT01NQU5EX09LOg0KLQkJCQljYXNl IFBHUkVTX1RVUExFU19PSzoNCi0JCQkJCWJyZWFrOwkJLyogT0sgKi8NCi0J CQkJZGVmYXVsdDoNCi0JCQkJCWZwcmludGYoc3RkZXJyLCAiY2xpZW50ICVk IGFib3J0ZWQgaW4gc3RhdGUgJWQ6ICVzIiwNCi0JCQkJCQkJc3QtPmlkLCBz dC0+c3RhdGUsIFBRZXJyb3JNZXNzYWdlKHN0LT5jb24pKTsNCi0JCQkJCVBR Y2xlYXIocmVzKTsNCi0JCQkJCXJldHVybiBjbGllbnREb25lKHN0KTsNCi0J CQl9DQotCQkJUFFjbGVhcihyZXMpOw0KLQkJCWRpc2NhcmRfcmVzcG9uc2Uo c3QpOw0KKwkJCWlmICghcmVhZF9yZXNwb25zZShzdCwgY29tbWFuZHNbc3Qt PnN0YXRlXS0+aW50b3MpKQ0KKwkJCQlyZXR1cm4gY2xpZW50RG9uZShzdCk7 DQogCQl9DQogDQogCQlpZiAoY29tbWFuZHNbc3QtPnN0YXRlICsgMV0gPT0g TlVMTCkNCkBAIC0yNzAxLDIyICsyNzkzLDEwIEBAIHN5bnRheF9lcnJvcihj b25zdCBjaGFyICpzb3VyY2UsIGludCBsaW5lbm8sDQogCWV4aXQoMSk7DQog fQ0KIA0KLS8qDQotICogUGFyc2UgYSBTUUwgY29tbWFuZDsgcmV0dXJuIGEg Q29tbWFuZCBzdHJ1Y3QsIG9yIE5VTEwgaWYgaXQncyBhIGNvbW1lbnQNCi0g Kg0KLSAqIE9uIGVudHJ5LCBwc3Fsc2Nhbi5sIGhhcyBjb2xsZWN0ZWQgdGhl IGNvbW1hbmQgaW50byAiYnVmIiwgc28gd2UgZG9uJ3QNCi0gKiByZWFsbHkg bmVlZCB0byBkbyBtdWNoIGhlcmUgZXhjZXB0IGNoZWNrIGZvciBjb21tZW50 IGFuZCBzZXQgdXAgYQ0KLSAqIENvbW1hbmQgc3RydWN0Lg0KLSAqLw0KLXN0 YXRpYyBDb21tYW5kICoNCi1wcm9jZXNzX3NxbF9jb21tYW5kKFBRRXhwQnVm ZmVyIGJ1ZiwgY29uc3QgY2hhciAqc291cmNlKQ0KK3N0YXRpYyBjaGFyICoN Citza2lwX3NxbF9jb21tZW50cyhjaGFyICogcCkNCiB7DQotCUNvbW1hbmQg ICAgKm15X2NvbW1hbmQ7DQotCWNoYXIJICAgKnA7DQotCWNoYXIJICAgKm5s cG9zOw0KLQ0KIAkvKiBTa2lwIGFueSBsZWFkaW5nIHdoaXRlc3BhY2UsIGFz IHdlbGwgYXMgIi0tIiBzdHlsZSBjb21tZW50cyAqLw0KLQlwID0gYnVmLT5k YXRhOw0KIAlmb3IgKDs7KQ0KIAl7DQogCQlpZiAoaXNzcGFjZSgodW5zaWdu ZWQgY2hhcikgKnApKQ0KQEAgLTI3MzYsMjMgKzI4MTYsOTQgQEAgcHJvY2Vz c19zcWxfY29tbWFuZChQUUV4cEJ1ZmZlciBidWYsIGNvbnN0IGNoYXIgKnNv dXJjZSkNCiAJaWYgKCpwID09ICdcMCcpDQogCQlyZXR1cm4gTlVMTDsNCiAN CisJcmV0dXJuIHA7DQorfQ0KKw0KKy8qDQorICogUGFyc2UgYSBTUUwgY29t bWFuZDsgcmV0dXJuIGEgQ29tbWFuZCBzdHJ1Y3QsIG9yIE5VTEwgaWYgaXQn cyBhIGNvbW1lbnQNCisgKg0KKyAqIE9uIGVudHJ5LCBwc3Fsc2Nhbi5sIGhh cyBjb2xsZWN0ZWQgdGhlIGNvbW1hbmQgaW50byAiYnVmIiwgc28gd2UgZG9u J3QNCisgKiByZWFsbHkgbmVlZCB0byBkbyBtdWNoIGhlcmUgZXhjZXB0IGNo ZWNrIGZvciBjb21tZW50IGFuZCBzZXQgdXAgYQ0KKyAqIENvbW1hbmQgc3Ry dWN0Lg0KKyAqLw0KK3N0YXRpYyBDb21tYW5kICoNCitjcmVhdGVfc3FsX2Nv bW1hbmQoUFFFeHBCdWZmZXIgYnVmLCBjb25zdCBjaGFyICpzb3VyY2UsIGlu dCBjb21wb3VuZHMpDQorew0KKwlDb21tYW5kICAgICpteV9jb21tYW5kOw0K KwljaGFyCSAgICpwID0gc2tpcF9zcWxfY29tbWVudHMoYnVmLT5kYXRhKTsN CisNCisJaWYgKHAgPT0gTlVMTCkNCisJCXJldHVybiBOVUxMOw0KKw0KIAkv KiBBbGxvY2F0ZSBhbmQgaW5pdGlhbGl6ZSBDb21tYW5kIHN0cnVjdHVyZSAq Lw0KIAlteV9jb21tYW5kID0gKENvbW1hbmQgKikgcGdfbWFsbG9jMChzaXpl b2YoQ29tbWFuZCkpOw0KIAlteV9jb21tYW5kLT5jb21tYW5kX251bSA9IG51 bV9jb21tYW5kcysrOw0KIAlteV9jb21tYW5kLT50eXBlID0gU1FMX0NPTU1B TkQ7DQogCW15X2NvbW1hbmQtPmFyZ2MgPSAwOw0KKwlteV9jb21tYW5kLT5j b21wb3VuZCA9IGNvbXBvdW5kczsNCisJbXlfY29tbWFuZC0+aW50b3MgPSBw Z19tYWxsb2MwKHNpemVvZihjaGFyKiopICogKGNvbXBvdW5kcysxKSk7DQog CWluaXRTaW1wbGVTdGF0cygmbXlfY29tbWFuZC0+c3RhdHMpOw0KIA0KKwlt eV9jb21tYW5kLT5saW5lcyA9IHBnX3N0cmR1cChwKTsNCisNCisJcmV0dXJu IG15X2NvbW1hbmQ7DQorfQ0KKw0KK3N0YXRpYyB2b2lkDQorYXBwZW5kX3Nx bF9jb21tYW5kKENvbW1hbmQgKm15X2NvbW1hbmQsIGNoYXIgKm1vcmUsIGlu dCBjb21wb3VuZHMpDQorew0KKwlzaXplX3QgbG1vcmU7DQorCXNpemVfdCBs ZW4gPSBzdHJsZW4obXlfY29tbWFuZC0+bGluZXMpOw0KKwlpbnQgc3BhY2U7 DQorDQorCUFzc2VydChteV9jb21tYW5kLT50eXBlID09IFNRTF9DT01NQU5E ICYmIGxlbiA+IDApOw0KKw0KKwltb3JlID0gc2tpcF9zcWxfY29tbWVudHMo bW9yZSk7DQorDQorCWlmIChtb3JlID09IE5VTEwpDQorCQlyZXR1cm47DQor DQorCS8qIGFkZCBhIHNlcGFyYXRvciBpZiBuZWVkZWQgKi8NCisJc3BhY2Ug PSBpc3NwYWNlKG15X2NvbW1hbmQtPmxpbmVzW2xlbi0xXSkgPyAwIDogMTsN CisJbG1vcmUgPSBzdHJsZW4obW9yZSk7DQorCW15X2NvbW1hbmQtPmxpbmVz ID0gcGdfcmVhbGxvYyhteV9jb21tYW5kLT5saW5lcywgbGVuICsgc3BhY2Ug KyBsbW9yZSArIDEpOw0KKwlpZiAoc3BhY2UgPiAwKQ0KKwkJbXlfY29tbWFu ZC0+bGluZXNbbGVuXSA9ICdcbic7DQorCW1lbWNweShteV9jb21tYW5kLT5s aW5lcyArIGxlbiArIHNwYWNlLCBtb3JlLCBsbW9yZSsxKTsNCisNCisJaWYg KGNvbXBvdW5kcyA+IDApDQorCXsNCisJCWludCBuYyA9IG15X2NvbW1hbmQt PmNvbXBvdW5kICsgY29tcG91bmRzOw0KKwkJbXlfY29tbWFuZC0+aW50b3Mg PQ0KKwkJCXBnX3JlYWxsb2MobXlfY29tbWFuZC0+aW50b3MsIHNpemVvZihj aGFyKiopICogKG5jKzEpKTsNCisJCW1lbXNldChteV9jb21tYW5kLT5pbnRv cyArIG15X2NvbW1hbmQtPmNvbXBvdW5kICsgMSwgMCwNCisJCQkgICBzaXpl b2YoY2hhcioqKSAqIGNvbXBvdW5kcyk7DQorCQlteV9jb21tYW5kLT5jb21w b3VuZCA9IG5jOw0KKwl9DQorfQ0KKw0KK3N0YXRpYyB2b2lkDQorcG9zdHBy b2Nlc3Nfc3FsX2NvbW1hbmQoQ29tbWFuZCAqIG15X2NvbW1hbmQpDQorew0K KwljaGFyCSAgICpubHBvczsNCisJY2hhcgkgICAqcDsNCisNCisJQXNzZXJ0 KG15X2NvbW1hbmQtPnR5cGUgPT0gU1FMX0NPTU1BTkQpOw0KKw0KIAkvKg0K IAkgKiBJZiBTUUwgY29tbWFuZCBpcyBtdWx0aS1saW5lLCB3ZSBvbmx5IHdh bnQgdG8gc2F2ZSB0aGUgZmlyc3QgbGluZSBhcw0KIAkgKiB0aGUgImxpbmUi IGxhYmVsLg0KIAkgKi8NCisJcCA9IG15X2NvbW1hbmQtPmxpbmVzOw0KIAlu bHBvcyA9IHN0cmNocihwLCAnXG4nKTsNCiAJaWYgKG5scG9zKQ0KIAl7DQot CQlteV9jb21tYW5kLT5saW5lID0gcGdfbWFsbG9jKG5scG9zIC0gcCArIDEp Ow0KKwkJbXlfY29tbWFuZC0+bGluZSA9IHBnX21hbGxvYyhubHBvcyAtIHAg ICsgMSArIDMpOw0KIAkJbWVtY3B5KG15X2NvbW1hbmQtPmxpbmUsIHAsIG5s cG9zIC0gcCk7DQotCQlteV9jb21tYW5kLT5saW5lW25scG9zIC0gcF0gPSAn XDAnOw0KKwkJbXlfY29tbWFuZC0+bGluZVtubHBvcyAtIHBdID0gJy4nOw0K KwkJbXlfY29tbWFuZC0+bGluZVtubHBvcyAtIHAgKyAxXSA9ICcuJzsNCisJ CW15X2NvbW1hbmQtPmxpbmVbbmxwb3MgLSBwICsgMl0gPSAnLic7DQorCQlt eV9jb21tYW5kLT5saW5lW25scG9zIC0gcCArIDNdID0gJ1wwJzsNCiAJfQ0K IAllbHNlDQogCQlteV9jb21tYW5kLT5saW5lID0gcGdfc3RyZHVwKHApOw0K QEAgLTI3NjAsMTkgKzI5MTEsMTcgQEAgcHJvY2Vzc19zcWxfY29tbWFuZChQ UUV4cEJ1ZmZlciBidWYsIGNvbnN0IGNoYXIgKnNvdXJjZSkNCiAJc3dpdGNo IChxdWVyeW1vZGUpDQogCXsNCiAJCWNhc2UgUVVFUllfU0lNUExFOg0KLQkJ CW15X2NvbW1hbmQtPmFyZ3ZbMF0gPSBwZ19zdHJkdXAocCk7DQorCQkJbXlf Y29tbWFuZC0+YXJndlswXSA9IG15X2NvbW1hbmQtPmxpbmVzOw0KIAkJCW15 X2NvbW1hbmQtPmFyZ2MrKzsNCiAJCQlicmVhazsNCiAJCWNhc2UgUVVFUllf RVhURU5ERUQ6DQogCQljYXNlIFFVRVJZX1BSRVBBUkVEOg0KLQkJCWlmICgh cGFyc2VRdWVyeShteV9jb21tYW5kLCBwKSkNCisJCQlpZiAoIXBhcnNlUXVl cnkobXlfY29tbWFuZCwgbXlfY29tbWFuZC0+bGluZXMpKQ0KIAkJCQlleGl0 KDEpOw0KIAkJCWJyZWFrOw0KIAkJZGVmYXVsdDoNCiAJCQlleGl0KDEpOw0K IAl9DQotDQotCXJldHVybiBteV9jb21tYW5kOw0KIH0NCiANCiAvKg0KQEAg LTI5MzAsNiArMzA3OSwxMyBAQCBwcm9jZXNzX2JhY2tzbGFzaF9jb21tYW5k KFBzcWxTY2FuU3RhdGUgc3N0YXRlLCBjb25zdCBjaGFyICpzb3VyY2UpDQog CQkJc3ludGF4X2Vycm9yKHNvdXJjZSwgbGluZW5vLCBteV9jb21tYW5kLT5s aW5lLCBteV9jb21tYW5kLT5hcmd2WzBdLA0KIAkJCQkJCSAibWlzc2luZyBj b21tYW5kIiwgTlVMTCwgLTEpOw0KIAl9DQorCWVsc2UgaWYgKHBnX3N0cmNh c2VjbXAobXlfY29tbWFuZC0+YXJndlswXSwgImludG8iKSA9PSAwKQ0KKwl7 DQorCQkvKiBhdCBsZWFzdCBvbmUgdmFyaWFibGUgbmFtZSBtdXN0IGJlIHBy b3ZpZGVkICovDQorCQlpZiAobXlfY29tbWFuZC0+YXJnYyA8IDIpDQorCQkJ c3ludGF4X2Vycm9yKHNvdXJjZSwgbGluZW5vLCBteV9jb21tYW5kLT5saW5l LCBteV9jb21tYW5kLT5hcmd2WzBdLA0KKwkJCQkJCSAibWlzc2luZyB2YXJp YWJsZSBuYW1lcyIsIE5VTEwsIC0xKTsNCisJfQ0KIAllbHNlDQogCXsNCiAJ CXN5bnRheF9lcnJvcihzb3VyY2UsIGxpbmVubywgbXlfY29tbWFuZC0+bGlu ZSwgbXlfY29tbWFuZC0+YXJndlswXSwNCkBAIC0yOTQxLDYgKzMwOTcsMTUg QEAgcHJvY2Vzc19iYWNrc2xhc2hfY29tbWFuZChQc3FsU2NhblN0YXRlIHNz dGF0ZSwgY29uc3QgY2hhciAqc291cmNlKQ0KIAlyZXR1cm4gbXlfY29tbWFu ZDsNCiB9DQogDQorc3RhdGljIGJvb2wNCitlbmRzX3dpdGhfc2VtaWNvbG9u KGNvbnN0IGNoYXIgKiBidWYpDQorew0KKwlpbnQgaSA9IHN0cmxlbihidWYp LTE7DQorCXdoaWxlIChpID4gMCAmJiBpc3NwYWNlKGJ1ZltpXSkpDQorCQlp LS07DQorCXJldHVybiBpID4gMCAmJiBidWZbaV0gPT0gJzsnOw0KK30NCisN CiAvKg0KICAqIFBhcnNlIGEgc2NyaXB0IChlaXRoZXIgdGhlIGNvbnRlbnRz IG9mIGEgZmlsZSwgb3IgYSBidWlsdC1pbiBzY3JpcHQpDQogICogYW5kIGFk ZCBpdCB0byB0aGUgbGlzdCBvZiBzY3JpcHRzLg0KQEAgLTI5NTMsNiArMzEx OCw5IEBAIFBhcnNlU2NyaXB0KGNvbnN0IGNoYXIgKnNjcmlwdCwgY29uc3Qg Y2hhciAqZGVzYywgaW50IHdlaWdodCkNCiAJUFFFeHBCdWZmZXJEYXRhIGxp bmVfYnVmOw0KIAlpbnQJCQlhbGxvY19udW07DQogCWludAkJCWluZGV4Ow0K Kwlib29sCQlzcWxfY29tbWFuZF9pbl9wcm9ncmVzcyA9IGZhbHNlOw0KKwlp bnQJCQlsaW5lbm87DQorCWludAkJCXN0YXJ0X29mZnNldDsNCiANCiAjZGVm aW5lIENPTU1BTkRTX0FMTE9DX05VTSAxMjgNCiAJYWxsb2NfbnVtID0gQ09N TUFORFNfQUxMT0NfTlVNOw0KQEAgLTI5NzYsNiArMzE0NCw3IEBAIFBhcnNl U2NyaXB0KGNvbnN0IGNoYXIgKnNjcmlwdCwgY29uc3QgY2hhciAqZGVzYywg aW50IHdlaWdodCkNCiAJICogc3Rkc3RyaW5ncyBzaG91bGQgYmUgdHJ1ZSwg d2hpY2ggaXMgYSBiaXQgcmlza2llci4NCiAJICovDQogCXBzcWxfc2Nhbl9z ZXR1cChzc3RhdGUsIHNjcmlwdCwgc3RybGVuKHNjcmlwdCksIDAsIHRydWUp Ow0KKwlzdGFydF9vZmZzZXQgPSBleHByX3NjYW5uZXJfb2Zmc2V0KHNzdGF0 ZSkgLSAxOw0KIA0KIAlpbml0UFFFeHBCdWZmZXIoJmxpbmVfYnVmKTsNCiAN CkBAIC0yOTg1LDMxICszMTU0LDI3IEBAIFBhcnNlU2NyaXB0KGNvbnN0IGNo YXIgKnNjcmlwdCwgY29uc3QgY2hhciAqZGVzYywgaW50IHdlaWdodCkNCiAJ ew0KIAkJUHNxbFNjYW5SZXN1bHQgc3I7DQogCQlwcm9tcHRTdGF0dXNfdCBw cm9tcHQ7DQotCQlDb21tYW5kICAgICpjb21tYW5kOw0KKwkJQ29tbWFuZCAg ICAqY29tbWFuZCA9IE5VTEw7DQogDQogCQlyZXNldFBRRXhwQnVmZmVyKCZs aW5lX2J1Zik7DQorCQlsaW5lbm8gPSBleHByX3NjYW5uZXJfZ2V0X2xpbmVu byhzc3RhdGUsIHN0YXJ0X29mZnNldCk7DQogDQorCQlzc3RhdGUtPnNlbWlj b2xvbnMgPSAwOw0KIAkJc3IgPSBwc3FsX3NjYW4oc3N0YXRlLCAmbGluZV9i dWYsICZwcm9tcHQpOw0KIA0KLQkJLyogSWYgd2UgY29sbGVjdGVkIGEgU1FM IGNvbW1hbmQsIHByb2Nlc3MgdGhhdCAqLw0KLQkJY29tbWFuZCA9IHByb2Nl c3Nfc3FsX2NvbW1hbmQoJmxpbmVfYnVmLCBkZXNjKTsNCi0JCWlmIChjb21t YW5kKQ0KKwkJaWYgKHNxbF9jb21tYW5kX2luX3Byb2dyZXNzKQ0KIAkJew0K LQkJCXBzLmNvbW1hbmRzW2luZGV4XSA9IGNvbW1hbmQ7DQotCQkJaW5kZXgr KzsNCi0NCi0JCQlpZiAoaW5kZXggPj0gYWxsb2NfbnVtKQ0KLQkJCXsNCi0J CQkJYWxsb2NfbnVtICs9IENPTU1BTkRTX0FMTE9DX05VTTsNCi0JCQkJcHMu Y29tbWFuZHMgPSAoQ29tbWFuZCAqKikNCi0JCQkJCXBnX3JlYWxsb2MocHMu Y29tbWFuZHMsIHNpemVvZihDb21tYW5kICopICogYWxsb2NfbnVtKTsNCi0J CQl9DQorCQkJLyogYSBtdWx0aS1saW5lIGNvbW1hbmQgd2FzIGludGVycnVw dGVkIGJ5IGFuIFxpbnRvICovDQorCQkJYXBwZW5kX3NxbF9jb21tYW5kKHBz LmNvbW1hbmRzW2luZGV4LTFdLCBsaW5lX2J1Zi5kYXRhLA0KKwkJCQkJCQkg ICBzc3RhdGUtPnNlbWljb2xvbnMpOw0KKwkJCXNxbF9jb21tYW5kX2luX3By b2dyZXNzID0gZmFsc2U7DQogCQl9DQotDQotCQkvKiBJZiB3ZSByZWFjaGVk IGEgYmFja3NsYXNoLCBwcm9jZXNzIHRoYXQgKi8NCi0JCWlmIChzciA9PSBQ U0NBTl9CQUNLU0xBU0gpDQorCQllbHNlDQogCQl7DQotCQkJY29tbWFuZCA9 IHByb2Nlc3NfYmFja3NsYXNoX2NvbW1hbmQoc3N0YXRlLCBkZXNjKTsNCisJ CQkvKiBJZiB3ZSBjb2xsZWN0ZWQgYSBuZXcgU1FMIGNvbW1hbmQsIHByb2Nl c3MgdGhhdCAqLw0KKwkJCWNvbW1hbmQgPSBjcmVhdGVfc3FsX2NvbW1hbmQo JmxpbmVfYnVmLCBkZXNjLCBzc3RhdGUtPnNlbWljb2xvbnMpOw0KKw0KKwkJ CS8qIHN0b3JlIG5ldyBjb21tYW5kICovDQogCQkJaWYgKGNvbW1hbmQpDQog CQkJew0KIAkJCQlwcy5jb21tYW5kc1tpbmRleF0gPSBjb21tYW5kOw0KQEAg LTMwMjQsNiArMzE4OSw3NSBAQCBQYXJzZVNjcmlwdChjb25zdCBjaGFyICpz Y3JpcHQsIGNvbnN0IGNoYXIgKmRlc2MsIGludCB3ZWlnaHQpDQogCQkJfQ0K IAkJfQ0KIA0KKwkJaWYgKHNyID09IFBTQ0FOX0JBQ0tTTEFTSCkNCisJCXsN CisJCQljb21tYW5kID0gcHJvY2Vzc19iYWNrc2xhc2hfY29tbWFuZChzc3Rh dGUsIGRlc2MpOw0KKw0KKwkJCWlmIChjb21tYW5kKQ0KKwkJCXsNCisJCQkJ LyogTWVyZ2UgXGludG8gaW50byBwcmVjZWVkaW5nIFNRTCBjb21tYW5kIC4u LiAqLw0KKwkJCQlpZiAoc3RybmNtcChjb21tYW5kLT5hcmd2WzBdLCAiaW50 byIsIDQpID09IDApDQorCQkJCXsNCisJCQkJCWludAkJY2luZGV4LCBpOw0K KwkJCQkJQ29tbWFuZCAqaW50b19jbWQ7DQorDQorCQkJCQlpZiAoaW5kZXgg PT0gMCkNCisJCQkJCQlzeW50YXhfZXJyb3IoZGVzYywgbGluZW5vLCBOVUxM LCBOVUxMLA0KKwkJCQkJCQkJCSAiXFxpbnRvIGNhbm5vdCBzdGFydCBhIHNj cmlwdCIsDQorCQkJCQkJCQkJIE5VTEwsIC0xKTsNCisNCisJCQkJCWludG9f Y21kID0gcHMuY29tbWFuZHNbaW5kZXgtMV07DQorDQorCQkJCQlpZiAoaW50 b19jbWQtPnR5cGUgIT0gU1FMX0NPTU1BTkQpDQorCQkJCQkJc3ludGF4X2Vy cm9yKGRlc2MsIGxpbmVubywgTlVMTCwgTlVMTCwNCisJCQkJCQkJCQkgIlxc aW50byBtdXN0IGZvbGxvdyBhbiBTUUwgY29tbWFuZCIsDQorCQkJCQkJCQkJ IGludG9fY21kLT5saW5lLCAtMSk7DQorDQorCQkJCQkvKiB0aGlzIFxpbnRv IGFwcGxpZXMgdG8gdGhpcyBzdWItY29tbWFuZCAqLw0KKwkJCQkJY2luZGV4 ID0gaW50b19jbWQtPmNvbXBvdW5kIC0NCisJCQkJCQkoZW5kc193aXRoX3Nl bWljb2xvbihsaW5lX2J1Zi5kYXRhKSA/IDEgOiAwKTsNCisNCisJCQkJCWlm IChpbnRvX2NtZC0+aW50b3NbY2luZGV4XSAhPSBOVUxMKQ0KKwkJCQkJCXN5 bnRheF9lcnJvcihkZXNjLCBsaW5lbm8sIE5VTEwsIE5VTEwsDQorCQkJCQkJ CQkJICJcXGludG8gY2Fubm90IGZvbGxvdyBhbiBcXGludG8iLA0KKwkJCQkJ CQkJCSBOVUxMLCAtMSk7DQorDQorCQkJCQkvKiBjaGVjayB0aGF0IGFsbCB2 YXJpYWJsZSBuYW1lcyBhcmUgdmFsaWQgKi8NCisJCQkJCWZvciAoaSA9IDE7 IGkgPCBjb21tYW5kLT5hcmdjOyBpKyspDQorCQkJCQl7DQorCQkJCQkJaWYg KCFpc0xlZ2FsVmFyaWFibGVOYW1lKGNvbW1hbmQtPmFyZ3ZbaV0pKQ0KKwkJ CQkJCQlzeW50YXhfZXJyb3IoZGVzYywgbGluZW5vLCBOVUxMLCBOVUxMLA0K KwkJCQkJCQkJCQkgIlxcaW50byBpbnZhbGlkIHZhcmlhYmxlIG5hbWUiLA0K KwkJCQkJCQkJCQkgY29tbWFuZC0+YXJndltpXSwgLTEpOw0KKwkJCQkJfQ0K Kw0KKwkJCQkJaW50b19jbWQtPmludG9zW2NpbmRleF0gPQ0KKwkJCQkJCXBn X21hbGxvYzAoc2l6ZW9mKGNoYXIgKikgKiAoY29tbWFuZC0+YXJnYysxKSk7 DQorDQorCQkJCQltZW1jcHkoaW50b19jbWQtPmludG9zW2NpbmRleF0sIGNv bW1hbmQtPmFyZ3YgKyAxLA0KKwkJCQkJCSAgIHNpemVvZihjaGFyKikgKiBj b21tYW5kLT5hcmdjKTsNCisNCisJCQkJCS8qIGNsZWFudXAgdW51c2VkIGJh Y2tzbGFzaCBjb21tYW5kICovDQorCQkJCQlwZ19mcmVlKGNvbW1hbmQpOw0K Kw0KKwkJCQkJLyogIlNFTEVDVCAuLi4gXGludG8gLi4uIiAgZm9sbG93LXVw ICovDQorCQkJCQlzcWxfY29tbWFuZF9pbl9wcm9ncmVzcyA9ICpsaW5lX2J1 Zi5kYXRhICE9ICdcMCc7DQorCQkJCX0NCisJCQkJZWxzZSAvKiBhbnkgb3Ro ZXIgYmFja3NsYXNoIGNvbW1hbmQgaXMgYSBDb21tYW5kICovDQorCQkJCXsN CisJCQkJCXBzLmNvbW1hbmRzW2luZGV4XSA9IGNvbW1hbmQ7DQorCQkJCQlp bmRleCsrOw0KKw0KKwkJCQkJaWYgKGluZGV4ID49IGFsbG9jX251bSkNCisJ CQkJCXsNCisJCQkJCQlhbGxvY19udW0gKz0gQ09NTUFORFNfQUxMT0NfTlVN Ow0KKwkJCQkJCXBzLmNvbW1hbmRzID0gKENvbW1hbmQgKiopDQorCQkJCQkJ CXBnX3JlYWxsb2MocHMuY29tbWFuZHMsIHNpemVvZihDb21tYW5kICopICog YWxsb2NfbnVtKTsNCisJCQkJCX0NCisJCQkJfQ0KKwkJCX0NCisJCX0NCisN CiAJCS8qIERvbmUgaWYgd2UgcmVhY2hlZCBFT0YgKi8NCiAJCWlmIChzciA9 PSBQU0NBTl9JTkNPTVBMRVRFIHx8IHNyID09IFBTQ0FOX0VPTCkNCiAJCQli cmVhazsNCkBAIC0zMDMxLDYgKzMyNjUsMTEgQEAgUGFyc2VTY3JpcHQoY29u c3QgY2hhciAqc2NyaXB0LCBjb25zdCBjaGFyICpkZXNjLCBpbnQgd2VpZ2h0 KQ0KIA0KIAlwcy5jb21tYW5kc1tpbmRleF0gPSBOVUxMOw0KIA0KKwkvKiBj b21wbGV0ZSBTUUwgY29tbWFuZCBpbml0aWFsaXphdGlvbnMgKi8NCisJd2hp bGUgKC0taW5kZXggPj0gMCkNCisJCWlmIChwcy5jb21tYW5kc1tpbmRleF0t PnR5cGUgPT0gU1FMX0NPTU1BTkQpDQorCQkJcG9zdHByb2Nlc3Nfc3FsX2Nv bW1hbmQocHMuY29tbWFuZHNbaW5kZXhdKTsNCisNCiAJYWRkU2NyaXB0KHBz KTsNCiANCiAJdGVybVBRRXhwQnVmZmVyKCZsaW5lX2J1Zik7DQpkaWZmIC0t Z2l0IGEvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guaCBiL3NyYy9iaW4vcGdi ZW5jaC9wZ2JlbmNoLmgNCmluZGV4IGFiMGY4MjIuLjRkMjhmZGIgMTAwNjQ0 DQotLS0gYS9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5oDQorKysgYi9zcmMv YmluL3BnYmVuY2gvcGdiZW5jaC5oDQpAQCAtMTEsNiArMTEsNyBAQA0KICNp Zm5kZWYgUEdCRU5DSF9IDQogI2RlZmluZSBQR0JFTkNIX0gNCiANCisjaW5j bHVkZSAiZmVfdXRpbHMvcHNxbHNjYW5faW50LmgiDQogI2luY2x1ZGUgImZl X3V0aWxzL3BzcWxzY2FuLmgiDQogDQogLyoNCmRpZmYgLS1naXQgYS9zcmMv ZmVfdXRpbHMvcHNxbHNjYW4ubCBiL3NyYy9mZV91dGlscy9wc3Fsc2Nhbi5s DQppbmRleCA1NTA2N2I0Li40M2I1YTRkIDEwMDY0NA0KLS0tIGEvc3JjL2Zl X3V0aWxzL3BzcWxzY2FuLmwNCisrKyBiL3NyYy9mZV91dGlscy9wc3Fsc2Nh bi5sDQpAQCAtNjgwLDYgKzY4MCw5IEBAIG90aGVyCQkJLg0KIA0KICJcXCJb OzpdCQl7DQogCQkJCQkvKiBGb3JjZSBhIHNlbWljb2xvbiBvciBjb2xvbiBp bnRvIHRoZSBxdWVyeSBidWZmZXIgKi8NCisJCQkJCWlmICh5eXRleHRbMV0g PT0gJzsnKQ0KKwkJCQkJCS8qIGNvdW50IGNvbXBvdW5kIGNvbW1hbmRzICov DQorCQkJCQkJY3VyX3N0YXRlLT5zZW1pY29sb25zKys7DQogCQkJCQlwc3Fs c2Nhbl9lbWl0KGN1cl9zdGF0ZSwgeXl0ZXh0ICsgMSwgMSk7DQogCQkJCX0N CiANCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9mZV91dGlscy9wc3Fsc2Nh bl9pbnQuaCBiL3NyYy9pbmNsdWRlL2ZlX3V0aWxzL3BzcWxzY2FuX2ludC5o DQppbmRleCBhNTI5MjlkLi5hMTg0ZmM3IDEwMDY0NA0KLS0tIGEvc3JjL2lu Y2x1ZGUvZmVfdXRpbHMvcHNxbHNjYW5faW50LmgNCisrKyBiL3NyYy9pbmNs dWRlL2ZlX3V0aWxzL3BzcWxzY2FuX2ludC5oDQpAQCAtMTEyLDYgKzExMiw3 IEBAIHR5cGVkZWYgc3RydWN0IFBzcWxTY2FuU3RhdGVEYXRhDQogCWludAkJ CXN0YXJ0X3N0YXRlOwkvKiB5eWxleCdzIHN0YXJ0aW5nL2ZpbmlzaGluZyBz dGF0ZSAqLw0KIAlpbnQJCQlwYXJlbl9kZXB0aDsJLyogZGVwdGggb2YgbmVz dGluZyBpbiBwYXJlbnRoZXNlcyAqLw0KIAlpbnQJCQl4Y2RlcHRoOwkJLyog ZGVwdGggb2YgbmVzdGluZyBpbiBzbGFzaC1zdGFyIGNvbW1lbnRzICovDQor CWludAkJCXNlbWljb2xvbnM7CQkvKiBudW1iZXIgb2YgZW1iZWRkZWQgKFw7 KSBzZW1pLWNvbG9ucyAqLw0KIAljaGFyCSAgICpkb2xxc3RhcnQ7CQkvKiBj dXJyZW50ICRmb28kIHF1b3RlIHN0YXJ0IHN0cmluZyAqLw0KIA0KIAkvKg0K --8323329-692611719-1468600414=:7291 Content-Type: application/x-sql; name=into.sql Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename=into.sql U0VMRUNUIDE7ClxpbnRvIG9uZQpcc2V0IHQgZGVidWcoOm9uZSkKU0VMRUNU IDIsIDIrMTsKXGludG8geCB5ClxzZXQgdCBkZWJ1Zyg6eCkKXHNldCB0IGRl YnVnKDp5KQpTRUxFQ1QgMSoyIFw7IFNFTEVDVCAyKzIuMCwgNTsKXGludG8g YSBiClxzZXQgdCBkZWJ1Zyg6YSkKXHNldCB0IGRlYnVnKDpiKQpTRUxFQ1Qg KHBpKCkgKiAyLjApOjpJTlQgXDsKXGludG8gc2l4ClVQREFURSBwZ2JlbmNo X2FjY291bnRzIFNFVCBhYmFsYW5jZSA9IGFiYWxhbmNlICsgMSBXSEVSRSBh aWQ9MTsKXHNldCB0IGRlYnVnKDpzaXgpCg== --8323329-692611719-1468600414=:7291 Content-Type: application/x-sql; name=into2.sql Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename=into2.sql LS0gbm8gaW50bwpTRUxFQ1QgMDsKXHNldCBpIGRlYnVnKDApCi0tIGludG8g d2l0aCA7ClNFTEVDVCAxOwogICBcaW50byBhClxzZXQgaSBkZWJ1Zyg6YSkK LS0gaW50byB3aXRob3V0IDsKU0VMRUNUIDIKXGludG8gYgpcc2V0IGkgZGVi dWcoOmIpCi0tIGludG8gaW4gY29tcG91bmQKU0VMRUNUIDMgXDsgICAgICAg ICAKXGludG8gYwpTRUxFQ1QgNCA7ClxzZXQgaSBkZWJ1Zyg6YykKLS0gaW50 byBpbiBjb21wb3VuClNFTEVDVCA1IFw7IFNFTEVDVCA0IFw7IApcaW50byBj ClNFTEVDVCA2IDsKXHNldCBpIGRlYnVnKDpjKQotLSBpbnRvIGluIGNvbXBv dW5kClNFTEVDVCA0IFw7IFNFTEVDVCA1IFw7IApcaW50byBjClNFTEVDVCA2 IFw7ClxpbnRvIGQKU0VMRUNUIDcgOwpcc2V0IGkgZGVidWcoOmMrOmQtNikK LS0gaW50ZXJydXB0ZWQgc2VsZWN0ClNFTEVDVCBpIFxpbnRvIHgKRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoNiwgNikgQVMgaTsKXHNldCBpIGRlYnVnKDp4KQpT RUxFQ1QgMSA7IFxpbnRvIGEKU0VMRUNUIGlcaW50byBiCkZST00gZ2VuZXJh dGVfc2VyaWVzKDIsIDIpIEFTIGkgXDsKU0VMRUNUICdsb3N0JzsKU0VMRUNU IDMgXDsgXGludG8gYwpTRUxFQ1QgNCBcOyBcaW50byBkClxzZXQgaSBkZWJ1 Zyg6YSArIDpiICsgOmMgKyA6ZCAtIDMpClZBTFVFUyAoOCkgXDsgXGludG8g aApWQUxVRVMgKDkpIDsgIFxpbnRvIGcKXHNldCBpIGRlYnVnKDpoKQpcc2V0 IGkgZGVidWcoOmcpCg== --8323329-692611719-1468600414=:7291 Content-Type: application/x-sql; name=into-err-1.sql Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename=into-err-1.sql LS0gbWlzc2luZyBTUUwgY29tbWFuZApcaW50byB4Cg== --8323329-692611719-1468600414=:7291 Content-Type: application/x-sql; name=into-err-2.sql Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename=into-err-2.sql LS0gdG9vIG1hbnkgdmFyaWFibGVzClNFTEVDVCAxLCAyOwpcaW50byB4IHkg ego= --8323329-692611719-1468600414=:7291 Content-Type: application/x-sql; name=into-err-3.sql Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename=into-err-3.sql LS0gbm8gcm93cwpTRUxFQ1QgYWJhbGFuY2UgRlJPTSBwZ2JlbmNoX2FjY291 bnRzIFdIRVJFIGFpZD0wOwpcaW50byBiYWxhbmNlCg== --8323329-692611719-1468600414=:7291 Content-Type: application/x-sql; name=into-err-4.sql Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename=into-err-4.sql LS0gdG9vIG1hbnkgcm93cwpWQUxVRVMgKDEpLCAoMik7ClxpbnRvIHgK --8323329-692611719-1468600414=:7291 Content-Type: application/x-sql; name=into-err-5.sql Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename=into-err-5.sql LS0gaW52YWxpZCB2YXJpYWJsZSBuYW1lIChjb21tYSBzaG91bGQgYmUgcmVt b3ZlZCkKU0VMRUNUIDEsIDI7ClxpbnRvIHgsIHkK --8323329-692611719-1468600414=:7291 Content-Type: application/x-sql; name=into-err-6.sql Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename=into-err-6.sql LS0gbm90IGEgc2VsZWN0ClVQREFURSBwZ2JlbmNoX2FjY291bnRzIFNFVCBh YmFsYW5jZSA9IGFiYWxhbmNlICsxIFdIRVJFIGFpZD0xOwpcaW50byBhCg== --8323329-692611719-1468600414=:7291 Content-Type: application/x-sql; name=into-err-7.sql Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename=into-err-7.sql U0VMRUNUIDEgXDsKVFJVTkNBVEUgcGdiZW5jaF9oaXN0b3J5OwpcaW50byBh Cg== --8323329-692611719-1468600414=:7291 Content-Type: application/x-sql; name=into-err-8.sql Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename=into-err-8.sql LS0gb25lIGludG8gYWZ0ZXIgYW5vdGhlcgpTRUxFQ1QgMSwgMiBcaW50byBh ClxpbnRvIGIKOwo= --8323329-692611719-1468600414=:7291 Content-Type: application/x-sql; name=into-err-9.sql Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename=into-err-9.sql LS0gbm8gdmFyaWFibGUgbmFtZQpTRUxFQ1QgMSA7IFxpbnRvCg== --8323329-692611719-1468600414=:7291 Content-Type: application/x-sql; name=into-err-10.sql Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename=into-err-10.sql LS0gbm8gU1FMIGNvbW1hbmQKXHNldCBpIDAKXGludG8gYQo= --8323329-692611719-1468600414=:7291 Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 8bit MIME-Version: 1.0 -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers --8323329-692611719-1468600414=:7291--