Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1c8ots-0008OB-NR for pgsql-hackers@arkaria.postgresql.org; Mon, 21 Nov 2016 13:44:48 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84_2) (envelope-from ) id 1c8ots-00050S-AH for pgsql-hackers@arkaria.postgresql.org; Mon, 21 Nov 2016 13:44:48 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1c8otq-0004x8-Gm for pgsql-hackers@postgresql.org; Mon, 21 Nov 2016 13:44:46 +0000 Received: from verite.pro ([195.154.189.246] helo=genius-map.net) by magus.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1c8otm-0004vl-RQ for pgsql-hackers@postgresql.org; Mon, 21 Nov 2016 13:44:46 +0000 Received: by genius-map.net (Postfix, from userid 1001) id 2357138A0677; Mon, 21 Nov 2016 14:44:42 +0100 (CET) MIME-Version: 1.0 Subject: Re: Improvements in psql hooks for variables From: "Daniel Verite" To: "Stephen Frost" Cc: "Rahila Syed" ,"Ashutosh Bapat" ,"pgsql-hackers" In-Reply-To: <20161119233603.GC13284@tamriel.snowman.net> Date: Mon, 21 Nov 2016 14:44:37 +0100 Message-Id: <14360f32-7d7e-4452-8fd5-e726477272b1@mm> X-Mailer: Manitou v1.6.0 Content-type: multipart/mixed; boundary="----------=_1479735882-44826-0" X-Pg-Spam-Score: -1.9 (-) 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 is a multi-part message in MIME format... ------------=_1479735882-44826-0 Content-Type: text/plain; charset="iso-8859-15" Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Stephen Frost wrote: > Just fyi, there seems to be some issues with this patch because setting > my PROMPT1 and PROMPT2 variables result in rather odd behavior. Good catch! The issue is that the patch broke the assumption of prompt hooks that their argument points to a long-lived buffer. The attached v4 fixes the bug by passing to hooks a pointer to the final strdup'ed value in VariableSpace rather than temp space, as commented in SetVariable(). Also I've changed something else in ParseVariableBool(). The code assumes "false" when value=3D=3DNULL, but when value is an empty string, the result was true and considered valid, due to the following test being positive when len=3D=3D0 (both with HEAD or the v3 patch from this thread): if (pg_strncasecmp(value, "true", len) =3D=3D 0) return true; It happens that "" as a value yields the same result than "true" for this test so it passes, but it seems rather unintentional. The resulting problem from the POV of the user is that we can do that, for instance: test=3D> \set AUTOCOMMIT without error message or feedback, and that leaves us without much clue about autocommit being enabled: test=3D> \echo :AUTOCOMMIT test=3D>=20 So I've changed ParseVariableBool() in v4 to reject empty string as an invalid boolean (but not NULL since the startup logic requires NULL meaning false in the early initialization of these variables). "make check" seems OK with that, I hope it doesn't cause any regression elsewhere. Best regards, --=20 Daniel V=E9rit=E9 PostgreSQL-powered mailer: http://www.manitou-mail.org Twitter: @DanielVerite ------------=_1479735882-44826-0 Content-Type: text-x-patch; name="psql-var-hooks-v4.patch" Content-Disposition: attachment; filename="psql-var-hooks-v4.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9jb21tYW5kLmMgYi9zcmMvYmlu L3BzcWwvY29tbWFuZC5jCmluZGV4IGE5YTJmZGIuLjYxYjIzMDQgMTAwNjQ0 Ci0tLSBhL3NyYy9iaW4vcHNxbC9jb21tYW5kLmMKKysrIGIvc3JjL2Jpbi9w c3FsL2NvbW1hbmQuYwpAQCAtMjU0LDcgKzI1NCw3IEBAIGV4ZWNfY29tbWFu ZChjb25zdCBjaGFyICpjbWQsCiAJCWlmIChvcHQxICE9IE5VTEwgJiYgc3Ry bmNtcChvcHQxLCBwcmVmaXgsIHNpemVvZihwcmVmaXgpIC0gMSkgPT0gMCkK IAkJewogCQkJcmV1c2VfcHJldmlvdXMgPQotCQkJCVBhcnNlVmFyaWFibGVC b29sKG9wdDEgKyBzaXplb2YocHJlZml4KSAtIDEsIHByZWZpeCkgPworCQkJ CVBhcnNlVmFyaWFibGVCb29sKG9wdDEgKyBzaXplb2YocHJlZml4KSAtIDEs IHByZWZpeCwgTlVMTCkgPwogCQkJCVRSSV9ZRVMgOiBUUklfTk87CiAKIAkJ CWZyZWUob3B0MSk7CkBAIC0xNTQ4LDcgKzE1NDgsNyBAQCBleGVjX2NvbW1h bmQoY29uc3QgY2hhciAqY21kLAogCQkJCQkJCQkJCQkJIE9UX05PUk1BTCwg TlVMTCwgZmFsc2UpOwogCiAJCWlmIChvcHQpCi0JCQlwc2V0LnRpbWluZyA9 IFBhcnNlVmFyaWFibGVCb29sKG9wdCwgIlxcdGltaW5nIik7CisJCQlwc2V0 LnRpbWluZyA9IFBhcnNlVmFyaWFibGVCb29sKG9wdCwgIlxcdGltaW5nIiwg TlVMTCk7CiAJCWVsc2UKIAkJCXBzZXQudGltaW5nID0gIXBzZXQudGltaW5n OwogCQlpZiAoIXBzZXQucXVpZXQpCkBAIC0yNjYwLDcgKzI2NjAsNyBAQCBk b19wc2V0KGNvbnN0IGNoYXIgKnBhcmFtLCBjb25zdCBjaGFyICp2YWx1ZSwg cHJpbnRRdWVyeU9wdCAqcG9wdCwgYm9vbCBxdWlldCkKIAkJaWYgKHZhbHVl ICYmIHBnX3N0cmNhc2VjbXAodmFsdWUsICJhdXRvIikgPT0gMCkKIAkJCXBv cHQtPnRvcHQuZXhwYW5kZWQgPSAyOwogCQllbHNlIGlmICh2YWx1ZSkKLQkJ CXBvcHQtPnRvcHQuZXhwYW5kZWQgPSBQYXJzZVZhcmlhYmxlQm9vbCh2YWx1 ZSwgcGFyYW0pOworCQkJcG9wdC0+dG9wdC5leHBhbmRlZCA9IFBhcnNlVmFy aWFibGVCb29sKHZhbHVlLCBwYXJhbSwgTlVMTCk7CiAJCWVsc2UKIAkJCXBv cHQtPnRvcHQuZXhwYW5kZWQgPSAhcG9wdC0+dG9wdC5leHBhbmRlZDsKIAl9 CkBAIC0yNjY5LDcgKzI2NjksNyBAQCBkb19wc2V0KGNvbnN0IGNoYXIgKnBh cmFtLCBjb25zdCBjaGFyICp2YWx1ZSwgcHJpbnRRdWVyeU9wdCAqcG9wdCwg Ym9vbCBxdWlldCkKIAllbHNlIGlmIChzdHJjbXAocGFyYW0sICJudW1lcmlj bG9jYWxlIikgPT0gMCkKIAl7CiAJCWlmICh2YWx1ZSkKLQkJCXBvcHQtPnRv cHQubnVtZXJpY0xvY2FsZSA9IFBhcnNlVmFyaWFibGVCb29sKHZhbHVlLCBw YXJhbSk7CisJCQlwb3B0LT50b3B0Lm51bWVyaWNMb2NhbGUgPSBQYXJzZVZh cmlhYmxlQm9vbCh2YWx1ZSwgcGFyYW0sIE5VTEwpOwogCQllbHNlCiAJCQlw b3B0LT50b3B0Lm51bWVyaWNMb2NhbGUgPSAhcG9wdC0+dG9wdC5udW1lcmlj TG9jYWxlOwogCX0KQEAgLTI3MjQsNyArMjcyNCw3IEBAIGRvX3BzZXQoY29u c3QgY2hhciAqcGFyYW0sIGNvbnN0IGNoYXIgKnZhbHVlLCBwcmludFF1ZXJ5 T3B0ICpwb3B0LCBib29sIHF1aWV0KQogCWVsc2UgaWYgKHN0cmNtcChwYXJh bSwgInQiKSA9PSAwIHx8IHN0cmNtcChwYXJhbSwgInR1cGxlc19vbmx5Iikg PT0gMCkKIAl7CiAJCWlmICh2YWx1ZSkKLQkJCXBvcHQtPnRvcHQudHVwbGVz X29ubHkgPSBQYXJzZVZhcmlhYmxlQm9vbCh2YWx1ZSwgcGFyYW0pOworCQkJ cG9wdC0+dG9wdC50dXBsZXNfb25seSA9IFBhcnNlVmFyaWFibGVCb29sKHZh bHVlLCBwYXJhbSwgTlVMTCk7CiAJCWVsc2UKIAkJCXBvcHQtPnRvcHQudHVw bGVzX29ubHkgPSAhcG9wdC0+dG9wdC50dXBsZXNfb25seTsKIAl9CkBAIC0y NzU2LDcgKzI3NTYsNyBAQCBkb19wc2V0KGNvbnN0IGNoYXIgKnBhcmFtLCBj b25zdCBjaGFyICp2YWx1ZSwgcHJpbnRRdWVyeU9wdCAqcG9wdCwgYm9vbCBx dWlldCkKIAkJCXBvcHQtPnRvcHQucGFnZXIgPSAyOwogCQllbHNlIGlmICh2 YWx1ZSkKIAkJewotCQkJaWYgKFBhcnNlVmFyaWFibGVCb29sKHZhbHVlLCBw YXJhbSkpCisJCQlpZiAoUGFyc2VWYXJpYWJsZUJvb2wodmFsdWUsIHBhcmFt LCBOVUxMKSkKIAkJCQlwb3B0LT50b3B0LnBhZ2VyID0gMTsKIAkJCWVsc2UK IAkJCQlwb3B0LT50b3B0LnBhZ2VyID0gMDsKQEAgLTI3NzgsNyArMjc3OCw3 IEBAIGRvX3BzZXQoY29uc3QgY2hhciAqcGFyYW0sIGNvbnN0IGNoYXIgKnZh bHVlLCBwcmludFF1ZXJ5T3B0ICpwb3B0LCBib29sIHF1aWV0KQogCWVsc2Ug aWYgKHN0cmNtcChwYXJhbSwgImZvb3RlciIpID09IDApCiAJewogCQlpZiAo dmFsdWUpCi0JCQlwb3B0LT50b3B0LmRlZmF1bHRfZm9vdGVyID0gUGFyc2VW YXJpYWJsZUJvb2wodmFsdWUsIHBhcmFtKTsKKwkJCXBvcHQtPnRvcHQuZGVm YXVsdF9mb290ZXIgPSBQYXJzZVZhcmlhYmxlQm9vbCh2YWx1ZSwgcGFyYW0s IE5VTEwpOwogCQllbHNlCiAJCQlwb3B0LT50b3B0LmRlZmF1bHRfZm9vdGVy ID0gIXBvcHQtPnRvcHQuZGVmYXVsdF9mb290ZXI7CiAJfQpkaWZmIC0tZ2l0 IGEvc3JjL2Jpbi9wc3FsL3N0YXJ0dXAuYyBiL3NyYy9iaW4vcHNxbC9zdGFy dHVwLmMKaW5kZXggN2NlMDVmYi4uYmEwOTRmMCAxMDA2NDQKLS0tIGEvc3Jj L2Jpbi9wc3FsL3N0YXJ0dXAuYworKysgYi9zcmMvYmluL3BzcWwvc3RhcnR1 cC5jCkBAIC03ODYsNDMgKzc4Niw2OCBAQCBzaG93VmVyc2lvbih2b2lkKQog ICogVGhpcyBpc24ndCBhbiBhbWF6aW5nbHkgZ29vZCBwbGFjZSBmb3IgdGhl bSwgYnV0IG5laXRoZXIgaXMgYW55d2hlcmUgZWxzZS4KICAqLwogCi1zdGF0 aWMgdm9pZAorLyoKKyAqIEhvb2sgdG8gc2V0IGFuIGludGVybmFsIGZsYWcg ZnJvbSBhIHVzZXItc3VwcGxpZWQgc3RyaW5nIHZhbHVlLgorICogSWYgdGhl IHN5bnRheCBpcyBjb3JyZWN0LCBhZmZlY3QgKmZsYWcgYW5kIHJldHVybiB0 cnVlLgorICogT3RoZXJ3aXNlLCBrZWVwICpmbGFnIHVudG91Y2hlZCBhbmQg cmV0dXJuIGZhbHNlLgorICovCitzdGF0aWMgYm9vbAorZ2VuZXJpY19ib29s ZWFuX2hvb2soY29uc3QgY2hhciAqbmV3dmFsLCBjb25zdCBjaGFyKiB2YXJu YW1lLCBib29sICpmbGFnKQoreworCWJvb2wgaXN2YWxpZDsKKwlib29sIHZh bCA9IFBhcnNlVmFyaWFibGVCb29sKG5ld3ZhbCwgdmFybmFtZSwgJmlzdmFs aWQpOworCWlmIChpc3ZhbGlkKQorCQkqZmxhZyA9IHZhbDsKKwlyZXR1cm4g aXN2YWxpZDsKK30KKworc3RhdGljIGJvb2wKIGF1dG9jb21taXRfaG9vayhj b25zdCBjaGFyICpuZXd2YWwpCiB7Ci0JcHNldC5hdXRvY29tbWl0ID0gUGFy c2VWYXJpYWJsZUJvb2wobmV3dmFsLCAiQVVUT0NPTU1JVCIpOworCXJldHVy biBnZW5lcmljX2Jvb2xlYW5faG9vayhuZXd2YWwsICJBVVRPQ09NTUlUIiwg JnBzZXQuYXV0b2NvbW1pdCk7CiB9CiAKLXN0YXRpYyB2b2lkCitzdGF0aWMg Ym9vbAogb25fZXJyb3Jfc3RvcF9ob29rKGNvbnN0IGNoYXIgKm5ld3ZhbCkK IHsKLQlwc2V0Lm9uX2Vycm9yX3N0b3AgPSBQYXJzZVZhcmlhYmxlQm9vbChu ZXd2YWwsICJPTl9FUlJPUl9TVE9QIik7CisJcmV0dXJuIGdlbmVyaWNfYm9v bGVhbl9ob29rKG5ld3ZhbCwgIk9OX0VSUk9SX1NUT1AiLCAmcHNldC5vbl9l cnJvcl9zdG9wKTsKIH0KIAotc3RhdGljIHZvaWQKK3N0YXRpYyBib29sCiBx dWlldF9ob29rKGNvbnN0IGNoYXIgKm5ld3ZhbCkKIHsKLQlwc2V0LnF1aWV0 ID0gUGFyc2VWYXJpYWJsZUJvb2wobmV3dmFsLCAiUVVJRVQiKTsKKwlyZXR1 cm4gZ2VuZXJpY19ib29sZWFuX2hvb2sobmV3dmFsLCAiUVVJRVQiLCAmcHNl dC5xdWlldCk7CiB9CiAKLXN0YXRpYyB2b2lkCitzdGF0aWMgYm9vbAogc2lu Z2xlbGluZV9ob29rKGNvbnN0IGNoYXIgKm5ld3ZhbCkKIHsKLQlwc2V0LnNp bmdsZWxpbmUgPSBQYXJzZVZhcmlhYmxlQm9vbChuZXd2YWwsICJTSU5HTEVM SU5FIik7CisJcmV0dXJuIGdlbmVyaWNfYm9vbGVhbl9ob29rKG5ld3ZhbCwg IlNJTkdMRUxJTkUiLCAmcHNldC5zaW5nbGVsaW5lKTsKIH0KIAotc3RhdGlj IHZvaWQKK3N0YXRpYyBib29sCiBzaW5nbGVzdGVwX2hvb2soY29uc3QgY2hh ciAqbmV3dmFsKQogewotCXBzZXQuc2luZ2xlc3RlcCA9IFBhcnNlVmFyaWFi bGVCb29sKG5ld3ZhbCwgIlNJTkdMRVNURVAiKTsKKwlyZXR1cm4gZ2VuZXJp Y19ib29sZWFuX2hvb2sobmV3dmFsLCAiU0lOR0xFU1RFUCIsICZwc2V0LnNp bmdsZXN0ZXApOwogfQogCi1zdGF0aWMgdm9pZAorc3RhdGljIGJvb2wKIGZl dGNoX2NvdW50X2hvb2soY29uc3QgY2hhciAqbmV3dmFsKQogewotCXBzZXQu ZmV0Y2hfY291bnQgPSBQYXJzZVZhcmlhYmxlTnVtKG5ld3ZhbCwgLTEsIC0x LCBmYWxzZSk7CisJYm9vbCB2YWxpZDsKKwlpbnQgdmFsdWUgPSBQYXJzZUNo ZWNrVmFyaWFibGVOdW0obmV3dmFsLCAtMSwgJnZhbGlkKTsKKwlpZiAodmFs aWQpCisJCXBzZXQuZmV0Y2hfY291bnQgPSB2YWx1ZTsKKwllbHNlCisJewor CQlwc3FsX2Vycm9yKCJpbnZhbGlkIHZhbHVlIFwiJXNcIiBmb3IgXCIlc1wi XG4iLAorCQkJCSAgIG5ld3ZhbCwgIkZFVENIX0NPVU5UIik7CisJCXJldHVy biBmYWxzZTsKKwl9CisJcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyB2b2lk CitzdGF0aWMgYm9vbAogZWNob19ob29rKGNvbnN0IGNoYXIgKm5ld3ZhbCkK IHsKIAlpZiAobmV3dmFsID09IE5VTEwpCkBAIC04MzcsMzkgKzg2Miw1MiBA QCBlY2hvX2hvb2soY29uc3QgY2hhciAqbmV3dmFsKQogCQlwc2V0LmVjaG8g PSBQU1FMX0VDSE9fTk9ORTsKIAllbHNlCiAJewotCQlwc3FsX2Vycm9yKCJ1 bnJlY29nbml6ZWQgdmFsdWUgXCIlc1wiIGZvciBcIiVzXCI7IGFzc3VtaW5n IFwiJXNcIlxuIiwKLQkJCQkgICBuZXd2YWwsICJFQ0hPIiwgIm5vbmUiKTsK LQkJcHNldC5lY2hvID0gUFNRTF9FQ0hPX05PTkU7CisJCXBzcWxfZXJyb3Io InVucmVjb2duaXplZCB2YWx1ZSBcIiVzXCIgZm9yIFwiJXNcIlxuIiwKKwkJ CQkgICBuZXd2YWwsICJFQ0hPIik7CisJCXJldHVybiBmYWxzZTsKIAl9CisJ cmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyB2b2lkCitzdGF0aWMgYm9vbAog ZWNob19oaWRkZW5faG9vayhjb25zdCBjaGFyICpuZXd2YWwpCiB7CiAJaWYg KG5ld3ZhbCA9PSBOVUxMKQogCQlwc2V0LmVjaG9faGlkZGVuID0gUFNRTF9F Q0hPX0hJRERFTl9PRkY7CiAJZWxzZSBpZiAocGdfc3RyY2FzZWNtcChuZXd2 YWwsICJub2V4ZWMiKSA9PSAwKQogCQlwc2V0LmVjaG9faGlkZGVuID0gUFNR TF9FQ0hPX0hJRERFTl9OT0VYRUM7Ci0JZWxzZSBpZiAoUGFyc2VWYXJpYWJs ZUJvb2wobmV3dmFsLCAiRUNIT19ISURERU4iKSkKLQkJcHNldC5lY2hvX2hp ZGRlbiA9IFBTUUxfRUNIT19ISURERU5fT047Ci0JZWxzZQkvKiBQYXJzZVZh cmlhYmxlQm9vbCBwcmludGVkIG1zZyBpZiBuZWVkZWQgKi8KLQkJcHNldC5l Y2hvX2hpZGRlbiA9IFBTUUxfRUNIT19ISURERU5fT0ZGOworCWVsc2UKKwl7 CisJCWJvb2wgaXN2YWxpZDsKKwkJYm9vbCB2YWwgPSBQYXJzZVZhcmlhYmxl Qm9vbChuZXd2YWwsICJFQ0hPX0hJRERFTiIsICZpc3ZhbGlkKTsKKwkJaWYg KCFpc3ZhbGlkKQorCQkJcmV0dXJuIGZhbHNlOyAvKiBQYXJzZVZhcmlhYmxl Qm9vbCBwcmludGVkIG1zZyAqLworCQlwc2V0LmVjaG9faGlkZGVuID0gdmFs ID8gUFNRTF9FQ0hPX0hJRERFTl9PTiA6IFBTUUxfRUNIT19ISURERU5fT0ZG OworCX0KKwlyZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIHZvaWQKK3N0YXRp YyBib29sCiBvbl9lcnJvcl9yb2xsYmFja19ob29rKGNvbnN0IGNoYXIgKm5l d3ZhbCkKIHsKIAlpZiAobmV3dmFsID09IE5VTEwpCiAJCXBzZXQub25fZXJy b3Jfcm9sbGJhY2sgPSBQU1FMX0VSUk9SX1JPTExCQUNLX09GRjsKIAllbHNl IGlmIChwZ19zdHJjYXNlY21wKG5ld3ZhbCwgImludGVyYWN0aXZlIikgPT0g MCkKIAkJcHNldC5vbl9lcnJvcl9yb2xsYmFjayA9IFBTUUxfRVJST1JfUk9M TEJBQ0tfSU5URVJBQ1RJVkU7Ci0JZWxzZSBpZiAoUGFyc2VWYXJpYWJsZUJv b2wobmV3dmFsLCAiT05fRVJST1JfUk9MTEJBQ0siKSkKLQkJcHNldC5vbl9l cnJvcl9yb2xsYmFjayA9IFBTUUxfRVJST1JfUk9MTEJBQ0tfT047Ci0JZWxz ZQkvKiBQYXJzZVZhcmlhYmxlQm9vbCBwcmludGVkIG1zZyBpZiBuZWVkZWQg Ki8KLQkJcHNldC5vbl9lcnJvcl9yb2xsYmFjayA9IFBTUUxfRVJST1JfUk9M TEJBQ0tfT0ZGOworCWVsc2UKKwl7CisJCWJvb2wgaXN2YWxpZDsKKwkJYm9v bCB2YWwgPSBQYXJzZVZhcmlhYmxlQm9vbChuZXd2YWwsICJPTl9FUlJPUl9S T0xMQkFDSyIsICZpc3ZhbGlkKTsKKwkJaWYgKGlzdmFsaWQpCisJCQlwc2V0 Lm9uX2Vycm9yX3JvbGxiYWNrID0gdmFsID8gUFNRTF9FUlJPUl9ST0xMQkFD S19PTiA6IFBTUUxfRVJST1JfUk9MTEJBQ0tfT0ZGOworCQllbHNlCisJCQkv KiBQYXJzZVZhcmlhYmxlQm9vbCBwcmludGVkIG1zZyBpZiBuZWVkZWQgKi8K KwkJCXJldHVybiBmYWxzZTsKKwl9CisJcmV0dXJuIHRydWU7CiB9CiAKLXN0 YXRpYyB2b2lkCitzdGF0aWMgYm9vbAogY29tcF9rZXl3b3JkX2Nhc2VfaG9v ayhjb25zdCBjaGFyICpuZXd2YWwpCiB7CiAJaWYgKG5ld3ZhbCA9PSBOVUxM KQpAQCAtODg0LDEzICs5MjIsMTQgQEAgY29tcF9rZXl3b3JkX2Nhc2VfaG9v ayhjb25zdCBjaGFyICpuZXd2YWwpCiAJCXBzZXQuY29tcF9jYXNlID0gUFNR TF9DT01QX0NBU0VfTE9XRVI7CiAJZWxzZQogCXsKLQkJcHNxbF9lcnJvcigi dW5yZWNvZ25pemVkIHZhbHVlIFwiJXNcIiBmb3IgXCIlc1wiOyBhc3N1bWlu ZyBcIiVzXCJcbiIsCi0JCQkJICAgbmV3dmFsLCAiQ09NUF9LRVlXT1JEX0NB U0UiLCAicHJlc2VydmUtdXBwZXIiKTsKLQkJcHNldC5jb21wX2Nhc2UgPSBQ U1FMX0NPTVBfQ0FTRV9QUkVTRVJWRV9VUFBFUjsKKwkJcHNxbF9lcnJvcigi dW5yZWNvZ25pemVkIHZhbHVlIFwiJXNcIiBmb3IgXCIlc1wiXG4iLAorCQkJ CSAgIG5ld3ZhbCwgIkNPTVBfS0VZV09SRF9DQVNFIik7CisJCXJldHVybiBm YWxzZTsKIAl9CisJcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyB2b2lkCitz dGF0aWMgYm9vbAogaGlzdGNvbnRyb2xfaG9vayhjb25zdCBjaGFyICpuZXd2 YWwpCiB7CiAJaWYgKG5ld3ZhbCA9PSBOVUxMKQpAQCAtOTA1LDMxICs5NDQs MzUgQEAgaGlzdGNvbnRyb2xfaG9vayhjb25zdCBjaGFyICpuZXd2YWwpCiAJ CXBzZXQuaGlzdGNvbnRyb2wgPSBoY3RsX25vbmU7CiAJZWxzZQogCXsKLQkJ cHNxbF9lcnJvcigidW5yZWNvZ25pemVkIHZhbHVlIFwiJXNcIiBmb3IgXCIl c1wiOyBhc3N1bWluZyBcIiVzXCJcbiIsCi0JCQkJICAgbmV3dmFsLCAiSElT VENPTlRST0wiLCAibm9uZSIpOwotCQlwc2V0Lmhpc3Rjb250cm9sID0gaGN0 bF9ub25lOworCQlwc3FsX2Vycm9yKCJ1bnJlY29nbml6ZWQgdmFsdWUgXCIl c1wiIGZvciBcIiVzXCJcbiIsCisJCQkJICAgbmV3dmFsLCAiSElTVENPTlRS T0wiKTsKKwkJcmV0dXJuIGZhbHNlOwogCX0KKwlyZXR1cm4gdHJ1ZTsKIH0K IAotc3RhdGljIHZvaWQKK3N0YXRpYyBib29sCiBwcm9tcHQxX2hvb2soY29u c3QgY2hhciAqbmV3dmFsKQogewogCXBzZXQucHJvbXB0MSA9IG5ld3ZhbCA/ IG5ld3ZhbCA6ICIiOworCXJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgdm9p ZAorc3RhdGljIGJvb2wKIHByb21wdDJfaG9vayhjb25zdCBjaGFyICpuZXd2 YWwpCiB7CiAJcHNldC5wcm9tcHQyID0gbmV3dmFsID8gbmV3dmFsIDogIiI7 CisJcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyB2b2lkCitzdGF0aWMgYm9v bAogcHJvbXB0M19ob29rKGNvbnN0IGNoYXIgKm5ld3ZhbCkKIHsKIAlwc2V0 LnByb21wdDMgPSBuZXd2YWwgPyBuZXd2YWwgOiAiIjsKKwlyZXR1cm4gdHJ1 ZTsKIH0KIAotc3RhdGljIHZvaWQKK3N0YXRpYyBib29sCiB2ZXJib3NpdHlf aG9vayhjb25zdCBjaGFyICpuZXd2YWwpCiB7CiAJaWYgKG5ld3ZhbCA9PSBO VUxMKQpAQCAtOTQyLDE2ICs5ODUsMTcgQEAgdmVyYm9zaXR5X2hvb2soY29u c3QgY2hhciAqbmV3dmFsKQogCQlwc2V0LnZlcmJvc2l0eSA9IFBRRVJST1JT X1ZFUkJPU0U7CiAJZWxzZQogCXsKLQkJcHNxbF9lcnJvcigidW5yZWNvZ25p emVkIHZhbHVlIFwiJXNcIiBmb3IgXCIlc1wiOyBhc3N1bWluZyBcIiVzXCJc biIsCi0JCQkJICAgbmV3dmFsLCAiVkVSQk9TSVRZIiwgImRlZmF1bHQiKTsK LQkJcHNldC52ZXJib3NpdHkgPSBQUUVSUk9SU19ERUZBVUxUOworCQlwc3Fs X2Vycm9yKCJ1bnJlY29nbml6ZWQgdmFsdWUgXCIlc1wiIGZvciBcIiVzXCJc biIsCisJCQkJICAgbmV3dmFsLCAiVkVSQk9TSVRZIik7CisJCXJldHVybiBm YWxzZTsKIAl9CiAKIAlpZiAocHNldC5kYikKIAkJUFFzZXRFcnJvclZlcmJv c2l0eShwc2V0LmRiLCBwc2V0LnZlcmJvc2l0eSk7CisJcmV0dXJuIHRydWU7 CiB9CiAKLXN0YXRpYyB2b2lkCitzdGF0aWMgYm9vbAogc2hvd19jb250ZXh0 X2hvb2soY29uc3QgY2hhciAqbmV3dmFsKQogewogCWlmIChuZXd2YWwgPT0g TlVMTCkKQEAgLTk2NCwxMyArMTAwOCwxNCBAQCBzaG93X2NvbnRleHRfaG9v ayhjb25zdCBjaGFyICpuZXd2YWwpCiAJCXBzZXQuc2hvd19jb250ZXh0ID0g UFFTSE9XX0NPTlRFWFRfQUxXQVlTOwogCWVsc2UKIAl7Ci0JCXBzcWxfZXJy b3IoInVucmVjb2duaXplZCB2YWx1ZSBcIiVzXCIgZm9yIFwiJXNcIjsgYXNz dW1pbmcgXCIlc1wiXG4iLAotCQkJCSAgIG5ld3ZhbCwgIlNIT1dfQ09OVEVY VCIsICJlcnJvcnMiKTsKLQkJcHNldC5zaG93X2NvbnRleHQgPSBQUVNIT1df Q09OVEVYVF9FUlJPUlM7CisJCXBzcWxfZXJyb3IoInVucmVjb2duaXplZCB2 YWx1ZSBcIiVzXCIgZm9yIFwiJXNcIlxuIiwKKwkJCQkgICBuZXd2YWwsICJT SE9XX0NPTlRFWFQiKTsKKwkJcmV0dXJuIGZhbHNlOwogCX0KIAogCWlmIChw c2V0LmRiKQogCQlQUXNldEVycm9yQ29udGV4dFZpc2liaWxpdHkocHNldC5k YiwgcHNldC5zaG93X2NvbnRleHQpOworCXJldHVybiB0cnVlOwogfQogCiAK ZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC92YXJpYWJsZXMuYyBiL3NyYy9i aW4vcHNxbC92YXJpYWJsZXMuYwppbmRleCBmNDNmNDE4Li44NTMyYWY0IDEw MDY0NAotLS0gYS9zcmMvYmluL3BzcWwvdmFyaWFibGVzLmMKKysrIGIvc3Jj L2Jpbi9wc3FsL3ZhcmlhYmxlcy5jCkBAIC04NiwyNCArODYsMjggQEAgR2V0 VmFyaWFibGUoVmFyaWFibGVTcGFjZSBzcGFjZSwgY29uc3QgY2hhciAqbmFt ZSkKICAqCiAgKiAibmFtZSIgaXMgdGhlIG5hbWUgb2YgdGhlIHZhcmlhYmxl IHdlJ3JlIGFzc2lnbmluZyB0bywgdG8gdXNlIGluIGVycm9yCiAgKiByZXBv cnQgaWYgYW55LiAgUGFzcyBuYW1lID09IE5VTEwgdG8gc3VwcHJlc3MgdGhl IGVycm9yIHJlcG9ydC4KKyAqCisgKiAiKnZhbGlkIiByZXBvcnRzIHdoZXRo ZXIgInZhbHVlIiB3YXMgc3ludGFjdGljYWxseSB2YWxpZCwgdW5sZXNzIHZh bGlkID09IE5VTEwKICAqLwogYm9vbAotUGFyc2VWYXJpYWJsZUJvb2woY29u c3QgY2hhciAqdmFsdWUsIGNvbnN0IGNoYXIgKm5hbWUpCitQYXJzZVZhcmlh YmxlQm9vbChjb25zdCBjaGFyICp2YWx1ZSwgY29uc3QgY2hhciAqbmFtZSwg Ym9vbCAqdmFsaWQpCiB7CiAJc2l6ZV90CQlsZW47CiAKKwlpZiAodmFsaWQp CisJCSp2YWxpZCA9IHRydWU7CiAJaWYgKHZhbHVlID09IE5VTEwpCiAJCXJl dHVybiBmYWxzZTsJCQkvKiBub3Qgc2V0IC0+IGFzc3VtZSAib2ZmIiAqLwog CiAJbGVuID0gc3RybGVuKHZhbHVlKTsKIAotCWlmIChwZ19zdHJuY2FzZWNt cCh2YWx1ZSwgInRydWUiLCBsZW4pID09IDApCisJaWYgKGxlbiA+IDAgJiYg cGdfc3RybmNhc2VjbXAodmFsdWUsICJ0cnVlIiwgbGVuKSA9PSAwKQogCQly ZXR1cm4gdHJ1ZTsKLQllbHNlIGlmIChwZ19zdHJuY2FzZWNtcCh2YWx1ZSwg ImZhbHNlIiwgbGVuKSA9PSAwKQorCWVsc2UgaWYgKGxlbiA+IDAgJiYgcGdf c3RybmNhc2VjbXAodmFsdWUsICJmYWxzZSIsIGxlbikgPT0gMCkKIAkJcmV0 dXJuIGZhbHNlOwotCWVsc2UgaWYgKHBnX3N0cm5jYXNlY21wKHZhbHVlLCAi eWVzIiwgbGVuKSA9PSAwKQorCWVsc2UgaWYgKGxlbiA+IDAgJiYgcGdfc3Ry bmNhc2VjbXAodmFsdWUsICJ5ZXMiLCBsZW4pID09IDApCiAJCXJldHVybiB0 cnVlOwotCWVsc2UgaWYgKHBnX3N0cm5jYXNlY21wKHZhbHVlLCAibm8iLCBs ZW4pID09IDApCisJZWxzZSBpZiAobGVuID4gMCAmJiBwZ19zdHJuY2FzZWNt cCh2YWx1ZSwgIm5vIiwgbGVuKSA9PSAwKQogCQlyZXR1cm4gZmFsc2U7CiAJ LyogJ28nIGlzIG5vdCB1bmlxdWUgZW5vdWdoICovCiAJZWxzZSBpZiAocGdf c3RybmNhc2VjbXAodmFsdWUsICJvbiIsIChsZW4gPiAyID8gbGVuIDogMikp ID09IDApCkBAIC0xMTYsMTAgKzEyMCwxNiBAQCBQYXJzZVZhcmlhYmxlQm9v bChjb25zdCBjaGFyICp2YWx1ZSwgY29uc3QgY2hhciAqbmFtZSkKIAkJcmV0 dXJuIGZhbHNlOwogCWVsc2UKIAl7Ci0JCS8qIE5VTEwgaXMgdHJlYXRlZCBh cyBmYWxzZSwgc28gYSBub24tbWF0Y2hpbmcgdmFsdWUgaXMgJ3RydWUnICov CisJCS8qCisJCSAqIE5VTEwgaXMgdHJlYXRlZCBhcyBmYWxzZSwgc28gYSBu b24tbWF0Y2hpbmcgdmFsdWUgaXMgJ3RydWUnLgorCQkgKiBBIGNhbGxlciB0 aGF0IGNhcmVzIGFib3V0IHN5bnRhY3RpYyBjb25mb3JtYW5jZSBzaG91bGQK KwkJICogY2hlY2sgKnZhbGlkIHRvIGtub3cgd2hldGhlciB0aGUgdmFsdWUg d2FzIHJlY29nbml6ZWQuCisJCSAqLwogCQlpZiAobmFtZSkKLQkJCXBzcWxf ZXJyb3IoInVucmVjb2duaXplZCB2YWx1ZSBcIiVzXCIgZm9yIFwiJXNcIjsg YXNzdW1pbmcgXCIlc1wiXG4iLAotCQkJCQkgICB2YWx1ZSwgbmFtZSwgIm9u Iik7CisJCQlwc3FsX2Vycm9yKCJ1bnJlY29nbml6ZWQgdmFsdWUgXCIlc1wi IGZvciBcIiVzXCI6IGJvb2xlYW4gZXhwZWN0ZWRcbiIsCisJCQkJCSAgIHZh bHVlLCBuYW1lKTsKKwkJaWYgKHZhbGlkKQorCQkJKnZhbGlkID0gZmFsc2U7 CiAJCXJldHVybiB0cnVlOwogCX0KIH0KQEAgLTE1NCw2ICsxNjQsMzUgQEAg UGFyc2VWYXJpYWJsZU51bShjb25zdCBjaGFyICp2YWwsCiAJcmV0dXJuIHJl c3VsdDsKIH0KIAorLyoKKyAqIFJlYWQgbnVtZXJpYyB2YXJpYWJsZSwgb3Ig ZGVmYXVsdHZhbCBpZiBpdCBpcyBub3Qgc2V0LgorICogVHJhaWxpbmcgY29u dGVudHMgYXJlIG5vdCBhbGxvd2VkLgorICogInZhbGlkIiBwb2ludHMgdG8g YSBib29sIHJlcG9ydGluZyB3aGV0aGVyIHRoZSB2YWx1ZSB3YXMgdmFsaWQu CisgKi8KK2ludAorUGFyc2VDaGVja1ZhcmlhYmxlTnVtKGNvbnN0IGNoYXIg KnZhbCwKKwkJCQkJICBpbnQgZGVmYXVsdHZhbCwKKwkJCQkJICBib29sICp2 YWxpZCkKK3sKKwlpbnQJCXJlc3VsdDsKKworCWlmICghdmFsKQorCXsKKwkJ KnZhbGlkID0gdHJ1ZTsKKwkJcmVzdWx0ID0gZGVmYXVsdHZhbDsKKwl9CisJ ZWxzZQorCXsKKwkJY2hhcgkgICAqZW5kOworCisJCWVycm5vID0gMDsKKwkJ cmVzdWx0ID0gc3RydG9sKHZhbCwgJmVuZCwgMCk7CisJCSp2YWxpZCA9ICh2 YWxbMF0gIT0gJ1wwJyAmJiBlcnJubyA9PSAwICYmICplbmQgPT0gJ1wwJyk7 CisJfQorCisJcmV0dXJuIHJlc3VsdDsKK30KKwogaW50CiBHZXRWYXJpYWJs ZU51bShWYXJpYWJsZVNwYWNlIHNwYWNlLAogCQkJICAgY29uc3QgY2hhciAq bmFtZSwKQEAgLTIwNSwxMyArMjQ0LDI2IEBAIFNldFZhcmlhYmxlKFZhcmlh YmxlU3BhY2Ugc3BhY2UsIGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIg KnZhbHVlKQogCXsKIAkJaWYgKHN0cmNtcChjdXJyZW50LT5uYW1lLCBuYW1l KSA9PSAwKQogCQl7Ci0JCQkvKiBmb3VuZCBlbnRyeSwgc28gdXBkYXRlICov Ci0JCQlpZiAoY3VycmVudC0+dmFsdWUpCi0JCQkJZnJlZShjdXJyZW50LT52 YWx1ZSk7Ci0JCQljdXJyZW50LT52YWx1ZSA9IHBnX3N0cmR1cCh2YWx1ZSk7 Ci0JCQlpZiAoY3VycmVudC0+YXNzaWduX2hvb2spCi0JCQkJKCpjdXJyZW50 LT5hc3NpZ25faG9vaykgKGN1cnJlbnQtPnZhbHVlKTsKLQkJCXJldHVybiB0 cnVlOworCQkJLyoKKwkJCSAqIEZvdW5kIGVudHJ5LCBzbyB1cGRhdGUsIHVu bGVzcyBhIGhvb2sgcmV0dXJucyBmYWxzZS4KKwkJCSAqIFRoZSBob29rIG5l ZWRzIHRoZSB2YWx1ZSBpbiBhIGJ1ZmZlciB3aXRoIHRoZSBzYW1lIGxpZmVz cGFuCisJCQkgKiBhcyB0aGUgdmFyaWFibGUsIHNvIGFsbG9jYXRlIGl0IHJp Z2h0IGF3YXksIGV2ZW4gaWYgaXQgbmVlZHMKKwkJCSAqIHRvIGJlIGZyZWVk IGp1c3QgYWZ0ZXIgd2hlbiB0aGUgaG9vayByZXR1cm5zIGZhbHNlLgorCQkJ ICovCisJCQljaGFyICpuZXdfdmFsdWUgPSBwZ19zdHJkdXAodmFsdWUpOwor CisJCQlib29sIGNvbmZpcm1lZCA9IGN1cnJlbnQtPmFzc2lnbl9ob29rID8K KwkJCQkJCQkoKmN1cnJlbnQtPmFzc2lnbl9ob29rKSAobmV3X3ZhbHVlKSA6 IHRydWU7CisKKwkJCWlmIChjb25maXJtZWQpCisJCQl7CisJCQkJcGdfZnJl ZShjdXJyZW50LT52YWx1ZSk7CisJCQkJY3VycmVudC0+dmFsdWUgPSBuZXdf dmFsdWU7CisJCQl9CisJCQllbHNlCisJCQkJcGdfZnJlZShuZXdfdmFsdWUp OyAvKiBhbmQgY3VycmVudC0+dmFsdWUgaXMgbGVmdCB1bmNoYW5nZWQgKi8K KworCQkJcmV0dXJuIGNvbmZpcm1lZDsKIAkJfQogCX0KIApAQCAtMjQ4LDcg KzMwMCw3IEBAIFNldFZhcmlhYmxlQXNzaWduSG9vayhWYXJpYWJsZVNwYWNl IHNwYWNlLCBjb25zdCBjaGFyICpuYW1lLCBWYXJpYWJsZUFzc2lnbkhvb2sK IAkJewogCQkJLyogZm91bmQgZW50cnksIHNvIHVwZGF0ZSAqLwogCQkJY3Vy cmVudC0+YXNzaWduX2hvb2sgPSBob29rOwotCQkJKCpob29rKSAoY3VycmVu dC0+dmFsdWUpOworCQkJKCpob29rKSAoY3VycmVudC0+dmFsdWUpOyAvKiBp Z25vcmUgcmV0dXJuIHZhbHVlICovCiAJCQlyZXR1cm4gdHJ1ZTsKIAkJfQog CX0KQEAgLTI2MCw3ICszMTIsNyBAQCBTZXRWYXJpYWJsZUFzc2lnbkhvb2so VmFyaWFibGVTcGFjZSBzcGFjZSwgY29uc3QgY2hhciAqbmFtZSwgVmFyaWFi bGVBc3NpZ25Ib29rCiAJY3VycmVudC0+YXNzaWduX2hvb2sgPSBob29rOwog CWN1cnJlbnQtPm5leHQgPSBOVUxMOwogCXByZXZpb3VzLT5uZXh0ID0gY3Vy cmVudDsKLQkoKmhvb2spIChOVUxMKTsKKwkodm9pZCkoKmhvb2spIChOVUxM KTsJCS8qIGlnbm9yZSByZXR1cm4gdmFsdWUgKi8KIAlyZXR1cm4gdHJ1ZTsK IH0KIApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL3ZhcmlhYmxlcy5oIGIv c3JjL2Jpbi9wc3FsL3ZhcmlhYmxlcy5oCmluZGV4IGQ3YTA1YTEuLjM4Mzk2 YmEgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC92YXJpYWJsZXMuaAorKysg Yi9zcmMvYmluL3BzcWwvdmFyaWFibGVzLmgKQEAgLTIwLDcgKzIwLDcgQEAK ICAqIE5vdGU6IGlmIHZhbHVlID09IE5VTEwgdGhlbiB0aGUgdmFyaWFibGUg aXMgbG9naWNhbGx5IHVuc2V0LCBidXQgd2UgYXJlCiAgKiBrZWVwaW5nIHRo ZSBzdHJ1Y3QgYXJvdW5kIHNvIGFzIG5vdCB0byBmb3JnZXQgYWJvdXQgaXRz IGhvb2sgZnVuY3Rpb24uCiAgKi8KLXR5cGVkZWYgdm9pZCAoKlZhcmlhYmxl QXNzaWduSG9vaykgKGNvbnN0IGNoYXIgKm5ld3ZhbCk7Cit0eXBlZGVmIGJv b2wgKCpWYXJpYWJsZUFzc2lnbkhvb2spIChjb25zdCBjaGFyICpuZXd2YWwp OwogCiBzdHJ1Y3QgX3ZhcmlhYmxlCiB7CkBAIC0zNSwxMSArMzUsMTQgQEAg dHlwZWRlZiBzdHJ1Y3QgX3ZhcmlhYmxlICpWYXJpYWJsZVNwYWNlOwogVmFy aWFibGVTcGFjZSBDcmVhdGVWYXJpYWJsZVNwYWNlKHZvaWQpOwogY29uc3Qg Y2hhciAqR2V0VmFyaWFibGUoVmFyaWFibGVTcGFjZSBzcGFjZSwgY29uc3Qg Y2hhciAqbmFtZSk7CiAKLWJvb2wJCVBhcnNlVmFyaWFibGVCb29sKGNvbnN0 IGNoYXIgKnZhbHVlLCBjb25zdCBjaGFyICpuYW1lKTsKK2Jvb2wJCVBhcnNl VmFyaWFibGVCb29sKGNvbnN0IGNoYXIgKnZhbHVlLCBjb25zdCBjaGFyICpu YW1lLCBib29sICp2YWxpZCk7CiBpbnQgUGFyc2VWYXJpYWJsZU51bShjb25z dCBjaGFyICp2YWwsCiAJCQkJIGludCBkZWZhdWx0dmFsLAogCQkJCSBpbnQg ZmF1bHR2YWwsCiAJCQkJIGJvb2wgYWxsb3d0cmFpbCk7CitpbnQgUGFyc2VD aGVja1ZhcmlhYmxlTnVtKGNvbnN0IGNoYXIgKnZhbCwKKwkJCQkJCSAgaW50 IGRlZmF1bHR2YWwsCisJCQkJCQkgIGJvb2wgKnZhbGlkKTsKIGludCBHZXRW YXJpYWJsZU51bShWYXJpYWJsZVNwYWNlIHNwYWNlLAogCQkJICAgY29uc3Qg Y2hhciAqbmFtZSwKIAkJCSAgIGludCBkZWZhdWx0dmFsLAo= ------------=_1479735882-44826-0 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 ------------=_1479735882-44826-0--