Received: from malur.postgresql.org ([2a02:16a8:dc51::56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1gAWkV-0000Dy-5E for pgsql-hackers@arkaria.postgresql.org; Thu, 11 Oct 2018 08:55:15 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1gAWkS-0001z9-MD for pgsql-hackers@arkaria.postgresql.org; Thu, 11 Oct 2018 08:55:12 +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 1gAWkS-0001z0-4Y for pgsql-hackers@lists.postgresql.org; Thu, 11 Oct 2018 08:55:12 +0000 Received: from mail-vs1-xe29.google.com ([2607:f8b0:4864:20::e29]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1gAWkP-0006vJ-4T for pgsql-hackers@postgresql.org; Thu, 11 Oct 2018 08:55:10 +0000 Received: by mail-vs1-xe29.google.com with SMTP id w1so7765542vsj.8 for ; Thu, 11 Oct 2018 01:55:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=E/6NoBT1K4/IkUVWMm3Kd3fmDZqZ5wjm5GTErRN6Gus=; b=G0ZjvQ/4dWpN3KDZ4zHmLzOEixI7A5RE2FfFapdWuKQ/ijjJty9p9XJjpPpndawpsJ 1HMyiIqtE4IScNcMo1RsWJ33gnSW6OjOiIQTla/2iLZqh/qMGEoU1qXFHC73qOteMdeI Hcdi5fvw4oVW+rJpwvxtfu5Hbz1RWtBNsnaSLrd5cU3C8mPiSjjaVX8YZ6qelxrbC341 yzy37sCIaVIUo+BEMOFAx5eGqQtstZX78h83oIE7rb2ZLszBfZYcCZFqA5WU4pTrEBuk zJpR3WxV6RdDU5eoRlbCE3RUzZOWpQnspF/mRKDLbikzi/W+UW4MZKEbFhNdpwD2iTRy ioNg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=E/6NoBT1K4/IkUVWMm3Kd3fmDZqZ5wjm5GTErRN6Gus=; b=LE8IwFnU/NHUVa+vE4v9LYD1vZqeFttYD2xRy405M7UjfGdE69skwNF33byCz5Tk+X T1PZECipZqvFjnojXETZw1NW9e/v1zKNXTsZNZrh5FIiP4a8VAacLGvF9Ej31KCUsLi9 Ek4HOHUK1ILF9ClpgTWOTLdH1soh1r/q7DzmHTZUIHBRfhSk8sFsgUYpBHkxQy9j/o8C txEQsYzispNYmNV65M773rMU3cJg3Yjd+RLqkKefAI6HV/UmZIkXhwdfNDNO2MwI4zCn kCTiP28uh2CGA6xTQnFqGwBQXkf6WyO0bBrcQ+ts3nkPTSd/3K06Ax8oempFIShEKkx5 Tk7A== X-Gm-Message-State: ABuFfohoISrQ6y5kFQ0yXUJV9bVAnFH/0ZquSxygk464DOhbHaWY2DN4 4qqhbJIbRh3UzJIfn0x6gjkIKOWEil9i2DSufdN9mK/y X-Google-Smtp-Source: ACcGV62wRHxAmyxBLgAvZg/0aDU5wvYP2pxI68uGn+BmeFacrT/+RYIUoohVK3+Amx8jRm3yFd0lxM8tUW5mz/Nxnsk= X-Received: by 2002:a9f:35f1:: with SMTP id u46-v6mr304758uad.20.1539248107463; Thu, 11 Oct 2018 01:55:07 -0700 (PDT) MIME-Version: 1.0 From: Surafel Temesgen Date: Thu, 11 Oct 2018 11:54:55 +0300 Message-ID: Subject: COPY FROM WHEN condition To: PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000aadcdd0577f0202b" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --000000000000aadcdd0577f0202b Content-Type: multipart/alternative; boundary="000000000000aadcda0577f02029" --000000000000aadcda0577f02029 Content-Type: text/plain; charset="UTF-8" Hello, Currently we can not moves data from a file to a table based on some condition on a certain column but I think there are many use case for it that worth supporting. Attache is a patch for escaping a row that does not satisfy WHEN condition from inserting into a table and its work on the top of commit b68ff3ea672c06 and the syntax is COPY table_name [ ( column_name [, ...] ) ] FROM { 'filename' | PROGRAM 'command' | STDIN } [ [ WITH ] ( option [, ...] ) ] [ WHEN condition ] comment ? Regards Surafel --000000000000aadcda0577f02029 Content-Type: text/html; charset="UTF-8"

Hello,

Currently we can not moves data from a file to a table based on some condition on a certain column but I think there are many use case for it that worth supporting. Attache is a patch for escaping a row that does not satisfy WHEN condition from inserting into a table and its work on the top of commit b68ff3ea672c06

and the syntax is

COPY table_name [ ( column_name [, ...] ) ]

FROM { 'filename' | PROGRAM 'command' | STDIN }

[ [ WITH ] ( option [, ...] ) ]

[ WHEN condition ]

comment ?

Regards

Surafel

--000000000000aadcda0577f02029-- --000000000000aadcdd0577f0202b Content-Type: text/x-patch; charset="US-ASCII"; name="copy_from_when_con_v1.patch" Content-Disposition: attachment; filename="copy_from_when_con_v1.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_jn4cg3sw0 ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY29weS5zZ21sIGIvZG9jL3NyYy9zZ21sL3Jl Zi9jb3B5LnNnbWwKaW5kZXggMTNhOGI2OGQ5NS4uODA4OGU3NzliNiAxMDA2NDQKLS0tIGEvZG9j L3NyYy9zZ21sL3JlZi9jb3B5LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jb3B5LnNnbWwK QEAgLTI1LDYgKzI1LDcgQEAgUG9zdGdyZVNRTCBkb2N1bWVudGF0aW9uCiBDT1BZIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gWyAoIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4u Ll0gKSBdCiAgICAgRlJPTSB7ICc8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZmlsZW5h bWU8L3JlcGxhY2VhYmxlPicgfCBQUk9HUkFNICc8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+Y29tbWFuZDwvcmVwbGFjZWFibGU+JyB8IFNURElOIH0KICAgICBbIFsgV0lUSCBdICggPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm9wdGlvbjwvcmVwbGFjZWFibGU+IFssIC4uLl0g KSBdCisgICAgWyBXSEVOIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb25kaXRpb248 L3JlcGxhY2VhYmxlPiBdCiAKIENPUFkgeyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+IFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi5dICkgXSB8ICggPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPnF1ZXJ5PC9yZXBsYWNlYWJsZT4gKSB9CiAgICAgVE8geyAnPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmZpbGVuYW1lPC9yZXBsYWNlYWJsZT4nIHwgUFJP R1JBTSAnPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbW1hbmQ8L3JlcGxhY2VhYmxl PicgfCBTVERPVVQgfQpAQCAtMzY0LDYgKzM2NSwyNCBAQCBDT1BZIHsgPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbICggPHJlcGxhY2VhYmxl CiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgogCisgICA8dmFybGlzdGVudHJ5 PgorICAgIDx0ZXJtPjxsaXRlcmFsPldIRU4gQ2xhdXNlPC9saXRlcmFsPjwvdGVybT4KKyAgICA8 bGlzdGl0ZW0+CisgICA8cGFyYT4KKyAgICBUaGUgb3B0aW9uYWwgPGxpdGVyYWw+V0hFTjwvbGl0 ZXJhbD4gY2xhdXNlIGhhcyB0aGUgZ2VuZXJhbCBmb3JtCis8c3lub3BzaXM+CitXSEVOIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb25kaXRpb248L3JlcGxhY2VhYmxlPgorPC9zeW5v cHNpcz4KKyAgICB3aGVyZSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29uZGl0aW9u PC9yZXBsYWNlYWJsZT4gaXMKKyAgICBhbnkgZXhwcmVzc2lvbiB0aGF0IGV2YWx1YXRlcyB0byBh IHJlc3VsdCBvZiB0eXBlCisgICAgPHR5cGU+Ym9vbGVhbjwvdHlwZT4uICBBbnkgcm93IHRoYXQg ZG9lcyBub3Qgc2F0aXNmeSB0aGlzCisgICAgY29uZGl0aW9uIHdpbGwgbm90IGJlIGluc2VydGVk IHRvIHRoZSB0YWJsZS4gIEEgcm93IHNhdGlzZmllcyB0aGUKKyAgICBjb25kaXRpb24gaWYgaXQg cmV0dXJucyB0cnVlIHdoZW4gdGhlIGFjdHVhbCByb3cgdmFsdWVzIGFyZQorICAgIHN1YnN0aXR1 dGVkIGZvciBhbnkgdmFyaWFibGUgcmVmZXJlbmNlcy4KKyAgIDwvcGFyYT4KKyAgICA8L2xpc3Rp dGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKICAgPC92YXJpYWJsZWxpc3Q+CiAgPC9yZWZzZWN0 MT4KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weS5jIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvY29weS5jCmluZGV4IDliYzY3Y2U2MGYuLjFjZTdkNDYwNTggMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHkuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5k cy9jb3B5LmMKQEAgLTM4LDcgKzM4LDEwIEBACiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5j bHVkZSAib3B0aW1pemVyL2NsYXVzZXMuaCIKICNpbmNsdWRlICJvcHRpbWl6ZXIvcGxhbm5lci5o IgorI2luY2x1ZGUgIm9wdGltaXplci9wcmVwLmgiCiAjaW5jbHVkZSAibm9kZXMvbWFrZWZ1bmNz LmgiCisjaW5jbHVkZSAicGFyc2VyL3BhcnNlX2NvZXJjZS5oIgorI2luY2x1ZGUgInBhcnNlci9w YXJzZV9leHByLmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX3JlbGF0aW9uLmgiCiAjaW5jbHVk ZSAicG9ydC9wZ19ic3dhcC5oIgogI2luY2x1ZGUgInJld3JpdGUvcmV3cml0ZUhhbmRsZXIuaCIK QEAgLTE0Nyw2ICsxNTAsNyBAQCB0eXBlZGVmIHN0cnVjdCBDb3B5U3RhdGVEYXRhCiAJYm9vbAkJ Y29udmVydF9zZWxlY3RpdmVseTsJLyogZG8gc2VsZWN0aXZlIGJpbmFyeSBjb252ZXJzaW9uPyAq LwogCUxpc3QJICAgKmNvbnZlcnRfc2VsZWN0OyAvKiBsaXN0IG9mIGNvbHVtbiBuYW1lcyAoY2Fu IGJlIE5JTCkgKi8KIAlib29sCSAgICpjb252ZXJ0X3NlbGVjdF9mbGFnczsJLyogcGVyLWNvbHVt biBDU1YvVEVYVCBDUyBmbGFncyAqLworCU5vZGUJICAgKndoZW5DbGF1c2U7CS8qIHF1YWxpZmlj YXRpb25zICovCiAKIAkvKiB0aGVzZSBhcmUganVzdCBmb3IgZXJyb3IgbWVzc2FnZXMsIHNlZSBD b3B5RnJvbUVycm9yQ2FsbGJhY2sgKi8KIAljb25zdCBjaGFyICpjdXJfcmVsbmFtZTsJLyogdGFi bGUgbmFtZSBmb3IgZXJyb3IgbWVzc2FnZXMgKi8KQEAgLTE3OCw2ICsxODIsNyBAQCB0eXBlZGVm IHN0cnVjdCBDb3B5U3RhdGVEYXRhCiAJRXhwclN0YXRlICoqZGVmZXhwcnM7CQkvKiBhcnJheSBv ZiBkZWZhdWx0IGF0dCBleHByZXNzaW9ucyAqLwogCWJvb2wJCXZvbGF0aWxlX2RlZmV4cHJzOwkv KiBpcyBhbnkgb2YgZGVmZXhwcnMgdm9sYXRpbGU/ICovCiAJTGlzdAkgICAqcmFuZ2VfdGFibGU7 CisJRXhwclN0YXRlICAqcXVhbGV4cHI7CiAKIAlUcmFuc2l0aW9uQ2FwdHVyZVN0YXRlICp0cmFu c2l0aW9uX2NhcHR1cmU7CiAKQEAgLTc5Nyw2ICs4MDIsNyBAQCBEb0NvcHkoUGFyc2VTdGF0ZSAq cHN0YXRlLCBjb25zdCBDb3B5U3RtdCAqc3RtdCwKIAlSZWxhdGlvbglyZWw7CiAJT2lkCQkJcmVs aWQ7CiAJUmF3U3RtdCAgICAqcXVlcnkgPSBOVUxMOworCU5vZGUgICAgKndoZW5fY2x1YXNlPSBO VUxMOwogCiAJLyoKIAkgKiBEaXNhbGxvdyBDT1BZIHRvL2Zyb20gZmlsZSBvciBwcm9ncmFtIGV4 Y2VwdCB0byB1c2VycyB3aXRoIHRoZQpAQCAtODQ5LDYgKzg1NSwyMSBAQCBEb0NvcHkoUGFyc2VT dGF0ZSAqcHN0YXRlLCBjb25zdCBDb3B5U3RtdCAqc3RtdCwKIAkJcnRlID0gYWRkUmFuZ2VUYWJs ZUVudHJ5Rm9yUmVsYXRpb24ocHN0YXRlLCByZWwsIE5VTEwsIGZhbHNlLCBmYWxzZSk7CiAJCXJ0 ZS0+cmVxdWlyZWRQZXJtcyA9IChpc19mcm9tID8gQUNMX0lOU0VSVCA6IEFDTF9TRUxFQ1QpOwog CisJCWlmKHN0bXQtPndoZW5DbGF1c2UpCisJCXsKKwkJCS8qIGFkZCBydGUgdG8gY29sdW1uIG5h bWVzcGFjZSAgKi8KKwkJCWFkZFJURXRvUXVlcnkocHN0YXRlLCBydGUsIGZhbHNlLCBmYWxzZSwg dHJ1ZSk7CisKKwkJCS8qIFRyYW5zZm9ybSB0aGUgcmF3IGV4cHJlc3Npb24gdHJlZSAqLworCQkJ d2hlbl9jbHVhc2UgPSB0cmFuc2Zvcm1FeHByKHBzdGF0ZSwgc3RtdC0+d2hlbkNsYXVzZSwgRVhQ Ul9LSU5EX09USEVSKTsKKworCQkJLyogIE1ha2Ugc3VyZSBpdCB5aWVsZHMgYSBib29sZWFuIHJl c3VsdC4gKi8KKwkJCXdoZW5fY2x1YXNlID0gY29lcmNlX3RvX2Jvb2xlYW4ocHN0YXRlLCB3aGVu X2NsdWFzZSwgIldIRU4iKTsKKworCQkJd2hlbl9jbHVhc2UgPSAoTm9kZSAqKSBjYW5vbmljYWxp emVfcXVhbCgoRXhwciAqKSB3aGVuX2NsdWFzZSwgZmFsc2UpOworCQkJd2hlbl9jbHVhc2UgPSAo Tm9kZSAqKSBtYWtlX2FuZHNfaW1wbGljaXQoKEV4cHIgKikgd2hlbl9jbHVhc2UpOworCQl9CisK IAkJdHVwRGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IocmVsKTsKIAkJYXR0bnVtcyA9IENvcHlHZXRB dHRudW1zKHR1cERlc2MsIHJlbCwgc3RtdC0+YXR0bGlzdCk7CiAJCWZvcmVhY2goY3VyLCBhdHRu dW1zKQpAQCAtOTk3LDYgKzEwMTgsNyBAQCBEb0NvcHkoUGFyc2VTdGF0ZSAqcHN0YXRlLCBjb25z dCBDb3B5U3RtdCAqc3RtdCwKIAogCQljc3RhdGUgPSBCZWdpbkNvcHlGcm9tKHBzdGF0ZSwgcmVs LCBzdG10LT5maWxlbmFtZSwgc3RtdC0+aXNfcHJvZ3JhbSwKIAkJCQkJCQkgICBOVUxMLCBzdG10 LT5hdHRsaXN0LCBzdG10LT5vcHRpb25zKTsKKwkJY3N0YXRlLT53aGVuQ2xhdXNlPXdoZW5fY2x1 YXNlOwogCQkqcHJvY2Vzc2VkID0gQ29weUZyb20oY3N0YXRlKTsJLyogY29weSBmcm9tIGZpbGUg dG8gZGF0YWJhc2UgKi8KIAkJRW5kQ29weUZyb20oY3N0YXRlKTsKIAl9CkBAIC0yNTM0LDYgKzI1 NTYsMTAgQEAgQ29weUZyb20oQ29weVN0YXRlIGNzdGF0ZSkKIAkJCUV4ZWNTZXR1cENoaWxkUGFy ZW50TWFwRm9yTGVhZihwcm91dGUpOwogCX0KIAorCWlmKGNzdGF0ZS0+d2hlbkNsYXVzZSApCisJ CWNzdGF0ZS0+cXVhbGV4cHIgPSBFeGVjSW5pdFF1YWwoY2FzdE5vZGUoTGlzdCwgY3N0YXRlLT53 aGVuQ2xhdXNlKSwKKwkJCQkJCQkJCQkJCSZtdHN0YXRlLT5wcyk7CisKIAkvKgogCSAqIEl0J3Mg bW9yZSBlZmZpY2llbnQgdG8gcHJlcGFyZSBhIGJ1bmNoIG9mIHR1cGxlcyBmb3IgaW5zZXJ0aW9u LCBhbmQKIAkgKiBpbnNlcnQgdGhlbSBpbiBvbmUgaGVhcF9tdWx0aV9pbnNlcnQoKSBjYWxsLCB0 aGFuIGNhbGwgaGVhcF9pbnNlcnQoKQpAQCAtMjY2NCw2ICsyNjkwLDggQEAgQ29weUZyb20oQ29w eVN0YXRlIGNzdGF0ZSkKIAkJLyogU3dpdGNoIGludG8gaXRzIG1lbW9yeSBjb250ZXh0ICovCiAJ CU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhHZXRQZXJUdXBsZU1lbW9yeUNvbnRleHQoZXN0YXRlKSk7 CiAKK25leHRfcmVjb3JkOgorCiAJCWlmICghTmV4dENvcHlGcm9tKGNzdGF0ZSwgZWNvbnRleHQs IHZhbHVlcywgbnVsbHMsICZsb2FkZWRfb2lkKSkKIAkJCWJyZWFrOwogCkBAIC0yNjg2LDYgKzI3 MTQsMTMgQEAgQ29weUZyb20oQ29weVN0YXRlIGNzdGF0ZSkKIAkJc2xvdCA9IG15c2xvdDsKIAkJ RXhlY1N0b3JlVHVwbGUodHVwbGUsIHNsb3QsIEludmFsaWRCdWZmZXIsIGZhbHNlKTsKIAorCQlp Zihjc3RhdGUtPndoZW5DbGF1c2UpCisJCXsKKwkJCWVjb250ZXh0LT5lY3h0X3NjYW50dXBsZSA9 IG15c2xvdDsKKwkJCWlmICghRXhlY1F1YWwoY3N0YXRlLT5xdWFsZXhwciwgZWNvbnRleHQpKQor CQkJZ290byBuZXh0X3JlY29yZDsKKwkJfQorCiAJCS8qIERldGVybWluZSB0aGUgcGFydGl0aW9u IHRvIGhlYXBfaW5zZXJ0IHRoZSB0dXBsZSBpbnRvICovCiAJCWlmIChwcm91dGUpCiAJCXsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL2NvcHlmdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9k ZXMvY29weWZ1bmNzLmMKaW5kZXggN2M4MjIwY2Y2NS4uYjNmZTUyOTYxOSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvY29w eWZ1bmNzLmMKQEAgLTMzMTIsNiArMzMxMiw3IEBAIF9jb3B5Q29weVN0bXQoY29uc3QgQ29weVN0 bXQgKmZyb20pCiAJQ09QWV9TQ0FMQVJfRklFTEQoaXNfcHJvZ3JhbSk7CiAJQ09QWV9TVFJJTkdf RklFTEQoZmlsZW5hbWUpOwogCUNPUFlfTk9ERV9GSUVMRChvcHRpb25zKTsKKwlDT1BZX05PREVf RklFTEQod2hlbkNsYXVzZSk7CiAKIAlyZXR1cm4gbmV3bm9kZTsKIH0KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL25vZGVzL2VxdWFsZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL2VxdWFsZnVu Y3MuYwppbmRleCAzNzhmMmZhY2I4Li40NzFiNjI4MTU3IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9ub2Rlcy9lcXVhbGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvZXF1YWxmdW5jcy5j CkBAIC0xMjIxLDYgKzEyMjEsNyBAQCBfZXF1YWxDb3B5U3RtdChjb25zdCBDb3B5U3RtdCAqYSwg Y29uc3QgQ29weVN0bXQgKmIpCiAJQ09NUEFSRV9TQ0FMQVJfRklFTEQoaXNfcHJvZ3JhbSk7CiAJ Q09NUEFSRV9TVFJJTkdfRklFTEQoZmlsZW5hbWUpOwogCUNPTVBBUkVfTk9ERV9GSUVMRChvcHRp b25zKTsKKwlDT01QQVJFX05PREVfRklFTEQod2hlbkNsYXVzZSk7CiAKIAlyZXR1cm4gdHJ1ZTsK IH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgYi9zcmMvYmFja2VuZC9w YXJzZXIvZ3JhbS55CmluZGV4IDg3ZjVlOTU4MjcuLjNjMjRjOWRkMTggMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpA QCAtNTA5LDYgKzUwOSw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChj aGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAldHlwZSA8ZGVmZWx0 Pgljb3B5X2dlbmVyaWNfb3B0X2VsZW0KICV0eXBlIDxsaXN0Pgljb3B5X2dlbmVyaWNfb3B0X2xp c3QgY29weV9nZW5lcmljX29wdF9hcmdfbGlzdAogJXR5cGUgPGxpc3Q+CWNvcHlfb3B0aW9ucwor JXR5cGUgPG5vZGU+CW9wdF93aGVuX2NsYXVzZQogCiAldHlwZSA8dHlwbmFtPglUeXBlbmFtZSBT aW1wbGVUeXBlbmFtZSBDb25zdFR5cGVuYW1lCiAJCQkJR2VuZXJpY1R5cGUgTnVtZXJpYyBvcHRf ZmxvYXQKQEAgLTI5NzAsNyArMjk3MSw3IEBAIENsb3NlUG9ydGFsU3RtdDoKICAqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKi8KIAogQ29weVN0bXQ6CUNPUFkgb3B0X2JpbmFyeSBxdWFsaWZpZWRfbmFtZSBv cHRfY29sdW1uX2xpc3Qgb3B0X29pZHMKLQkJCWNvcHlfZnJvbSBvcHRfcHJvZ3JhbSBjb3B5X2Zp bGVfbmFtZSBjb3B5X2RlbGltaXRlciBvcHRfd2l0aCBjb3B5X29wdGlvbnMKKwkJCWNvcHlfZnJv bSBvcHRfcHJvZ3JhbSBjb3B5X2ZpbGVfbmFtZSBjb3B5X2RlbGltaXRlciBvcHRfd2l0aCBjb3B5 X29wdGlvbnMgb3B0X3doZW5fY2xhdXNlCiAJCQkJewogCQkJCQlDb3B5U3RtdCAqbiA9IG1ha2VO b2RlKENvcHlTdG10KTsKIAkJCQkJbi0+cmVsYXRpb24gPSAkMzsKQEAgLTI5NzksNiArMjk4MCw3 IEBAIENvcHlTdG10OglDT1BZIG9wdF9iaW5hcnkgcXVhbGlmaWVkX25hbWUgb3B0X2NvbHVtbl9s aXN0IG9wdF9vaWRzCiAJCQkJCW4tPmlzX2Zyb20gPSAkNjsKIAkJCQkJbi0+aXNfcHJvZ3JhbSA9 ICQ3OwogCQkJCQluLT5maWxlbmFtZSA9ICQ4OworCQkJCQluLT53aGVuQ2xhdXNlID0gJDEyOwog CiAJCQkJCWlmIChuLT5pc19wcm9ncmFtICYmIG4tPmZpbGVuYW1lID09IE5VTEwpCiAJCQkJCQll cmVwb3J0KEVSUk9SLApAQCAtMzE3OCw2ICszMTgwLDExIEBAIGNvcHlfZ2VuZXJpY19vcHRfYXJn X2xpc3Q6CiAJCQkJfQogCQk7CiAKK29wdF93aGVuX2NsYXVzZToKKwkJCVdIRU4gYV9leHByCQkJ CQkJCXsgJCQgPSAkMjsgfQorCQkJfCAvKkVNUFRZKi8JCQkJCQkJCXsgJCQgPSBOVUxMOyB9CisJ CTsKKwogLyogYmV3YXJlIG9mIGVtaXR0aW5nIG5vbi1zdHJpbmcgbGlzdCBlbGVtZW50cyBoZXJl OyBzZWUgY29tbWFuZHMvZGVmaW5lLmMgKi8KIGNvcHlfZ2VuZXJpY19vcHRfYXJnX2xpc3RfaXRl bToKIAkJCW9wdF9ib29sZWFuX29yX3N0cmluZwl7ICQkID0gKE5vZGUgKikgbWFrZVN0cmluZygk MSk7IH0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCBiL3NyYy9p bmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAppbmRleCAwN2FiMWEzZGRlLi45MzE4YTllN2I4IDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKKysrIGIvc3JjL2luY2x1 ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCkBAIC0xOTU5LDYgKzE5NTksNyBAQCB0eXBlZGVmIHN0cnVj dCBDb3B5U3RtdAogCWJvb2wJCWlzX3Byb2dyYW07CQkvKiBpcyAnZmlsZW5hbWUnIGEgcHJvZ3Jh bSB0byBwb3Blbj8gKi8KIAljaGFyCSAgICpmaWxlbmFtZTsJCS8qIGZpbGVuYW1lLCBvciBOVUxM IGZvciBTVERJTi9TVERPVVQgKi8KIAlMaXN0CSAgICpvcHRpb25zOwkJLyogTGlzdCBvZiBEZWZF bGVtIG5vZGVzICovCisJTm9kZQkgICAqd2hlbkNsYXVzZTsJLyogcXVhbGlmaWNhdGlvbnMgKi8K IH0gQ29weVN0bXQ7CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3Ny Yy9pbnRlcmZhY2VzL2VjcGcvcHJlcHJvYy9lY3BnLmFkZG9ucyBiL3NyYy9pbnRlcmZhY2VzL2Vj cGcvcHJlcHJvYy9lY3BnLmFkZG9ucwppbmRleCBjYTNlZmFkYzQ4Li43MDdkNDdiMzg1IDEwMDY0 NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9lY3BnL3ByZXByb2MvZWNwZy5hZGRvbnMKKysrIGIvc3Jj L2ludGVyZmFjZXMvZWNwZy9wcmVwcm9jL2VjcGcuYWRkb25zCkBAIC0xOTIsNyArMTkyLDcgQEAg RUNQRzogd2hlcmVfb3JfY3VycmVudF9jbGF1c2VXSEVSRUNVUlJFTlRfUE9GY3Vyc29yX25hbWUg YmxvY2sKIAkJY2hhciAqY3Vyc29yX21hcmtlciA9ICQ0WzBdID09ICc6JyA/IG1tX3N0cmR1cCgi JDAiKSA6ICQ0OwogCQkkJCA9IGNhdF9zdHIoMixtbV9zdHJkdXAoIndoZXJlIGN1cnJlbnQgb2Yi KSwgY3Vyc29yX21hcmtlcik7CiAJfQotRUNQRzogQ29weVN0bXRDT1BZb3B0X2JpbmFyeXF1YWxp ZmllZF9uYW1lb3B0X2NvbHVtbl9saXN0b3B0X29pZHNjb3B5X2Zyb21vcHRfcHJvZ3JhbWNvcHlf ZmlsZV9uYW1lY29weV9kZWxpbWl0ZXJvcHRfd2l0aGNvcHlfb3B0aW9ucyBhZGRvbgorRUNQRzog Q29weVN0bXRDT1BZb3B0X2JpbmFyeXF1YWxpZmllZF9uYW1lb3B0X2NvbHVtbl9saXN0b3B0X29p ZHNjb3B5X2Zyb21vcHRfcHJvZ3JhbWNvcHlfZmlsZV9uYW1lY29weV9kZWxpbWl0ZXJvcHRfd2l0 aGNvcHlfb3B0aW9uc29wdF93aGVuX2NsYXVzZSBhZGRvbgogCQkJaWYgKHN0cmNtcCgkNiwgImZy b20iKSA9PSAwICYmCiAJCQkgICAoc3RyY21wKCQ3LCAic3RkaW4iKSA9PSAwIHx8IHN0cmNtcCgk NywgInN0ZG91dCIpID09IDApKQogCQkJCW1tZXJyb3IoUEFSU0VfRVJST1IsIEVUX1dBUk5JTkcs ICJDT1BZIEZST00gU1RESU4gaXMgbm90IGltcGxlbWVudGVkIik7Cg== --000000000000aadcdd0577f0202b--