Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1c6caB-0007OX-Ui for pgsql-hackers@arkaria.postgresql.org; Tue, 15 Nov 2016 12:11:24 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84_2) (envelope-from ) id 1c6caB-0002zr-Fn for pgsql-hackers@arkaria.postgresql.org; Tue, 15 Nov 2016 12:11:23 +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 1c6cYl-0001LI-Ej for pgsql-hackers@postgresql.org; Tue, 15 Nov 2016 12:09:55 +0000 Received: from ks311736.kimsufi.com ([188.165.209.130]) by magus.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1c6cYh-00067a-EU for pgsql-hackers@postgresql.org; Tue, 15 Nov 2016 12:09:54 +0000 Received: from genius-map.net (verite.pro [195.154.189.246]) by ks311736.kimsufi.com (Postfix) with ESMTP id 4CFDBC03BB; Tue, 15 Nov 2016 13:37:57 +0100 (CET) Received: by genius-map.net (Postfix, from userid 1001) id 3E1F338A28B6; Tue, 15 Nov 2016 13:09:47 +0100 (CET) MIME-Version: 1.0 Subject: Re: Improvements in psql hooks for variables From: "Daniel Verite" To: "Rahila Syed" Cc: "Ashutosh Bapat" ,"pgsql-hackers" In-Reply-To: Date: Tue, 15 Nov 2016 13:09:45 +0100 Message-Id: X-Mailer: Manitou v1.6.0 Content-type: multipart/mixed; boundary="----------=_1479211787-32230-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... ------------=_1479211787-32230-0 Content-Type: text/plain; charset="iso-8859-15" Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Hi, I'm attaching v3 of the patch with error reporting for FETCH_COUNT as mentioned upthread, and rebased on the most recent master. > I was suggesting change on the lines of extending generic_boolean_hook to > include enum(part in enum_hooks which calls ParseVariableBool) and > integer parsing as well. Well, generic_boolean_hook() is meant to change this, for instance: static void on_error_stop_hook(const char *newval) { pset.on_error_stop =3D ParseVariableBool(newval, "ON_ERROR_STOP"); } into that: static bool on_error_stop_hook(const char *newval) { return generic_boolean_hook(newval, "ON_ERROR_STOP", &pset.on_error_stop); } with the goal that the assignment does not occur if "newval" is bogus. The change is really minimal. When we're dealing with enum-or-bool variables, such as for instance ECHO_HIDDEN, the patch replaces this: static void echo_hidden_hook(const char *newval) { if (newval =3D=3D NULL) pset.echo_hidden =3D PSQL_ECHO_HIDDEN_OFF; else if (pg_strcasecmp(newval, "noexec") =3D=3D 0) pset.echo_hidden =3D PSQL_ECHO_HIDDEN_NOEXEC; else if (ParseVariableBool(newval, "ECHO_HIDDEN")) pset.echo_hidden =3D PSQL_ECHO_HIDDEN_ON; else /* ParseVariableBool printed msg if needed */ pset.echo_hidden =3D PSQL_ECHO_HIDDEN_OFF; } with that: static bool echo_hidden_hook(const char *newval) { if (newval =3D=3D NULL) pset.echo_hidden =3D PSQL_ECHO_HIDDEN_OFF; else if (pg_strcasecmp(newval, "noexec") =3D=3D 0) pset.echo_hidden =3D PSQL_ECHO_HIDDEN_NOEXEC; else { bool isvalid; bool val =3D ParseVariableBool(newval, "ECHO_HIDDEN", &isvalid); if (!isvalid) return false; /* ParseVariableBool printed msg */ pset.echo_hidden =3D val ? PSQL_ECHO_HIDDEN_ON : PSQL_ECHO_HIDDEN_OFF; } return true; } The goal being again to reject a bogus assignment, as opposed to replacing it with any hardwired value. Code-wise, we can't call generic_boolean_hook() here because we need to assign a non-boolean specific value after having parsed the ON/OFF user-supplied string. More generally, it turns out that the majority of hooks are concerned by this patch, as they parse user-supplied values, but there are 4 distinct categories of variables: 1- purely ON/OFF vars: AUTOCOMMIT, ON_ERROR_STOP, QUIET, SINGLELINE, SINGLESTEP 2- ON/OFF mixed with enum values: ECHO_HIDDEN, ON_ERROR_ROLLBACK 3- purely enum values: COMP_KEYWORD_CASE, HISTCONTROL, ECHO, VERBOSITY, SHOW_CONTEXT 4- numeric values: FETCH_COUNT If you suggest that the patch should refactor the implementation of hooks for case #2, only two hooks are concerned and they consist of non-mergeable enum-specific code interleaved with generic code, so I don't foresee any gain in fusioning. I have the same opinion about merging any of #1, #2, #3, #4 together. But feel free to post code implementing your idea if you disagree, maybe I just don't figure out what you have in mind. For case #3, these hooks clearly follow a common pattern, but I also don't see any benefit in an opportunistic rewrite given the nature of the functions. Best regards, --=20 Daniel V=E9rit=E9 PostgreSQL-powered mailer: http://www.manitou-mail.org Twitter: @DanielVerite ------------=_1479211787-32230-0 Content-Type: text-x-patch; name="psql-var-hooks-v3.patch" Content-Disposition: attachment; filename="psql-var-hooks-v3.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 aW4vcHNxbC92YXJpYWJsZXMuYwppbmRleCBmNDNmNDE4Li41ZTY4YjY3IDEw MDY0NAotLS0gYS9zcmMvYmluL3BzcWwvdmFyaWFibGVzLmMKKysrIGIvc3Jj L2Jpbi9wc3FsL3ZhcmlhYmxlcy5jCkBAIC04NiwxMiArODYsMTYgQEAgR2V0 VmFyaWFibGUoVmFyaWFibGVTcGFjZSBzcGFjZSwgY29uc3QgY2hhciAqbmFt ZSkKICAqCiAgKiAibmFtZSIgaXMgdGhlIG5hbWUgb2YgdGhlIHZhcmlhYmxl IHdlJ3JlIGFzc2lnbmluZyB0bywgdG8gdXNlIGluIGVycm9yCiAgKiByZXBv cnQgaWYgYW55LiAgUGFzcyBuYW1lID09IE5VTEwgdG8gc3VwcHJlc3MgdGhl IGVycm9yIHJlcG9ydC4KKyAqCisgKiAiKnZhbGlkIiByZXBvcnRzIHdoZXRo ZXIgInZhbHVlIiB3YXMgc3ludGFjdGljYWxseSB2YWxpZCwgdW5sZXNzIHZh bGlkID09IE5VTEwKICAqLwogYm9vbAotUGFyc2VWYXJpYWJsZUJvb2woY29u c3QgY2hhciAqdmFsdWUsIGNvbnN0IGNoYXIgKm5hbWUpCitQYXJzZVZhcmlh YmxlQm9vbChjb25zdCBjaGFyICp2YWx1ZSwgY29uc3QgY2hhciAqbmFtZSwg Ym9vbCAqdmFsaWQpCiB7CiAJc2l6ZV90CQlsZW47CiAKKwlpZiAodmFsaWQp CisJCSp2YWxpZCA9IHRydWU7CiAJaWYgKHZhbHVlID09IE5VTEwpCiAJCXJl dHVybiBmYWxzZTsJCQkvKiBub3Qgc2V0IC0+IGFzc3VtZSAib2ZmIiAqLwog CkBAIC0xMTYsMTAgKzEyMCwxNiBAQCBQYXJzZVZhcmlhYmxlQm9vbChjb25z dCBjaGFyICp2YWx1ZSwgY29uc3QgY2hhciAqbmFtZSkKIAkJcmV0dXJuIGZh bHNlOwogCWVsc2UKIAl7Ci0JCS8qIE5VTEwgaXMgdHJlYXRlZCBhcyBmYWxz ZSwgc28gYSBub24tbWF0Y2hpbmcgdmFsdWUgaXMgJ3RydWUnICovCisJCS8q CisJCSAqIE5VTEwgaXMgdHJlYXRlZCBhcyBmYWxzZSwgc28gYSBub24tbWF0 Y2hpbmcgdmFsdWUgaXMgJ3RydWUnLgorCQkgKiBBIGNhbGxlciB0aGF0IGNh cmVzIGFib3V0IHN5bnRhY3RpYyBjb25mb3JtYW5jZSBzaG91bGQKKwkJICog Y2hlY2sgKnZhbGlkIHRvIGtub3cgd2hldGhlciB0aGUgdmFsdWUgd2FzIHJl Y29nbml6ZWQuCisJCSAqLwogCQlpZiAobmFtZSkKLQkJCXBzcWxfZXJyb3Io InVucmVjb2duaXplZCB2YWx1ZSBcIiVzXCIgZm9yIFwiJXNcIjsgYXNzdW1p bmcgXCIlc1wiXG4iLAotCQkJCQkgICB2YWx1ZSwgbmFtZSwgIm9uIik7CisJ CQlwc3FsX2Vycm9yKCJ1bnJlY29nbml6ZWQgdmFsdWUgXCIlc1wiIGZvciBc IiVzXCI6IGJvb2xlYW4gZXhwZWN0ZWRcbiIsCisJCQkJCSAgIHZhbHVlLCBu YW1lKTsKKwkJaWYgKHZhbGlkKQorCQkJKnZhbGlkID0gZmFsc2U7CiAJCXJl dHVybiB0cnVlOwogCX0KIH0KQEAgLTE1NCw2ICsxNjQsMzUgQEAgUGFyc2VW YXJpYWJsZU51bShjb25zdCBjaGFyICp2YWwsCiAJcmV0dXJuIHJlc3VsdDsK IH0KIAorLyoKKyAqIFJlYWQgbnVtZXJpYyB2YXJpYWJsZSwgb3IgZGVmYXVs dHZhbCBpZiBpdCBpcyBub3Qgc2V0LgorICogVHJhaWxpbmcgY29udGVudHMg YXJlIG5vdCBhbGxvd2VkLgorICogInZhbGlkIiBwb2ludHMgdG8gYSBib29s IHJlcG9ydGluZyB3aGV0aGVyIHRoZSB2YWx1ZSB3YXMgdmFsaWQuCisgKi8K K2ludAorUGFyc2VDaGVja1ZhcmlhYmxlTnVtKGNvbnN0IGNoYXIgKnZhbCwK KwkJCQkJICBpbnQgZGVmYXVsdHZhbCwKKwkJCQkJICBib29sICp2YWxpZCkK K3sKKwlpbnQJCXJlc3VsdDsKKworCWlmICghdmFsKQorCXsKKwkJKnZhbGlk ID0gdHJ1ZTsKKwkJcmVzdWx0ID0gZGVmYXVsdHZhbDsKKwl9CisJZWxzZQor CXsKKwkJY2hhcgkgICAqZW5kOworCisJCWVycm5vID0gMDsKKwkJcmVzdWx0 ID0gc3RydG9sKHZhbCwgJmVuZCwgMCk7CisJCSp2YWxpZCA9ICh2YWxbMF0g IT0gJ1wwJyAmJiBlcnJubyA9PSAwICYmICplbmQgPT0gJ1wwJyk7CisJfQor CisJcmV0dXJuIHJlc3VsdDsKK30KKwogaW50CiBHZXRWYXJpYWJsZU51bShW YXJpYWJsZVNwYWNlIHNwYWNlLAogCQkJICAgY29uc3QgY2hhciAqbmFtZSwK QEAgLTIwNSwxMyArMjQ0LDE3IEBAIFNldFZhcmlhYmxlKFZhcmlhYmxlU3Bh Y2Ugc3BhY2UsIGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnZhbHVl KQogCXsKIAkJaWYgKHN0cmNtcChjdXJyZW50LT5uYW1lLCBuYW1lKSA9PSAw KQogCQl7Ci0JCQkvKiBmb3VuZCBlbnRyeSwgc28gdXBkYXRlICovCi0JCQlp ZiAoY3VycmVudC0+dmFsdWUpCi0JCQkJZnJlZShjdXJyZW50LT52YWx1ZSk7 Ci0JCQljdXJyZW50LT52YWx1ZSA9IHBnX3N0cmR1cCh2YWx1ZSk7Ci0JCQlp ZiAoY3VycmVudC0+YXNzaWduX2hvb2spCi0JCQkJKCpjdXJyZW50LT5hc3Np Z25faG9vaykgKGN1cnJlbnQtPnZhbHVlKTsKLQkJCXJldHVybiB0cnVlOwor CQkJLyogZm91bmQgZW50cnksIHNvIHVwZGF0ZSwgdW5sZXNzIGEgaG9vayBy ZXR1cm5zIGZhbHNlICovCisJCQlib29sIGNvbmZpcm1lZCA9IGN1cnJlbnQt PmFzc2lnbl9ob29rID8KKwkJCQkJCQkoKmN1cnJlbnQtPmFzc2lnbl9ob29r KSAodmFsdWUpIDogdHJ1ZTsKKworCQkJaWYgKGNvbmZpcm1lZCkKKwkJCXsK KwkJCQlpZiAoY3VycmVudC0+dmFsdWUpCisJCQkJCWZyZWUoY3VycmVudC0+ dmFsdWUpOworCQkJCWN1cnJlbnQtPnZhbHVlID0gcGdfc3RyZHVwKHZhbHVl KTsKKwkJCX0KKwkJCXJldHVybiBjb25maXJtZWQ7CiAJCX0KIAl9CiAKQEAg LTI0OCw3ICsyOTEsNyBAQCBTZXRWYXJpYWJsZUFzc2lnbkhvb2soVmFyaWFi bGVTcGFjZSBzcGFjZSwgY29uc3QgY2hhciAqbmFtZSwgVmFyaWFibGVBc3Np Z25Ib29rCiAJCXsKIAkJCS8qIGZvdW5kIGVudHJ5LCBzbyB1cGRhdGUgKi8K IAkJCWN1cnJlbnQtPmFzc2lnbl9ob29rID0gaG9vazsKLQkJCSgqaG9vaykg KGN1cnJlbnQtPnZhbHVlKTsKKwkJCSgqaG9vaykgKGN1cnJlbnQtPnZhbHVl KTsgLyogaWdub3JlIHJldHVybiB2YWx1ZSAqLwogCQkJcmV0dXJuIHRydWU7 CiAJCX0KIAl9CkBAIC0yNjAsNyArMzAzLDcgQEAgU2V0VmFyaWFibGVBc3Np Z25Ib29rKFZhcmlhYmxlU3BhY2Ugc3BhY2UsIGNvbnN0IGNoYXIgKm5hbWUs IFZhcmlhYmxlQXNzaWduSG9vawogCWN1cnJlbnQtPmFzc2lnbl9ob29rID0g aG9vazsKIAljdXJyZW50LT5uZXh0ID0gTlVMTDsKIAlwcmV2aW91cy0+bmV4 dCA9IGN1cnJlbnQ7Ci0JKCpob29rKSAoTlVMTCk7CisJKHZvaWQpKCpob29r KSAoTlVMTCk7CQkvKiBpZ25vcmUgcmV0dXJuIHZhbHVlICovCiAJcmV0dXJu IHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC92YXJpYWJs ZXMuaCBiL3NyYy9iaW4vcHNxbC92YXJpYWJsZXMuaAppbmRleCBkN2EwNWEx Li4zODM5NmJhIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvdmFyaWFibGVz LmgKKysrIGIvc3JjL2Jpbi9wc3FsL3ZhcmlhYmxlcy5oCkBAIC0yMCw3ICsy MCw3IEBACiAgKiBOb3RlOiBpZiB2YWx1ZSA9PSBOVUxMIHRoZW4gdGhlIHZh cmlhYmxlIGlzIGxvZ2ljYWxseSB1bnNldCwgYnV0IHdlIGFyZQogICoga2Vl cGluZyB0aGUgc3RydWN0IGFyb3VuZCBzbyBhcyBub3QgdG8gZm9yZ2V0IGFi b3V0IGl0cyBob29rIGZ1bmN0aW9uLgogICovCi10eXBlZGVmIHZvaWQgKCpW YXJpYWJsZUFzc2lnbkhvb2spIChjb25zdCBjaGFyICpuZXd2YWwpOwordHlw ZWRlZiBib29sICgqVmFyaWFibGVBc3NpZ25Ib29rKSAoY29uc3QgY2hhciAq bmV3dmFsKTsKIAogc3RydWN0IF92YXJpYWJsZQogewpAQCAtMzUsMTEgKzM1 LDE0IEBAIHR5cGVkZWYgc3RydWN0IF92YXJpYWJsZSAqVmFyaWFibGVTcGFj ZTsKIFZhcmlhYmxlU3BhY2UgQ3JlYXRlVmFyaWFibGVTcGFjZSh2b2lkKTsK IGNvbnN0IGNoYXIgKkdldFZhcmlhYmxlKFZhcmlhYmxlU3BhY2Ugc3BhY2Us IGNvbnN0IGNoYXIgKm5hbWUpOwogCi1ib29sCQlQYXJzZVZhcmlhYmxlQm9v bChjb25zdCBjaGFyICp2YWx1ZSwgY29uc3QgY2hhciAqbmFtZSk7Citib29s CQlQYXJzZVZhcmlhYmxlQm9vbChjb25zdCBjaGFyICp2YWx1ZSwgY29uc3Qg Y2hhciAqbmFtZSwgYm9vbCAqdmFsaWQpOwogaW50IFBhcnNlVmFyaWFibGVO dW0oY29uc3QgY2hhciAqdmFsLAogCQkJCSBpbnQgZGVmYXVsdHZhbCwKIAkJ CQkgaW50IGZhdWx0dmFsLAogCQkJCSBib29sIGFsbG93dHJhaWwpOworaW50 IFBhcnNlQ2hlY2tWYXJpYWJsZU51bShjb25zdCBjaGFyICp2YWwsCisJCQkJ CQkgIGludCBkZWZhdWx0dmFsLAorCQkJCQkJICBib29sICp2YWxpZCk7CiBp bnQgR2V0VmFyaWFibGVOdW0oVmFyaWFibGVTcGFjZSBzcGFjZSwKIAkJCSAg IGNvbnN0IGNoYXIgKm5hbWUsCiAJCQkgICBpbnQgZGVmYXVsdHZhbCwK ------------=_1479211787-32230-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 ------------=_1479211787-32230-0--