Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bksOK-0003lL-4A for pgsql-hackers@arkaria.postgresql.org; Fri, 16 Sep 2016 12:37:16 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84_2) (envelope-from ) id 1bksOJ-0006nH-Id for pgsql-hackers@arkaria.postgresql.org; Fri, 16 Sep 2016 12:37:15 +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 1bksMu-0005GW-LC for pgsql-hackers@postgresql.org; Fri, 16 Sep 2016 12:35:48 +0000 Received: from ks311736.kimsufi.com ([188.165.209.130]) by magus.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bksMq-0005b7-PF for pgsql-hackers@postgresql.org; Fri, 16 Sep 2016 12:35:48 +0000 Received: from genius-map.net (verite.pro [195.154.189.246]) by ks311736.kimsufi.com (Postfix) with ESMTP id 11D5CC0CCD for ; Fri, 16 Sep 2016 15:01:34 +0200 (CEST) Received: by genius-map.net (Postfix, from userid 1001) id 083FE38A1C46; Fri, 16 Sep 2016 14:35:43 +0200 (CEST) MIME-Version: 1.0 Subject: Improvements in psql hooks for variables From: "Daniel Verite" To: pgsql-hackers@postgresql.org Date: Fri, 16 Sep 2016 14:35:41 +0200 Message-Id: <7356e741-fa59-4146-a8eb-cf95fd6b21fb@mm> X-Mailer: Manitou v1.6.0 Content-type: multipart/mixed; boundary="----------=_1474029342-12528-21" 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... ------------=_1474029342-12528-21 Content-Type: text/plain; charset="iso-8859-15" Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Hi, Following the discussion on forbidding an AUTOCOMMIT off->on switch mid-transaction [1], attached is a patch that let the hooks return a boolean indicating whether a change is allowed. Using the hooks, bogus assignments to built-in variables can be dealt with more strictly. For example, pre-patch behavior: =3D# \set ECHO errors =3D# \set ECHO on unrecognized value "on" for "ECHO"; assuming "none" =3D# \echo :ECHO on which has two problems: - we have to assume a value, even though we can't know what the user meant. - after assignment, the user-visible value of the variable diverges from its internal counterpart (pset.echo in this case). Post-patch: =3D# \set ECHO errors =3D# \set ECHO on unrecognized value "on" for "ECHO" \set: error while setting variable =3D# \echo :ECHO errors Both the internal pset.* state and the user-visible value are kept unchanged is the input value is incorrect. Concerning AUTOCOMMIT, autocommit_hook() could return false to forbid a switch when the conditions are not met. Another user-visible effect of the patch is that, using a bogus value for a built-in variable on the command-line becomes a fatal error that prevents psql to continue. This is not directly intended by the patch but is a consequence of SetVariable() failing. Example: $ ./psql -vECHO=3Dbogus unrecognized value "bogus" for "ECHO" psql: could not set variable "ECHO" $ echo $? 1 The built-in vars concerned by the change are: booleans: AUTOCOMMIT, ON_ERROR_STOP, QUIET, SINGLELINE, SINGLESTEP non-booleans: ECHO, ECHO_HIDDEN, ON_ERROR_ROLLBACK, COMP_KEYWORD_CASE, HISTCONTROL, VERBOSITY, SHOW_CONTEXT We could go further to close the gap between pset.* and the built-in variables, by changing how they're initialized and forbidding deletion as Tom suggests in [2], but if there's negative feedback on the above changes, I think we should hear it first. [1] https://www.postgresql.org/message-id/f2cb5838-0ee9-4fe3-acc0-df77aeb7d4c7%= 40mm [2] https://www.postgresql.org/message-id/4695.1473961140%40sss.pgh.pa.us Best regards, --=20 Daniel V=E9rit=E9 PostgreSQL-powered mailer: http://www.manitou-mail.org Twitter: @DanielVerite ------------=_1474029342-12528-21 Content-Type: text-x-patch; name="psql-var-hooks-v1.patch" Content-Disposition: attachment; filename="psql-var-hooks-v1.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9zdGFydHVwLmMgYi9zcmMvYmlu L3BzcWwvc3RhcnR1cC5jCmluZGV4IDdjZTA1ZmIuLjlkY2ZjMGEgMTAwNjQ0 Ci0tLSBhL3NyYy9iaW4vcHNxbC9zdGFydHVwLmMKKysrIGIvc3JjL2Jpbi9w c3FsL3N0YXJ0dXAuYwpAQCAtNzg2LDQzICs3ODYsNTkgQEAgc2hvd1ZlcnNp b24odm9pZCkKICAqIFRoaXMgaXNuJ3QgYW4gYW1hemluZ2x5IGdvb2QgcGxh Y2UgZm9yIHRoZW0sIGJ1dCBuZWl0aGVyIGlzIGFueXdoZXJlIGVsc2UuCiAg Ki8KIAotc3RhdGljIHZvaWQKKy8qCisgKiBIb29rIHRvIHNldCBhbiBpbnRl cm5hbCBmbGFnIGZyb20gYSB1c2VyLXN1cHBsaWVkIHN0cmluZyB2YWx1ZS4K KyAqIElmIHRoZSBzeW50YXggaXMgY29ycmVjdCwgYWZmZWN0ICpmbGFnIGFu ZCByZXR1cm4gdHJ1ZS4KKyAqIE90aGVyd2lzZSwga2VlcCAqZmxhZyB1bnRv dWNoZWQgYW5kIHJldHVybiBmYWxzZS4KKyAqLworc3RhdGljIGJvb2wKK2dl bmVyaWNfYm9vbGVhbl9ob29rKGNvbnN0IGNoYXIgKm5ld3ZhbCwgY29uc3Qg Y2hhciogdmFybmFtZSwgYm9vbCAqZmxhZykKK3sKKwlib29sIGlzdmFsaWQ7 CisJYm9vbCB2YWwgPSBQYXJzZVZhcmlhYmxlQm9vbChuZXd2YWwsIHZhcm5h bWUsICZpc3ZhbGlkKTsKKwlpZiAoaXN2YWxpZCkKKwkJKmZsYWcgPSB2YWw7 CisJcmV0dXJuIGlzdmFsaWQ7Cit9CisKK3N0YXRpYyBib29sCiBhdXRvY29t bWl0X2hvb2soY29uc3QgY2hhciAqbmV3dmFsKQogewotCXBzZXQuYXV0b2Nv bW1pdCA9IFBhcnNlVmFyaWFibGVCb29sKG5ld3ZhbCwgIkFVVE9DT01NSVQi KTsKKwlyZXR1cm4gZ2VuZXJpY19ib29sZWFuX2hvb2sobmV3dmFsLCAiQVVU T0NPTU1JVCIsICZwc2V0LmF1dG9jb21taXQpOwogfQogCi1zdGF0aWMgdm9p ZAorc3RhdGljIGJvb2wKIG9uX2Vycm9yX3N0b3BfaG9vayhjb25zdCBjaGFy ICpuZXd2YWwpCiB7Ci0JcHNldC5vbl9lcnJvcl9zdG9wID0gUGFyc2VWYXJp YWJsZUJvb2wobmV3dmFsLCAiT05fRVJST1JfU1RPUCIpOworCXJldHVybiBn ZW5lcmljX2Jvb2xlYW5faG9vayhuZXd2YWwsICJPTl9FUlJPUl9TVE9QIiwg JnBzZXQub25fZXJyb3Jfc3RvcCk7CiB9CiAKLXN0YXRpYyB2b2lkCitzdGF0 aWMgYm9vbAogcXVpZXRfaG9vayhjb25zdCBjaGFyICpuZXd2YWwpCiB7Ci0J cHNldC5xdWlldCA9IFBhcnNlVmFyaWFibGVCb29sKG5ld3ZhbCwgIlFVSUVU Iik7CisJcmV0dXJuIGdlbmVyaWNfYm9vbGVhbl9ob29rKG5ld3ZhbCwgIlFV SUVUIiwgJnBzZXQucXVpZXQpOwogfQogCi1zdGF0aWMgdm9pZAorc3RhdGlj IGJvb2wKIHNpbmdsZWxpbmVfaG9vayhjb25zdCBjaGFyICpuZXd2YWwpCiB7 Ci0JcHNldC5zaW5nbGVsaW5lID0gUGFyc2VWYXJpYWJsZUJvb2wobmV3dmFs LCAiU0lOR0xFTElORSIpOworCXJldHVybiBnZW5lcmljX2Jvb2xlYW5faG9v ayhuZXd2YWwsICJTSU5HTEVMSU5FIiwgJnBzZXQuc2luZ2xlbGluZSk7CiB9 CiAKLXN0YXRpYyB2b2lkCitzdGF0aWMgYm9vbAogc2luZ2xlc3RlcF9ob29r KGNvbnN0IGNoYXIgKm5ld3ZhbCkKIHsKLQlwc2V0LnNpbmdsZXN0ZXAgPSBQ YXJzZVZhcmlhYmxlQm9vbChuZXd2YWwsICJTSU5HTEVTVEVQIik7CisJcmV0 dXJuIGdlbmVyaWNfYm9vbGVhbl9ob29rKG5ld3ZhbCwgIlNJTkdMRVNURVAi LCAmcHNldC5zaW5nbGVzdGVwKTsKIH0KIAotc3RhdGljIHZvaWQKK3N0YXRp YyBib29sCiBmZXRjaF9jb3VudF9ob29rKGNvbnN0IGNoYXIgKm5ld3ZhbCkK IHsKIAlwc2V0LmZldGNoX2NvdW50ID0gUGFyc2VWYXJpYWJsZU51bShuZXd2 YWwsIC0xLCAtMSwgZmFsc2UpOworCXJldHVybiB0cnVlOwogfQogCi1zdGF0 aWMgdm9pZAorc3RhdGljIGJvb2wKIGVjaG9faG9vayhjb25zdCBjaGFyICpu ZXd2YWwpCiB7CiAJaWYgKG5ld3ZhbCA9PSBOVUxMKQpAQCAtODM3LDM5ICs4 NTMsNTIgQEAgZWNob19ob29rKGNvbnN0IGNoYXIgKm5ld3ZhbCkKIAkJcHNl dC5lY2hvID0gUFNRTF9FQ0hPX05PTkU7CiAJZWxzZQogCXsKLQkJcHNxbF9l cnJvcigidW5yZWNvZ25pemVkIHZhbHVlIFwiJXNcIiBmb3IgXCIlc1wiOyBh c3N1bWluZyBcIiVzXCJcbiIsCi0JCQkJICAgbmV3dmFsLCAiRUNITyIsICJu b25lIik7Ci0JCXBzZXQuZWNobyA9IFBTUUxfRUNIT19OT05FOworCQlwc3Fs X2Vycm9yKCJ1bnJlY29nbml6ZWQgdmFsdWUgXCIlc1wiIGZvciBcIiVzXCJc biIsCisJCQkJICAgbmV3dmFsLCAiRUNITyIpOworCQlyZXR1cm4gZmFsc2U7 CiAJfQorCXJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgdm9pZAorc3RhdGlj IGJvb2wKIGVjaG9faGlkZGVuX2hvb2soY29uc3QgY2hhciAqbmV3dmFsKQog ewogCWlmIChuZXd2YWwgPT0gTlVMTCkKIAkJcHNldC5lY2hvX2hpZGRlbiA9 IFBTUUxfRUNIT19ISURERU5fT0ZGOwogCWVsc2UgaWYgKHBnX3N0cmNhc2Vj bXAobmV3dmFsLCAibm9leGVjIikgPT0gMCkKIAkJcHNldC5lY2hvX2hpZGRl biA9IFBTUUxfRUNIT19ISURERU5fTk9FWEVDOwotCWVsc2UgaWYgKFBhcnNl VmFyaWFibGVCb29sKG5ld3ZhbCwgIkVDSE9fSElEREVOIikpCi0JCXBzZXQu ZWNob19oaWRkZW4gPSBQU1FMX0VDSE9fSElEREVOX09OOwotCWVsc2UJLyog UGFyc2VWYXJpYWJsZUJvb2wgcHJpbnRlZCBtc2cgaWYgbmVlZGVkICovCi0J CXBzZXQuZWNob19oaWRkZW4gPSBQU1FMX0VDSE9fSElEREVOX09GRjsKKwll bHNlCisJeworCQlib29sIGlzdmFsaWQ7CisJCWJvb2wgdmFsID0gUGFyc2VW YXJpYWJsZUJvb2wobmV3dmFsLCAiRUNIT19ISURERU4iLCAmaXN2YWxpZCk7 CisJCWlmICghaXN2YWxpZCkKKwkJCXJldHVybiBmYWxzZTsgLyogUGFyc2VW YXJpYWJsZUJvb2wgcHJpbnRlZCBtc2cgKi8KKwkJcHNldC5lY2hvX2hpZGRl biA9IHZhbCA/IFBTUUxfRUNIT19ISURERU5fT04gOiBQU1FMX0VDSE9fSElE REVOX09GRjsKKwl9CisJcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyB2b2lk CitzdGF0aWMgYm9vbAogb25fZXJyb3Jfcm9sbGJhY2tfaG9vayhjb25zdCBj aGFyICpuZXd2YWwpCiB7CiAJaWYgKG5ld3ZhbCA9PSBOVUxMKQogCQlwc2V0 Lm9uX2Vycm9yX3JvbGxiYWNrID0gUFNRTF9FUlJPUl9ST0xMQkFDS19PRkY7 CiAJZWxzZSBpZiAocGdfc3RyY2FzZWNtcChuZXd2YWwsICJpbnRlcmFjdGl2 ZSIpID09IDApCiAJCXBzZXQub25fZXJyb3Jfcm9sbGJhY2sgPSBQU1FMX0VS Uk9SX1JPTExCQUNLX0lOVEVSQUNUSVZFOwotCWVsc2UgaWYgKFBhcnNlVmFy aWFibGVCb29sKG5ld3ZhbCwgIk9OX0VSUk9SX1JPTExCQUNLIikpCi0JCXBz ZXQub25fZXJyb3Jfcm9sbGJhY2sgPSBQU1FMX0VSUk9SX1JPTExCQUNLX09O OwotCWVsc2UJLyogUGFyc2VWYXJpYWJsZUJvb2wgcHJpbnRlZCBtc2cgaWYg bmVlZGVkICovCi0JCXBzZXQub25fZXJyb3Jfcm9sbGJhY2sgPSBQU1FMX0VS Uk9SX1JPTExCQUNLX09GRjsKKwllbHNlCisJeworCQlib29sIGlzdmFsaWQ7 CisJCWJvb2wgdmFsID0gUGFyc2VWYXJpYWJsZUJvb2wobmV3dmFsLCAiT05f RVJST1JfUk9MTEJBQ0siLCAmaXN2YWxpZCk7CisJCWlmIChpc3ZhbGlkKQor CQkJcHNldC5vbl9lcnJvcl9yb2xsYmFjayA9IHZhbCA/IFBTUUxfRVJST1Jf Uk9MTEJBQ0tfT04gOiBQU1FMX0VSUk9SX1JPTExCQUNLX09GRjsKKwkJZWxz ZQorCQkJLyogUGFyc2VWYXJpYWJsZUJvb2wgcHJpbnRlZCBtc2cgaWYgbmVl ZGVkICovCisJCQlyZXR1cm4gZmFsc2U7CisJfQorCXJldHVybiB0cnVlOwog fQogCi1zdGF0aWMgdm9pZAorc3RhdGljIGJvb2wKIGNvbXBfa2V5d29yZF9j YXNlX2hvb2soY29uc3QgY2hhciAqbmV3dmFsKQogewogCWlmIChuZXd2YWwg PT0gTlVMTCkKQEAgLTg4NCwxMyArOTEzLDE0IEBAIGNvbXBfa2V5d29yZF9j YXNlX2hvb2soY29uc3QgY2hhciAqbmV3dmFsKQogCQlwc2V0LmNvbXBfY2Fz ZSA9IFBTUUxfQ09NUF9DQVNFX0xPV0VSOwogCWVsc2UKIAl7Ci0JCXBzcWxf ZXJyb3IoInVucmVjb2duaXplZCB2YWx1ZSBcIiVzXCIgZm9yIFwiJXNcIjsg YXNzdW1pbmcgXCIlc1wiXG4iLAotCQkJCSAgIG5ld3ZhbCwgIkNPTVBfS0VZ V09SRF9DQVNFIiwgInByZXNlcnZlLXVwcGVyIik7Ci0JCXBzZXQuY29tcF9j YXNlID0gUFNRTF9DT01QX0NBU0VfUFJFU0VSVkVfVVBQRVI7CisJCXBzcWxf ZXJyb3IoInVucmVjb2duaXplZCB2YWx1ZSBcIiVzXCIgZm9yIFwiJXNcIlxu IiwKKwkJCQkgICBuZXd2YWwsICJDT01QX0tFWVdPUkRfQ0FTRSIpOworCQly ZXR1cm4gZmFsc2U7CiAJfQorCXJldHVybiB0cnVlOwogfQogCi1zdGF0aWMg dm9pZAorc3RhdGljIGJvb2wKIGhpc3Rjb250cm9sX2hvb2soY29uc3QgY2hh ciAqbmV3dmFsKQogewogCWlmIChuZXd2YWwgPT0gTlVMTCkKQEAgLTkwNSwz MSArOTM1LDM1IEBAIGhpc3Rjb250cm9sX2hvb2soY29uc3QgY2hhciAqbmV3 dmFsKQogCQlwc2V0Lmhpc3Rjb250cm9sID0gaGN0bF9ub25lOwogCWVsc2UK IAl7Ci0JCXBzcWxfZXJyb3IoInVucmVjb2duaXplZCB2YWx1ZSBcIiVzXCIg Zm9yIFwiJXNcIjsgYXNzdW1pbmcgXCIlc1wiXG4iLAotCQkJCSAgIG5ld3Zh bCwgIkhJU1RDT05UUk9MIiwgIm5vbmUiKTsKLQkJcHNldC5oaXN0Y29udHJv bCA9IGhjdGxfbm9uZTsKKwkJcHNxbF9lcnJvcigidW5yZWNvZ25pemVkIHZh bHVlIFwiJXNcIiBmb3IgXCIlc1wiXG4iLAorCQkJCSAgIG5ld3ZhbCwgIkhJ U1RDT05UUk9MIik7CisJCXJldHVybiBmYWxzZTsKIAl9CisJcmV0dXJuIHRy dWU7CiB9CiAKLXN0YXRpYyB2b2lkCitzdGF0aWMgYm9vbAogcHJvbXB0MV9o b29rKGNvbnN0IGNoYXIgKm5ld3ZhbCkKIHsKIAlwc2V0LnByb21wdDEgPSBu ZXd2YWwgPyBuZXd2YWwgOiAiIjsKKwlyZXR1cm4gdHJ1ZTsKIH0KIAotc3Rh dGljIHZvaWQKK3N0YXRpYyBib29sCiBwcm9tcHQyX2hvb2soY29uc3QgY2hh ciAqbmV3dmFsKQogewogCXBzZXQucHJvbXB0MiA9IG5ld3ZhbCA/IG5ld3Zh bCA6ICIiOworCXJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgdm9pZAorc3Rh dGljIGJvb2wKIHByb21wdDNfaG9vayhjb25zdCBjaGFyICpuZXd2YWwpCiB7 CiAJcHNldC5wcm9tcHQzID0gbmV3dmFsID8gbmV3dmFsIDogIiI7CisJcmV0 dXJuIHRydWU7CiB9CiAKLXN0YXRpYyB2b2lkCitzdGF0aWMgYm9vbAogdmVy Ym9zaXR5X2hvb2soY29uc3QgY2hhciAqbmV3dmFsKQogewogCWlmIChuZXd2 YWwgPT0gTlVMTCkKQEAgLTk0MiwxNiArOTc2LDE3IEBAIHZlcmJvc2l0eV9o b29rKGNvbnN0IGNoYXIgKm5ld3ZhbCkKIAkJcHNldC52ZXJib3NpdHkgPSBQ UUVSUk9SU19WRVJCT1NFOwogCWVsc2UKIAl7Ci0JCXBzcWxfZXJyb3IoInVu cmVjb2duaXplZCB2YWx1ZSBcIiVzXCIgZm9yIFwiJXNcIjsgYXNzdW1pbmcg XCIlc1wiXG4iLAotCQkJCSAgIG5ld3ZhbCwgIlZFUkJPU0lUWSIsICJkZWZh dWx0Iik7Ci0JCXBzZXQudmVyYm9zaXR5ID0gUFFFUlJPUlNfREVGQVVMVDsK KwkJcHNxbF9lcnJvcigidW5yZWNvZ25pemVkIHZhbHVlIFwiJXNcIiBmb3Ig XCIlc1wiXG4iLAorCQkJCSAgIG5ld3ZhbCwgIlZFUkJPU0lUWSIpOworCQly ZXR1cm4gZmFsc2U7CiAJfQogCiAJaWYgKHBzZXQuZGIpCiAJCVBRc2V0RXJy b3JWZXJib3NpdHkocHNldC5kYiwgcHNldC52ZXJib3NpdHkpOworCXJldHVy biB0cnVlOwogfQogCi1zdGF0aWMgdm9pZAorc3RhdGljIGJvb2wKIHNob3df Y29udGV4dF9ob29rKGNvbnN0IGNoYXIgKm5ld3ZhbCkKIHsKIAlpZiAobmV3 dmFsID09IE5VTEwpCkBAIC05NjQsMTMgKzk5OSwxNCBAQCBzaG93X2NvbnRl eHRfaG9vayhjb25zdCBjaGFyICpuZXd2YWwpCiAJCXBzZXQuc2hvd19jb250 ZXh0ID0gUFFTSE9XX0NPTlRFWFRfQUxXQVlTOwogCWVsc2UKIAl7Ci0JCXBz cWxfZXJyb3IoInVucmVjb2duaXplZCB2YWx1ZSBcIiVzXCIgZm9yIFwiJXNc IjsgYXNzdW1pbmcgXCIlc1wiXG4iLAotCQkJCSAgIG5ld3ZhbCwgIlNIT1df Q09OVEVYVCIsICJlcnJvcnMiKTsKLQkJcHNldC5zaG93X2NvbnRleHQgPSBQ UVNIT1dfQ09OVEVYVF9FUlJPUlM7CisJCXBzcWxfZXJyb3IoInVucmVjb2du aXplZCB2YWx1ZSBcIiVzXCIgZm9yIFwiJXNcIlxuIiwKKwkJCQkgICBuZXd2 YWwsICJTSE9XX0NPTlRFWFQiKTsKKwkJcmV0dXJuIGZhbHNlOwogCX0KIAog CWlmIChwc2V0LmRiKQogCQlQUXNldEVycm9yQ29udGV4dFZpc2liaWxpdHko cHNldC5kYiwgcHNldC5zaG93X2NvbnRleHQpOworCXJldHVybiB0cnVlOwog fQogCiAKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC92YXJpYWJsZXMuYyBi L3NyYy9iaW4vcHNxbC92YXJpYWJsZXMuYwppbmRleCBmNDNmNDE4Li40Zjgx N2MzIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvdmFyaWFibGVzLmMKKysr IGIvc3JjL2Jpbi9wc3FsL3ZhcmlhYmxlcy5jCkBAIC04NiwxMiArODYsMTYg QEAgR2V0VmFyaWFibGUoVmFyaWFibGVTcGFjZSBzcGFjZSwgY29uc3QgY2hh ciAqbmFtZSkKICAqCiAgKiAibmFtZSIgaXMgdGhlIG5hbWUgb2YgdGhlIHZh cmlhYmxlIHdlJ3JlIGFzc2lnbmluZyB0bywgdG8gdXNlIGluIGVycm9yCiAg KiByZXBvcnQgaWYgYW55LiAgUGFzcyBuYW1lID09IE5VTEwgdG8gc3VwcHJl c3MgdGhlIGVycm9yIHJlcG9ydC4KKyAqCisgKiAiKnZhbGlkIiByZXBvcnRz IHdoZXRoZXIgInZhbHVlIiB3YXMgc3ludGFjdGljYWxseSB2YWxpZCwgdW5s ZXNzIHZhbGlkID09IE5VTEwKICAqLwogYm9vbAotUGFyc2VWYXJpYWJsZUJv b2woY29uc3QgY2hhciAqdmFsdWUsIGNvbnN0IGNoYXIgKm5hbWUpCitQYXJz ZVZhcmlhYmxlQm9vbChjb25zdCBjaGFyICp2YWx1ZSwgY29uc3QgY2hhciAq bmFtZSwgYm9vbCAqdmFsaWQpCiB7CiAJc2l6ZV90CQlsZW47CiAKKwlpZiAo dmFsaWQpCisJCSp2YWxpZCA9IHRydWU7CiAJaWYgKHZhbHVlID09IE5VTEwp CiAJCXJldHVybiBmYWxzZTsJCQkvKiBub3Qgc2V0IC0+IGFzc3VtZSAib2Zm IiAqLwogCkBAIC0xMTYsMTAgKzEyMCwxNiBAQCBQYXJzZVZhcmlhYmxlQm9v bChjb25zdCBjaGFyICp2YWx1ZSwgY29uc3QgY2hhciAqbmFtZSkKIAkJcmV0 dXJuIGZhbHNlOwogCWVsc2UKIAl7Ci0JCS8qIE5VTEwgaXMgdHJlYXRlZCBh cyBmYWxzZSwgc28gYSBub24tbWF0Y2hpbmcgdmFsdWUgaXMgJ3RydWUnICov CisJCS8qCisJCSAqIE5VTEwgaXMgdHJlYXRlZCBhcyBmYWxzZSwgc28gYSBu b24tbWF0Y2hpbmcgdmFsdWUgaXMgJ3RydWUnLgorCQkgKiBBIGNhbGxlciB0 aGF0IGNhcmVzIGFib3V0IHN5bnRhY3RpYyBjb25mb3JtYW5jZSBzaG91bGQK KwkJICogY2hlY2sgKnZhbGlkIHRvIGtub3cgd2hldGhlciB0aGUgdmFsdWUg d2FzIHJlY29nbml6ZWQuCisJCSAqLwogCQlpZiAobmFtZSkKLQkJCXBzcWxf ZXJyb3IoInVucmVjb2duaXplZCB2YWx1ZSBcIiVzXCIgZm9yIFwiJXNcIjsg YXNzdW1pbmcgXCIlc1wiXG4iLAotCQkJCQkgICB2YWx1ZSwgbmFtZSwgIm9u Iik7CisJCQlwc3FsX2Vycm9yKCJ1bnJlY29nbml6ZWQgdmFsdWUgXCIlc1wi IGZvciBcIiVzXCI6IGJvb2xlYW4gZXhwZWN0ZWRcbiIsCisJCQkJCSAgIHZh bHVlLCBuYW1lKTsKKwkJaWYgKCp2YWxpZCkKKwkJCSp2YWxpZCA9IGZhbHNl OwogCQlyZXR1cm4gdHJ1ZTsKIAl9CiB9CkBAIC0yMDUsMTMgKzIxNSwxOSBA QCBTZXRWYXJpYWJsZShWYXJpYWJsZVNwYWNlIHNwYWNlLCBjb25zdCBjaGFy ICpuYW1lLCBjb25zdCBjaGFyICp2YWx1ZSkKIAl7CiAJCWlmIChzdHJjbXAo Y3VycmVudC0+bmFtZSwgbmFtZSkgPT0gMCkKIAkJewotCQkJLyogZm91bmQg ZW50cnksIHNvIHVwZGF0ZSAqLwotCQkJaWYgKGN1cnJlbnQtPnZhbHVlKQot CQkJCWZyZWUoY3VycmVudC0+dmFsdWUpOwotCQkJY3VycmVudC0+dmFsdWUg PSBwZ19zdHJkdXAodmFsdWUpOworCQkJLyogZm91bmQgZW50cnksIHNvIHVw ZGF0ZSwgdW5sZXNzIGEgaG9vayByZXR1cm5zIGZhbHNlICovCisJCQlib29s IGNvbmZpcm1lZCA9IHRydWU7CiAJCQlpZiAoY3VycmVudC0+YXNzaWduX2hv b2spCi0JCQkJKCpjdXJyZW50LT5hc3NpZ25faG9vaykgKGN1cnJlbnQtPnZh bHVlKTsKLQkJCXJldHVybiB0cnVlOworCQkJeworCQkJCWNvbmZpcm1lZCA9 ICgqY3VycmVudC0+YXNzaWduX2hvb2spICh2YWx1ZSk7CisJCQl9CisJCQlp ZiAoY29uZmlybWVkKQorCQkJeworCQkJCWlmIChjdXJyZW50LT52YWx1ZSkK KwkJCQkJZnJlZShjdXJyZW50LT52YWx1ZSk7CisJCQkJY3VycmVudC0+dmFs dWUgPSBwZ19zdHJkdXAodmFsdWUpOworCQkJfQorCQkJcmV0dXJuIGNvbmZp cm1lZDsKIAkJfQogCX0KIApAQCAtMjQ4LDcgKzI2NCw3IEBAIFNldFZhcmlh YmxlQXNzaWduSG9vayhWYXJpYWJsZVNwYWNlIHNwYWNlLCBjb25zdCBjaGFy ICpuYW1lLCBWYXJpYWJsZUFzc2lnbkhvb2sKIAkJewogCQkJLyogZm91bmQg ZW50cnksIHNvIHVwZGF0ZSAqLwogCQkJY3VycmVudC0+YXNzaWduX2hvb2sg PSBob29rOwotCQkJKCpob29rKSAoY3VycmVudC0+dmFsdWUpOworCQkJKHZv aWQpKCpob29rKSAoY3VycmVudC0+dmFsdWUpOyAvKiBpZ25vcmUgcmV0dXJu IHZhbHVlICovCiAJCQlyZXR1cm4gdHJ1ZTsKIAkJfQogCX0KQEAgLTI2MCw3 ICsyNzYsNyBAQCBTZXRWYXJpYWJsZUFzc2lnbkhvb2soVmFyaWFibGVTcGFj ZSBzcGFjZSwgY29uc3QgY2hhciAqbmFtZSwgVmFyaWFibGVBc3NpZ25Ib29r CiAJY3VycmVudC0+YXNzaWduX2hvb2sgPSBob29rOwogCWN1cnJlbnQtPm5l eHQgPSBOVUxMOwogCXByZXZpb3VzLT5uZXh0ID0gY3VycmVudDsKLQkoKmhv b2spIChOVUxMKTsKKwkodm9pZCkoKmhvb2spIChOVUxMKTsJCS8qIGlnbm9y ZSByZXR1cm4gdmFsdWUgKi8KIAlyZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0t Z2l0IGEvc3JjL2Jpbi9wc3FsL3ZhcmlhYmxlcy5oIGIvc3JjL2Jpbi9wc3Fs L3ZhcmlhYmxlcy5oCmluZGV4IGQ3YTA1YTEuLjk4MzZmYzUgMTAwNjQ0Ci0t LSBhL3NyYy9iaW4vcHNxbC92YXJpYWJsZXMuaAorKysgYi9zcmMvYmluL3Bz cWwvdmFyaWFibGVzLmgKQEAgLTIwLDcgKzIwLDcgQEAKICAqIE5vdGU6IGlm IHZhbHVlID09IE5VTEwgdGhlbiB0aGUgdmFyaWFibGUgaXMgbG9naWNhbGx5 IHVuc2V0LCBidXQgd2UgYXJlCiAgKiBrZWVwaW5nIHRoZSBzdHJ1Y3QgYXJv dW5kIHNvIGFzIG5vdCB0byBmb3JnZXQgYWJvdXQgaXRzIGhvb2sgZnVuY3Rp b24uCiAgKi8KLXR5cGVkZWYgdm9pZCAoKlZhcmlhYmxlQXNzaWduSG9vaykg KGNvbnN0IGNoYXIgKm5ld3ZhbCk7Cit0eXBlZGVmIGJvb2wgKCpWYXJpYWJs ZUFzc2lnbkhvb2spIChjb25zdCBjaGFyICpuZXd2YWwpOwogCiBzdHJ1Y3Qg X3ZhcmlhYmxlCiB7CkBAIC0zNSw3ICszNSw3IEBAIHR5cGVkZWYgc3RydWN0 IF92YXJpYWJsZSAqVmFyaWFibGVTcGFjZTsKIFZhcmlhYmxlU3BhY2UgQ3Jl YXRlVmFyaWFibGVTcGFjZSh2b2lkKTsKIGNvbnN0IGNoYXIgKkdldFZhcmlh YmxlKFZhcmlhYmxlU3BhY2Ugc3BhY2UsIGNvbnN0IGNoYXIgKm5hbWUpOwog Ci1ib29sCQlQYXJzZVZhcmlhYmxlQm9vbChjb25zdCBjaGFyICp2YWx1ZSwg Y29uc3QgY2hhciAqbmFtZSk7Citib29sCQlQYXJzZVZhcmlhYmxlQm9vbChj b25zdCBjaGFyICp2YWx1ZSwgY29uc3QgY2hhciAqbmFtZSwgYm9vbCAqdmFs aWQpOwogaW50IFBhcnNlVmFyaWFibGVOdW0oY29uc3QgY2hhciAqdmFsLAog CQkJCSBpbnQgZGVmYXVsdHZhbCwKIAkJCQkgaW50IGZhdWx0dmFsLAo= ------------=_1474029342-12528-21 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 ------------=_1474029342-12528-21--