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 1leUxb-00056P-VQ for pgsql-hackers@arkaria.postgresql.org; Thu, 06 May 2021 03:46:00 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1leUxa-0005d0-Uw for pgsql-hackers@arkaria.postgresql.org; Thu, 06 May 2021 03:45:58 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1leUxa-0005cs-Ez for pgsql-hackers@lists.postgresql.org; Thu, 06 May 2021 03:45:58 +0000 Received: from mail-pf1-x42f.google.com ([2607:f8b0:4864:20::42f]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1leUxX-0007Qr-9o for pgsql-hackers@postgresql.org; Thu, 06 May 2021 03:45:57 +0000 Received: by mail-pf1-x42f.google.com with SMTP id 10so4270907pfl.1 for ; Wed, 05 May 2021 20:45:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=j-davis-com.20150623.gappssmtp.com; s=20150623; h=message-id:subject:from:to:date:mime-version; bh=OcC38+rBTQWkNdhtVqKwarwzSGd083OFnShkMVq4Rck=; b=DxiyVIWk8Vhxty3O21c0TqTLxfsc5y7XEfqxVsttx1xt5uhzqsWa+x9V2w7xlD/77Z Fwpynn//QfcKdTmGCFx1ScvJ44PeXnt74s27K4WQ0v+5f/vmGBG2cJ1SWbiNm0seKWqy EilB0ApIgR9TWlgTUYD0d8NsQEu2IKWT8YjPV5Lh2PmEnoGEePyXYu2Jxr4DIy7BhFmI 4aQnV2cb0OA2jKBJrRDRVsw6bJzJkkfd12L19ffN6mYFYVejv5lwiycGq+B8QGvjqRYx aovPAbw3GhaGvptVNXmgMPoorDx8sJPq/Xa/V836kqZRq4AfqxYZDzmF6KuCt3r2qOf6 uslw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:message-id:subject:from:to:date:mime-version; bh=OcC38+rBTQWkNdhtVqKwarwzSGd083OFnShkMVq4Rck=; b=IW28RQD3XlvNGhEvSxAV9DTP1/LhNcw2l+/XNS8AfMXWKIi2BDrH+apf/YayhGE42Y SLG9W6lrP6nfQ2SaZzNK2bcwPY+fSlzB4nNGnXujx5ECejpEwXe79LbvdVb9AeJYckOE b5y0XnWuT+Gn5s5uAgyYmHwZOZNdt6ukA+6HwBgzcjqfLm9rmGqG29rMOo+B6E5tvagk FynwXap42TVqdJ6CZmkjAjUwPJSB1cKeIQ7reL9pbyeg+oga5jB38UUWNqxaXKL9ggb1 csSfiesXxupTd1c1n2QprGuS24Nc+7Jii4/K9QwMBxJOCBIb1iENCDWmNHblOD2WOHva TUyA== X-Gm-Message-State: AOAM531zFWsmtgcxp+CO5e3CFn5rsu+nxFuefBoUsqrA0zKqdoRZHlle TlLEcslWVLOUzjoBvENIRWyXkTYFcL677g== X-Google-Smtp-Source: ABdhPJy+1itsnrvy7QSZBpzxKg4ZdSxsxREOtORyogqERQMnaiXq2D28NdPK5GFzNQBZj6CQ8LL4bQ== X-Received: by 2002:a05:6a00:856:b029:28e:e5d2:9a62 with SMTP id q22-20020a056a000856b029028ee5d29a62mr2143787pfk.17.1620272753457; Wed, 05 May 2021 20:45:53 -0700 (PDT) Received: from jdavis.lan (c-73-231-146-4.hsd1.ca.comcast.net. [73.231.146.4]) by smtp.gmail.com with ESMTPSA id j9sm576000pfc.193.2021.05.05.20.45.52 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Wed, 05 May 2021 20:45:52 -0700 (PDT) Message-ID: Subject: [v15] ALTER TABLE ... SET ACCESS METHOD From: Jeff Davis To: pgsql-hackers@postgresql.org Date: Wed, 05 May 2021 20:45:50 -0700 Content-Type: multipart/mixed; boundary="=-U4M5K7xdNdtsQETkmEAM" X-Mailer: Evolution 3.28.5-0ubuntu0.18.04.2 Mime-Version: 1.0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=-U4M5K7xdNdtsQETkmEAM Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit The attached patch implements ALTER TABLE ... SET ACCESS METHOD. For simplicity, I used the normal alter table path, ATRewriteTable(), which does not follow the stricter isolation semantics that VACUUM FULL follows. If someone thinks that's unacceptable, please let me know. Regards, Jeff Davis --=-U4M5K7xdNdtsQETkmEAM Content-Disposition: attachment; filename="alter-access-method.diff" Content-Type: text/x-patch; name="alter-access-method.diff"; charset="UTF-8" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfdGFibGUuc2dtbCBiL2RvYy9zcmMv c2dtbC9yZWYvYWx0ZXJfdGFibGUuc2dtbAppbmRleCA2MTY2YjI2MzM0NS4uMjU1MzE3ODgzYmMg MTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfdGFibGUuc2dtbAorKysgYi9kb2Mv c3JjL3NnbWwvcmVmL2FsdGVyX3RhYmxlLnNnbWwKQEAgLTc2LDYgKzc2LDcgQEAgQUxURVIgVEFC TEUgWyBJRiBFWElTVFMgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVw bGFjZWFibGU+CiAgICAgU0VUIFdJVEhPVVQgQ0xVU1RFUgogICAgIFNFVCBXSVRIT1VUIE9JRFMK ICAgICBTRVQgVEFCTEVTUEFDRSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmV3X3Rh Ymxlc3BhY2U8L3JlcGxhY2VhYmxlPgorICAgIFNFVCBBQ0NFU1MgTUVUSE9EIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5uZXdfYWNjZXNzX21ldGhvZDwvcmVwbGFjZWFibGU+CiAgICAg U0VUIHsgTE9HR0VEIHwgVU5MT0dHRUQgfQogICAgIFNFVCAoIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5zdG9yYWdlX3BhcmFtZXRlcjwvcmVwbGFjZWFibGU+IFs9IDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj52YWx1ZTwvcmVwbGFjZWFibGU+XSBbLCAuLi4gXSApCiAgICAg UkVTRVQgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c3RvcmFnZV9wYXJhbWV0ZXI8 L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSApCkBAIC03MDYsNiArNzA3LDE2IEBAIFdJVEggKCBNT0RV TFVTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1lcmljX2xpdGVyYWw8L3JlcGxh Y2VhYmxlPiwgUkVNCiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgogCisgICA8 dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxsaXRlcmFsPlNFVCBBQ0NFU1MgTUVUSE9EPC9saXRl cmFsPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgVGhpcyBmb3Jt IGNoYW5nZXMgdGhlIGFjY2VzcyBtZXRob2Qgb2YgdGhlIHRhYmxlLiBTZWUgPHhyZWYKKyAgICAg IGxpbmtlbmQ9InRhYmxlYW0iLz4gZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAgIDwvcGFyYT4K KyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKICAgIDx2YXJsaXN0ZW50cnk+ CiAgICAgPHRlcm0+PGxpdGVyYWw+U0VUIHsgTE9HR0VEIHwgVU5MT0dHRUQgfTwvbGl0ZXJhbD48 L3Rlcm0+CiAgICAgPGxpc3RpdGVtPgpAQCAtMTIxOSw2ICsxMjMwLDE1IEBAIFdJVEggKCBNT0RV TFVTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1lcmljX2xpdGVyYWw8L3JlcGxh Y2VhYmxlPiwgUkVNCiAgICAgICA8L2xpc3RpdGVtPgogICAgICA8L3Zhcmxpc3RlbnRyeT4KIAor ICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPm5ld19hY2Nlc3NfbWV0aG9kPC9yZXBsYWNlYWJsZT48L3Rlcm0+CisgICAgICA8bGlz dGl0ZW0+CisgICAgICAgPHBhcmE+CisgICAgICAgIFRoZSBuYW1lIG9mIHRoZSBhY2Nlc3MgbWV0 aG9kIHRvIHdoaWNoIHRoZSB0YWJsZSB3aWxsIGJlIGNvbnZlcnRlZC4KKyAgICAgICA8L3BhcmE+ CisgICAgICA8L2xpc3RpdGVtPgorICAgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgICA8dmFybGlz dGVudHJ5PgogICAgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5ld19z Y2hlbWE8L3JlcGxhY2VhYmxlPjwvdGVybT4KICAgICAgIDxsaXN0aXRlbT4KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NsdXN0ZXIuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Ns dXN0ZXIuYwppbmRleCA2NDg3YTllM2ZjYi4uZTBjODRkNjQ5ZWUgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2NsdXN0ZXIuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jbHVz dGVyLmMKQEAgLTU5Nyw2ICs1OTcsNyBAQCByZWJ1aWxkX3JlbGF0aW9uKFJlbGF0aW9uIE9sZEhl YXAsIE9pZCBpbmRleE9pZCwgYm9vbCB2ZXJib3NlKQogCiAJLyogQ3JlYXRlIHRoZSB0cmFuc2ll bnQgdGFibGUgdGhhdCB3aWxsIHJlY2VpdmUgdGhlIHJlLW9yZGVyZWQgZGF0YSAqLwogCU9JRE5l d0hlYXAgPSBtYWtlX25ld19oZWFwKHRhYmxlT2lkLCB0YWJsZVNwYWNlLAorCQkJCQkJCSAgIE9s ZEhlYXAtPnJkX3JlbC0+cmVsYW0sCiAJCQkJCQkJICAgcmVscGVyc2lzdGVuY2UsCiAJCQkJCQkJ ICAgQWNjZXNzRXhjbHVzaXZlTG9jayk7CiAKQEAgLTYyNiw4ICs2MjcsOCBAQCByZWJ1aWxkX3Jl bGF0aW9uKFJlbGF0aW9uIE9sZEhlYXAsIE9pZCBpbmRleE9pZCwgYm9vbCB2ZXJib3NlKQogICog ZGF0YSwgdGhlbiBjYWxsIGZpbmlzaF9oZWFwX3N3YXAgdG8gY29tcGxldGUgdGhlIG9wZXJhdGlv bi4KICAqLwogT2lkCi1tYWtlX25ld19oZWFwKE9pZCBPSURPbGRIZWFwLCBPaWQgTmV3VGFibGVT cGFjZSwgY2hhciByZWxwZXJzaXN0ZW5jZSwKLQkJCSAgTE9DS01PREUgbG9ja21vZGUpCittYWtl X25ld19oZWFwKE9pZCBPSURPbGRIZWFwLCBPaWQgTmV3VGFibGVTcGFjZSwgT2lkIE5ld0FjY2Vz c01ldGhvZCwKKwkJCSAgY2hhciByZWxwZXJzaXN0ZW5jZSwgTE9DS01PREUgbG9ja21vZGUpCiB7 CiAJVHVwbGVEZXNjCU9sZEhlYXBEZXNjOwogCWNoYXIJCU5ld0hlYXBOYW1lW05BTUVEQVRBTEVO XTsKQEAgLTY4Niw3ICs2ODcsNyBAQCBtYWtlX25ld19oZWFwKE9pZCBPSURPbGRIZWFwLCBPaWQg TmV3VGFibGVTcGFjZSwgY2hhciByZWxwZXJzaXN0ZW5jZSwKIAkJCQkJCQkJCQkgIEludmFsaWRP aWQsCiAJCQkJCQkJCQkJICBJbnZhbGlkT2lkLAogCQkJCQkJCQkJCSAgT2xkSGVhcC0+cmRfcmVs LT5yZWxvd25lciwKLQkJCQkJCQkJCQkgIE9sZEhlYXAtPnJkX3JlbC0+cmVsYW0sCisJCQkJCQkJ CQkJICBOZXdBY2Nlc3NNZXRob2QsCiAJCQkJCQkJCQkJICBPbGRIZWFwRGVzYywKIAkJCQkJCQkJ CQkgIE5JTCwKIAkJCQkJCQkJCQkgIFJFTEtJTkRfUkVMQVRJT04sCkBAIC0xMDM2LDYgKzEwMzcs MTAgQEAgc3dhcF9yZWxhdGlvbl9maWxlcyhPaWQgcjEsIE9pZCByMiwgYm9vbCB0YXJnZXRfaXNf cGdfY2xhc3MsCiAJCXJlbGZvcm0xLT5yZWx0YWJsZXNwYWNlID0gcmVsZm9ybTItPnJlbHRhYmxl c3BhY2U7CiAJCXJlbGZvcm0yLT5yZWx0YWJsZXNwYWNlID0gc3dhcHRlbXA7CiAKKwkJc3dhcHRl bXAgPSByZWxmb3JtMS0+cmVsYW07CisJCXJlbGZvcm0xLT5yZWxhbSA9IHJlbGZvcm0yLT5yZWxh bTsKKwkJcmVsZm9ybTItPnJlbGFtID0gc3dhcHRlbXA7CisKIAkJc3dwdG1wY2hyID0gcmVsZm9y bTEtPnJlbHBlcnNpc3RlbmNlOwogCQlyZWxmb3JtMS0+cmVscGVyc2lzdGVuY2UgPSByZWxmb3Jt Mi0+cmVscGVyc2lzdGVuY2U7CiAJCXJlbGZvcm0yLT5yZWxwZXJzaXN0ZW5jZSA9IHN3cHRtcGNo cjsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL21hdHZpZXcuYyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL21hdHZpZXcuYwppbmRleCAxNzJlYzZlOTgyOC4uMWViZDAyZmQ2ODQgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL21hdHZpZXcuYworKysgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy9tYXR2aWV3LmMKQEAgLTI5OCw4ICsyOTgsOSBAQCBFeGVjUmVmcmVzaE1hdFZp ZXcoUmVmcmVzaE1hdFZpZXdTdG10ICpzdG10LCBjb25zdCBjaGFyICpxdWVyeVN0cmluZywKIAkg KiBpdCBhZ2FpbnN0IGFjY2VzcyBieSBhbnkgb3RoZXIgcHJvY2VzcyB1bnRpbCBjb21taXQgKGJ5 IHdoaWNoIHRpbWUgaXQKIAkgKiB3aWxsIGJlIGdvbmUpLgogCSAqLwotCU9JRE5ld0hlYXAgPSBt YWtlX25ld19oZWFwKG1hdHZpZXdPaWQsIHRhYmxlU3BhY2UsIHJlbHBlcnNpc3RlbmNlLAotCQkJ CQkJCSAgIEV4Y2x1c2l2ZUxvY2spOworCU9JRE5ld0hlYXAgPSBtYWtlX25ld19oZWFwKG1hdHZp ZXdPaWQsIHRhYmxlU3BhY2UsCisJCQkJCQkJICAgbWF0dmlld1JlbC0+cmRfcmVsLT5yZWxhbSwK KwkJCQkJCQkgICByZWxwZXJzaXN0ZW5jZSwgRXhjbHVzaXZlTG9jayk7CiAJTG9ja1JlbGF0aW9u T2lkKE9JRE5ld0hlYXAsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2spOwogCWRlc3QgPSBDcmVhdGVUcmFu c2llbnRSZWxEZXN0UmVjZWl2ZXIoT0lETmV3SGVhcCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRz LmMKaW5kZXggMGRhNjE3ODRkN2EuLmJlOTFhMDBhMTcwIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy90YWJsZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNt ZHMuYwpAQCAtMTc3LDYgKzE3Nyw3IEBAIHR5cGVkZWYgc3RydWN0IEFsdGVyZWRUYWJsZUluZm8K IAlMaXN0CSAgICphZnRlclN0bXRzOwkJLyogTGlzdCBvZiB1dGlsaXR5IGNvbW1hbmQgcGFyc2V0 cmVlcyAqLwogCWJvb2wJCXZlcmlmeV9uZXdfbm90bnVsbDsgLyogVCBpZiB3ZSBzaG91bGQgcmVj aGVjayBOT1QgTlVMTCAqLwogCWludAkJCXJld3JpdGU7CQkvKiBSZWFzb24gZm9yIGZvcmNlZCBy ZXdyaXRlLCBpZiBhbnkgKi8KKwlPaWQJCQluZXdBY2Nlc3NNZXRob2Q7CS8qIG5ldyBhY2Nlc3Mg bWV0aG9kOyAwIG1lYW5zIG5vIGNoYW5nZSAqLwogCU9pZAkJCW5ld1RhYmxlU3BhY2U7CS8qIG5l dyB0YWJsZXNwYWNlOyAwIG1lYW5zIG5vIGNoYW5nZSAqLwogCWJvb2wJCWNoZ1BlcnNpc3RlbmNl OyAvKiBUIGlmIFNFVCBMT0dHRUQvVU5MT0dHRUQgaXMgdXNlZCAqLwogCWNoYXIJCW5ld3JlbHBl cnNpc3RlbmNlOwkvKiBpZiBhYm92ZSBpcyB0cnVlICovCkBAIC01NDAsNiArNTQxLDcgQEAgc3Rh dGljIHZvaWQgY2hhbmdlX293bmVyX3JlY3Vyc2VfdG9fc2VxdWVuY2VzKE9pZCByZWxhdGlvbk9p ZCwKIHN0YXRpYyBPYmplY3RBZGRyZXNzIEFURXhlY0NsdXN0ZXJPbihSZWxhdGlvbiByZWwsIGNv bnN0IGNoYXIgKmluZGV4TmFtZSwKIAkJCQkJCQkJCSBMT0NLTU9ERSBsb2NrbW9kZSk7CiBzdGF0 aWMgdm9pZCBBVEV4ZWNEcm9wQ2x1c3RlcihSZWxhdGlvbiByZWwsIExPQ0tNT0RFIGxvY2ttb2Rl KTsKK3N0YXRpYyB2b2lkIEFUUHJlcFNldEFjY2Vzc01ldGhvZChBbHRlcmVkVGFibGVJbmZvICp0 YWIsIFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqYW1uYW1lKTsKIHN0YXRpYyBib29sIEFUUHJl cENoYW5nZVBlcnNpc3RlbmNlKFJlbGF0aW9uIHJlbCwgYm9vbCB0b0xvZ2dlZCk7CiBzdGF0aWMg dm9pZCBBVFByZXBTZXRUYWJsZVNwYWNlKEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24g cmVsLAogCQkJCQkJCQljb25zdCBjaGFyICp0YWJsZXNwYWNlbmFtZSwgTE9DS01PREUgbG9ja21v ZGUpOwpAQCAtNDI4Nyw2ICs0Mjg5LDcgQEAgQWx0ZXJUYWJsZUdldExvY2tMZXZlbChMaXN0ICpj bWRzKQogCQkJCWNtZF9sb2NrbW9kZSA9IFNoYXJlVXBkYXRlRXhjbHVzaXZlTG9jazsKIAkJCQli cmVhazsKIAorCQkJY2FzZSBBVF9TZXRBY2Nlc3NNZXRob2Q6CiAJCQljYXNlIEFUX1NldExvZ2dl ZDoKIAkJCWNhc2UgQVRfU2V0VW5Mb2dnZWQ6CiAJCQkJY21kX2xvY2ttb2RlID0gQWNjZXNzRXhj bHVzaXZlTG9jazsKQEAgLTQ2MDksNiArNDYxMiwxNSBAQCBBVFByZXBDbWQoTGlzdCAqKndxdWV1 ZSwgUmVsYXRpb24gcmVsLCBBbHRlclRhYmxlQ21kICpjbWQsCiAJCQkvKiBObyBjb21tYW5kLXNw ZWNpZmljIHByZXAgbmVlZGVkICovCiAJCQlwYXNzID0gQVRfUEFTU19NSVNDOwogCQkJYnJlYWs7 CisJCWNhc2UgQVRfU2V0QWNjZXNzTWV0aG9kOgkvKiBTRVQgQUNDRVNTIE1FVEhPRCAqLworCQkJ QVRTaW1wbGVQZXJtaXNzaW9ucyhyZWwsIEFUVF9UQUJMRSB8IEFUVF9NQVRWSUVXKTsKKwkJCWlm ICh0YWItPm5ld0FjY2Vzc01ldGhvZCkKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycmNv ZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCQkJIGVycm1zZygiY2Fubm90 IGNoYW5nZSBhY2Nlc3MgbWV0aG9kIHNldHRpbmcgdHdpY2UiKSkpOworCQkJQVRQcmVwU2V0QWNj ZXNzTWV0aG9kKHRhYiwgcmVsLCBjbWQtPm5hbWUpOworCQkJcGFzcyA9IEFUX1BBU1NfTUlTQzsK KwkJCWJyZWFrOwogCQljYXNlIEFUX1NldExvZ2dlZDoJCS8qIFNFVCBMT0dHRUQgKi8KIAkJCUFU U2ltcGxlUGVybWlzc2lvbnMocmVsLCBBVFRfVEFCTEUpOwogCQkJaWYgKHRhYi0+Y2hnUGVyc2lz dGVuY2UpCkBAIC01MDEyLDYgKzUwMjQsOCBAQCBBVEV4ZWNDbWQoTGlzdCAqKndxdWV1ZSwgQWx0 ZXJlZFRhYmxlSW5mbyAqdGFiLAogCQljYXNlIEFUX0Ryb3BDbHVzdGVyOgkvKiBTRVQgV0lUSE9V VCBDTFVTVEVSICovCiAJCQlBVEV4ZWNEcm9wQ2x1c3RlcihyZWwsIGxvY2ttb2RlKTsKIAkJCWJy ZWFrOworCQljYXNlIEFUX1NldEFjY2Vzc01ldGhvZDoJLyogU0VUIEFDQ0VTUyBNRVRIT0QgKi8K KwkJCWJyZWFrOwogCQljYXNlIEFUX1NldExvZ2dlZDoJCS8qIFNFVCBMT0dHRUQgKi8KIAkJY2Fz ZSBBVF9TZXRVbkxvZ2dlZDoJLyogU0VUIFVOTE9HR0VEICovCiAJCQlicmVhazsKQEAgLTUzNjUs NiArNTM3OSw3IEBAIEFUUmV3cml0ZVRhYmxlcyhBbHRlclRhYmxlU3RtdCAqcGFyc2V0cmVlLCBM aXN0ICoqd3F1ZXVlLCBMT0NLTU9ERSBsb2NrbW9kZSwKIAkJCVJlbGF0aW9uCU9sZEhlYXA7CiAJ CQlPaWQJCQlPSUROZXdIZWFwOwogCQkJT2lkCQkJTmV3VGFibGVTcGFjZTsKKwkJCU9pZAkJCWFj Y2Vzc21ldGhvZDsKIAkJCWNoYXIJCXBlcnNpc3RlbmNlOwogCiAJCQlPbGRIZWFwID0gdGFibGVf b3Blbih0YWItPnJlbGlkLCBOb0xvY2spOwpAQCAtNTQxMSw2ICs1NDI2LDEzIEBAIEFUUmV3cml0 ZVRhYmxlcyhBbHRlclRhYmxlU3RtdCAqcGFyc2V0cmVlLCBMaXN0ICoqd3F1ZXVlLCBMT0NLTU9E RSBsb2NrbW9kZSwKIAkJCXBlcnNpc3RlbmNlID0gdGFiLT5jaGdQZXJzaXN0ZW5jZSA/CiAJCQkJ dGFiLT5uZXdyZWxwZXJzaXN0ZW5jZSA6IE9sZEhlYXAtPnJkX3JlbC0+cmVscGVyc2lzdGVuY2U7 CiAKKwkJCS8qCisJCQkgKiBTZWxlY3QgYWNjZXNzIG1ldGhvZCBvZiB0cmFuc2llbnQgdGFibGUg KHNhbWUgYXMgb3JpZ2luYWwKKwkJCSAqIHVubGVzcyB1c2VyIHJlcXVlc3RlZCBhIGNoYW5nZSkK KwkJCSAqLworCQkJYWNjZXNzbWV0aG9kID0gT2lkSXNWYWxpZCh0YWItPm5ld0FjY2Vzc01ldGhv ZCkgPworCQkJCXRhYi0+bmV3QWNjZXNzTWV0aG9kIDogT2xkSGVhcC0+cmRfcmVsLT5yZWxhbTsK KwogCQkJdGFibGVfY2xvc2UoT2xkSGVhcCwgTm9Mb2NrKTsKIAogCQkJLyoKQEAgLTU0NDMsOCAr NTQ2NSw4IEBAIEFUUmV3cml0ZVRhYmxlcyhBbHRlclRhYmxlU3RtdCAqcGFyc2V0cmVlLCBMaXN0 ICoqd3F1ZXVlLCBMT0NLTU9ERSBsb2NrbW9kZSwKIAkJCSAqIHBlcnNpc3RlbmNlLiBUaGF0IHdv dWxkbid0IHdvcmsgZm9yIHBnX2NsYXNzLCBidXQgdGhhdCBjYW4ndCBiZQogCQkJICogdW5sb2dn ZWQgYW55d2F5LgogCQkJICovCi0JCQlPSUROZXdIZWFwID0gbWFrZV9uZXdfaGVhcCh0YWItPnJl bGlkLCBOZXdUYWJsZVNwYWNlLCBwZXJzaXN0ZW5jZSwKLQkJCQkJCQkJCSAgIGxvY2ttb2RlKTsK KwkJCU9JRE5ld0hlYXAgPSBtYWtlX25ld19oZWFwKHRhYi0+cmVsaWQsIE5ld1RhYmxlU3BhY2Us IGFjY2Vzc21ldGhvZCwKKwkJCQkJCQkJCSAgIHBlcnNpc3RlbmNlLCBsb2NrbW9kZSk7CiAKIAkJ CS8qCiAJCQkgKiBDb3B5IHRoZSBoZWFwIGRhdGEgaW50byB0aGUgbmV3IHRhYmxlIHdpdGggdGhl IGRlc2lyZWQKQEAgLTE1Njk1LDYgKzE1NzE3LDM0IEBAIEFURXhlY1NldENvbXByZXNzaW9uKEFs dGVyZWRUYWJsZUluZm8gKnRhYiwKIH0KIAogCisvKgorICogUHJlcGFyYXRpb24gcGhhc2UgZm9y IFNFVCBUQUJMRVNQQUNFCisgKgorICogQ2hlY2sgdGhhdCBhY2Nlc3MgbWV0aG9kIGV4aXN0cy4g SWYgaXQncyB0aGUgc2FtZSBhcyB0aGUgdGFibGUncyBjdXJyZW50CisgKiBhY2Nlc3MgbWV0aG9k LCBpdCdzIGEgbm8tb3AuIE90aGVyd2lzZSwgYSB0YWJsZSByZXdyaXRlIGlzIG5lY2Vzc2FyeS4K KyAqLworc3RhdGljIHZvaWQKK0FUUHJlcFNldEFjY2Vzc01ldGhvZChBbHRlcmVkVGFibGVJbmZv ICp0YWIsIFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqYW1uYW1lKQoreworCU9pZAkJCWFtb2lk OworCisJLyogQ2hlY2sgdGhhdCB0aGUgdGFibGUgYWNjZXNzIG1ldGhvZCBleGlzdHMgKi8KKwlh bW9pZCA9IGdldF90YWJsZV9hbV9vaWQoYW1uYW1lLCBmYWxzZSk7CisKKwlpZiAocmVsLT5yZF9y ZWwtPnJlbGFtID09IGFtb2lkKQorCQlyZXR1cm47CisKKwkvKiBTYXZlIGluZm8gZm9yIFBoYXNl IDMgdG8gZG8gdGhlIHJlYWwgd29yayAqLworCWlmIChPaWRJc1ZhbGlkKHRhYi0+bmV3QWNjZXNz TWV0aG9kKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9F UlJPUiksCisJCQkJIGVycm1zZygiY2Fubm90IGhhdmUgbXVsdGlwbGUgU0VUIEFDQ0VTUyBNRVRI T0Qgc3ViY29tbWFuZHMiKSkpOworCisJdGFiLT5yZXdyaXRlIHw9IEFUX1JFV1JJVEVfQUNDRVNT X01FVEhPRDsKKwl0YWItPm5ld0FjY2Vzc01ldGhvZCA9IGFtb2lkOworfQorCisKIC8qCiAgKiBQ cmVwYXJhdGlvbiBwaGFzZSBmb3IgU0VUIExPR0dFRC9VTkxPR0dFRAogICoKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55Cmlu ZGV4IGI0YWI0MDE0Yzg3Li45ZTQxZTg0YjY0YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFy c2VyL2dyYW0ueQorKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CkBAIC0yNDc1LDYgKzI0 NzUsMTQgQEAgYWx0ZXJfdGFibGVfY21kOgogCQkJCQluLT5uYW1lID0gTlVMTDsKIAkJCQkJJCQg PSAoTm9kZSAqKW47CiAJCQkJfQorCQkJLyogQUxURVIgVEFCTEUgPG5hbWU+IFNFVCBBQ0NFU1Mg TUVUSE9EIDx0YWJsZXNwYWNlbmFtZT4gKi8KKwkJCXwgU0VUIEFDQ0VTUyBNRVRIT0QgbmFtZQor CQkJCXsKKwkJCQkJQWx0ZXJUYWJsZUNtZCAqbiA9IG1ha2VOb2RlKEFsdGVyVGFibGVDbWQpOwor CQkJCQluLT5zdWJ0eXBlID0gQVRfU2V0QWNjZXNzTWV0aG9kOworCQkJCQluLT5uYW1lID0gJDQ7 CisJCQkJCSQkID0gKE5vZGUgKiluOworCQkJCX0KIAkJCS8qIEFMVEVSIFRBQkxFIDxuYW1lPiBT RVQgTE9HR0VEICovCiAJCQl8IFNFVCBMT0dHRUQKIAkJCQl7CmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9jb21tYW5kcy9jbHVzdGVyLmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9jbHVzdGVyLmgK aW5kZXggYTk0MWYyYWNjZGEuLmI2NGQzYmMyMDQwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9j b21tYW5kcy9jbHVzdGVyLmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvY2x1c3Rlci5oCkBA IC0zNSw4ICszNSw4IEBAIGV4dGVybiB2b2lkIGNoZWNrX2luZGV4X2lzX2NsdXN0ZXJhYmxlKFJl bGF0aW9uIE9sZEhlYXAsIE9pZCBpbmRleE9pZCwKIAkJCQkJCQkJCSAgIGJvb2wgcmVjaGVjaywg TE9DS01PREUgbG9ja21vZGUpOwogZXh0ZXJuIHZvaWQgbWFya19pbmRleF9jbHVzdGVyZWQoUmVs YXRpb24gcmVsLCBPaWQgaW5kZXhPaWQsIGJvb2wgaXNfaW50ZXJuYWwpOwogCi1leHRlcm4gT2lk CW1ha2VfbmV3X2hlYXAoT2lkIE9JRE9sZEhlYXAsIE9pZCBOZXdUYWJsZVNwYWNlLCBjaGFyIHJl bHBlcnNpc3RlbmNlLAotCQkJCQkJICBMT0NLTU9ERSBsb2NrbW9kZSk7CitleHRlcm4gT2lkCW1h a2VfbmV3X2hlYXAoT2lkIE9JRE9sZEhlYXAsIE9pZCBOZXdUYWJsZVNwYWNlLCBPaWQgTmV3QWNj ZXNzTWV0aG9kLAorCQkJCQkJICBjaGFyIHJlbHBlcnNpc3RlbmNlLCBMT0NLTU9ERSBsb2NrbW9k ZSk7CiBleHRlcm4gdm9pZCBmaW5pc2hfaGVhcF9zd2FwKE9pZCBPSURPbGRIZWFwLCBPaWQgT0lE TmV3SGVhcCwKIAkJCQkJCQkgYm9vbCBpc19zeXN0ZW1fY2F0YWxvZywKIAkJCQkJCQkgYm9vbCBz d2FwX3RvYXN0X2J5X2NvbnRlbnQsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9l dmVudF90cmlnZ2VyLmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9ldmVudF90cmlnZ2VyLmgKaW5k ZXggYzExYmYyZDc4MTAuLmU3NjVlNjdmZDEwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21t YW5kcy9ldmVudF90cmlnZ2VyLmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvZXZlbnRfdHJp Z2dlci5oCkBAIC0zMiw2ICszMiw3IEBAIHR5cGVkZWYgc3RydWN0IEV2ZW50VHJpZ2dlckRhdGEK ICNkZWZpbmUgQVRfUkVXUklURV9BTFRFUl9QRVJTSVNURU5DRQkweDAxCiAjZGVmaW5lIEFUX1JF V1JJVEVfREVGQVVMVF9WQUwJCQkweDAyCiAjZGVmaW5lIEFUX1JFV1JJVEVfQ09MVU1OX1JFV1JJ VEUJCTB4MDQKKyNkZWZpbmUgQVRfUkVXUklURV9BQ0NFU1NfTUVUSE9ECQkweDA4CiAKIC8qCiAg KiBFdmVudFRyaWdnZXJEYXRhIGlzIHRoZSBub2RlIHR5cGUgdGhhdCBpcyBwYXNzZWQgYXMgZm1n ciAiY29udGV4dCIgaW5mbwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rl cy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCmluZGV4IDYxNWRmYTI2YWEyLi5j Y2U1YzA4MzRlZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCisr KyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaApAQCAtMTg5OCw2ICsxODk4LDcgQEAg dHlwZWRlZiBlbnVtIEFsdGVyVGFibGVUeXBlCiAJQVRfQ2hhbmdlT3duZXIsCQkJCS8qIGNoYW5n ZSBvd25lciAqLwogCUFUX0NsdXN0ZXJPbiwJCQkJLyogQ0xVU1RFUiBPTiAqLwogCUFUX0Ryb3BD bHVzdGVyLAkJCQkvKiBTRVQgV0lUSE9VVCBDTFVTVEVSICovCisJQVRfU2V0QWNjZXNzTWV0aG9k LAkJCS8qIFNFVCBBQ0NFU1MgTUVUSE9EICovCiAJQVRfU2V0TG9nZ2VkLAkJCQkvKiBTRVQgTE9H R0VEICovCiAJQVRfU2V0VW5Mb2dnZWQsCQkJCS8qIFNFVCBVTkxPR0dFRCAqLwogCUFUX0Ryb3BP aWRzLAkJCQkvKiBTRVQgV0lUSE9VVCBPSURTICovCg== --=-U4M5K7xdNdtsQETkmEAM--