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 1nCUSN-0005lX-Vz for pgsql-hackers@arkaria.postgresql.org; Tue, 25 Jan 2022 22:38:32 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1nCUSM-0004sK-KS for pgsql-hackers@arkaria.postgresql.org; Tue, 25 Jan 2022 22:38:30 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nCUSM-0004sA-AA for pgsql-hackers@lists.postgresql.org; Tue, 25 Jan 2022 22:38:30 +0000 Received: from mail-yb1-xb2f.google.com ([2607:f8b0:4864:20::b2f]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1nCUSF-0000WM-95 for pgsql-hackers@lists.postgresql.org; Tue, 25 Jan 2022 22:38:29 +0000 Received: by mail-yb1-xb2f.google.com with SMTP id r65so62420304ybc.11 for ; Tue, 25 Jan 2022 14:38:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:from:date:message-id:subject:to; bh=lSMDqlGQsuzp+Rkvaw4C0U0C9dE4K3Cx2GynRA/GHAc=; b=MZ3sPLF0JUNS3fw47Ed5xCu4C+vlbJyI78UZxqdALcF1eMWuKqwlrAHxM8tor2e7NS ENi3RwtCCDAqOZMUewDm878d46H6ItKZmOS02GlwT6BWoqCLm9yg3vmaWz/0uiYCf5lL NzYXcYZpS2GyYzzEiE9vgGMJghrVUENvDImvxHsDh1n4uTMd+8C5eH6mjjxrauZ6V61v 6YaBnY+rV76Md+hQW6XNMi6Z/4pJ82i5FaTKz2jlw7RAzSdHeyC59QoRND9SCxGLuh64 0a2u4KgGAVODv9zC87oyTTZ4cqJCqmlNeCcYVw9XiVZi3q463ejcruPFqJpDXN/EFygh 7C5g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=lSMDqlGQsuzp+Rkvaw4C0U0C9dE4K3Cx2GynRA/GHAc=; b=VKy1tVweRKLlUciwNgvEWux0+DeYI+liQ3VK0DqDsLs4hH/EOLeh3zOFpnZue2riZ5 DvF8vq67hnLx3NUR/sJjjYJ2elZatdSuDy/QBgu/OL08BP2yauWHbqndOZMtwhlf9o3H E8tqYA136cqZEVjRV0eP0jIek/2O39oDxI88f+kzhLLvOU/NZ0Kk+T21ZiLfIcIjPEcR Y/h0mT7aLMdYSMDl5tqqZRT39IAMUj1v86jLw1aV3pvwIOb7hJJJQ1F+4IL5Ywjog0l4 IFNQrLaz3aBsi6+LqcdOptr6he0zkSrGNyzi7VSIHtr7kZt6R5glUEz63WlWDzmwAWDi B8hw== X-Gm-Message-State: AOAM5332ARS87UAZ4zpzuiRKAY+eqnFDVZCRvajoiMIBWG+0r20KfHU4 WfSIS1bwavdKcc2g57Vg6IguIK2J55fUG7euLklQOlUudM4= X-Google-Smtp-Source: ABdhPJwdnx+h+glMUdCKzYVAxUWvDVOeOlk1WtjGWWf/fWIuZIs1czhJmK2CgfBhR/+FpbUUNeX6e3pbeVGNzyhcZ1w= X-Received: by 2002:a05:6902:20d:: with SMTP id j13mr32812398ybs.18.1643150300966; Tue, 25 Jan 2022 14:38:20 -0800 (PST) MIME-Version: 1.0 From: Mikhail Dobrinin Date: Tue, 25 Jan 2022 16:38:05 -0600 Message-ID: Subject: JSONB docs patch To: pgsql-hackers@lists.postgresql.org Content-Type: multipart/mixed; boundary="00000000000000bca905d66fbe80" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000000bca905d66fbe80 Content-Type: multipart/alternative; boundary="00000000000000bca805d66fbe7e" --00000000000000bca805d66fbe7e Content-Type: text/plain; charset="UTF-8" Hello, I have come across some missing documentation that I think could benefit the community. Several functions like `jsonb_exists`, `jsonb_exists_any`, `jsonb_exists_all` have existed for many PG versions but were not documented. They are equivalent to `?`, `?|`, and `?&` operators. But some JDBC drivers have issues with native queries containing these operators (see https://stackoverflow.com/questions/38370972/how-do-i-use-postgresql-jsonb-operators-containing-a-question-mark-via-jdb), so it is useful for users of PG to know the function equivalents of these operators. I have attached the patch as an attachment to this email. The documentation builds correctly without any lint errors after applying the patch locally. This is my first time contributing, so let me know if there is anything else I should do (add to commitfest etc). Cheers! Mikhail Dobrinin --00000000000000bca805d66fbe7e Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hello,

I have come across some missing documentatio= n that I think could benefit the community.

Several functions like `= jsonb_exists`, `jsonb_exists_any`, `jsonb_exists_all` have existed for many= PG versions but were not documented. They are equivalent to `?`, `?|`, and= `?&` operators. But some JDBC drivers have issues with native queries = containing these operators (see https://stackoverflow.com/questions/38370972/how-do-i-use-pos= tgresql-jsonb-operators-containing-a-question-mark-via-jdb), so it is u= seful for users of PG to know the function equivalents of these operators.<= div>
I have attached the patch as an attachment to this email= . The documentation builds correctly without any lint errors after applying= the=C2=A0patch locally. This is my first time contributing, so let me know= =C2=A0if there is anything else=C2=A0I should do (add to commitfest etc).

Cheers!
Mikhail Dobrinin
--00000000000000bca805d66fbe7e-- --00000000000000bca905d66fbe80 Content-Type: application/octet-stream; name="jsonb-docs-v1.diff" Content-Disposition: attachment; filename="jsonb-docs-v1.diff" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kyup6rhh0 RnJvbSAyZmJkODBkYWZlNzJiMjdmZDYwNDk1MjMyODgxNGRjY2UyOTc3MDRjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIERvYnJpbmluIDxtdmRvYnJpbmluQGdtYWlsLmNv bT4KRGF0ZTogVHVlLCAyNSBKYW4gMjAyMiAxNjoxMDo1MyAtMDYwMApTdWJqZWN0OiBbUEFUQ0hd IEFkZCBkb2N1bWVudGF0aW9uIGZvciBzZXZlcmFsIGpzb25iIGZ1bmN0aW9ucy4KClNldmVyYWwg ZnVuY3Rpb25zIGxpa2UgYGpzb25iX2V4aXN0c2AsIGBqc29uYl9leGlzdHNfYW55YCwgYGpzb25i X2V4aXN0c19hbGxgIGhhdmUgZXhpc3RlZCBmb3IgbWFueSBQRyB2ZXJzaW9ucyBidXQgd2VyZSBu b3QgZG9jdW1lbnRlZC4gVGhleSBhcmUgZXF1aXZhbGVudCB0byBgP2AsIGA/fGAsIGFuZCBgPyZg IG9wZXJhdG9ycy4gQnV0IHNvbWUgSkRCQyBkcml2ZXJzIGhhdmUgaXNzdWVzIHdpdGggbmF0aXZl IHF1ZXJpZXMgY29udGFpbmluZyB0aGVzZSBvcGVyYXRvcnMgKHNlZSBodHRwczovL3N0YWNrb3Zl cmZsb3cuY29tL3F1ZXN0aW9ucy8zODM3MDk3Mi9ob3ctZG8taS11c2UtcG9zdGdyZXNxbC1qc29u Yi1vcGVyYXRvcnMtY29udGFpbmluZy1hLXF1ZXN0aW9uLW1hcmstdmlhLWpkYiksIHNvIGl0IGlz IHVzZWZ1bCBmb3IgdXNlcnMgb2YgUEcgdG8ga25vdyB0aGUgZnVuY3Rpb24gZXF1aXZhbGVudHMg b2YgdGhlc2Ugb3BlcmF0b3JzLgotLS0KIGRvYy9zcmMvc2dtbC9mdW5jLnNnbWwgfCA2NSArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCA2 NSBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2Z1bmMuc2dtbCBiL2Rv Yy9zcmMvc2dtbC9mdW5jLnNnbWwKaW5kZXggMGVlNjk3NGYxYy4uZmRjYjlhYmI2ZCAxMDA2NDQK LS0tIGEvZG9jL3NyYy9zZ21sL2Z1bmMuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvZnVuYy5zZ21s CkBAIC0xNjU5Myw2ICsxNjU5Myw3MSBAQCB0YWJsZTItbWFwcGluZwogICAgICAgICA8cmV0dXJu dmFsdWU+dDwvcmV0dXJudmFsdWU+CiAgICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgICA8L3Jv dz4KKworICAgICAgPHJvdz4KKyAgICAgICA8ZW50cnkgcm9sZT0iZnVuY190YWJsZV9lbnRyeSI+ PHBhcmEgcm9sZT0iZnVuY19zaWduYXR1cmUiPgorICAgICAgICA8aW5kZXh0ZXJtPgorICAgICAg ICAgPHByaW1hcnk+anNvbmJfZXhpc3RzPC9wcmltYXJ5PgorICAgICAgICA8L2luZGV4dGVybT4K KyAgICAgICAgPGZ1bmN0aW9uPmpzb25iX2V4aXN0czwvZnVuY3Rpb24+ICggPHR5cGU+anNvbmI8 L3R5cGU+ICkKKyAgICAgICAgPHJldHVybnZhbHVlPmJvb2xlYW48L3JldHVybnZhbHVlPgorICAg ICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgQ2hlY2tzIGlmIHRoZSB0ZXh0IHN0 cmluZyBleGlzdHMgYXMgYSB0b3AtbGV2ZWwga2V5IG9yIGFycmF5IGVsZW1lbnQgd2l0aGluIHRo ZSBKU09OIHZhbHVlLgorICAgICAgICAoVGhpcyBpcyBmdW5jdGlvbmFsbHkgZXF1aXZhbGVudCB0 byB0aGUganNvbmIgPGxpdGVyYWw+PzwvbGl0ZXJhbD4KKyAgICAgICAgb3BlcmF0b3IsIGJ1dCBt YXkgYmUgdXNlZnVsIHRvIGNhbGwgYXMgYSBmdW5jdGlvbiBpbiBzb21lIGNhc2VzLCBsaWtlIHdo ZW4gd29ya2luZyB3aXRoIEpEQkMgcHJvdG9jb2wuKQorICAgICAgIDwvcGFyYT4KKyAgICAgICA8 cGFyYT4KKyAgICAgICAgPGxpdGVyYWw+anNvbmJfZXhpc3RzKCd7ImEiOjEsICJiIjoyfSc6Ompz b25iLCAnYicpPC9saXRlcmFsPgorICAgICAgICA8cmV0dXJudmFsdWU+dDwvcmV0dXJudmFsdWU+ CisgICAgICAgPC9wYXJhPgorICAgICAgIDxwYXJhPgorICAgICAgICA8bGl0ZXJhbD5qc29uYl9l eGlzdHMoJ1siYSIsImIiXSc6Ompzb25iLCAnYicpPC9saXRlcmFsPgorICAgICAgICA8cmV0dXJu dmFsdWU+dDwvcmV0dXJudmFsdWU+CisgICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgICA8L3Jv dz4KKworICAgICAgPHJvdz4KKyAgICAgICA8ZW50cnkgcm9sZT0iZnVuY190YWJsZV9lbnRyeSI+ PHBhcmEgcm9sZT0iZnVuY19zaWduYXR1cmUiPgorICAgICAgICA8aW5kZXh0ZXJtPgorICAgICAg ICAgPHByaW1hcnk+anNvbmJfZXhpc3RzX2FueTwvcHJpbWFyeT4KKyAgICAgICAgPC9pbmRleHRl cm0+CisgICAgICAgIDxmdW5jdGlvbj5qc29uYl9leGlzdHNfYW55PC9mdW5jdGlvbj4gKCA8dHlw ZT5qc29uYjwvdHlwZT4gKQorICAgICAgICA8cmV0dXJudmFsdWU+Ym9vbGVhbjwvcmV0dXJudmFs dWU+CisgICAgICAgPC9wYXJhPgorICAgICAgIDxwYXJhPgorICAgICAgICBDaGVja3MgaWYgYW55 IG9mIHRoZSBzdHJpbmdzIGluIHRoZSB0ZXh0IGFycmF5IGV4aXN0IGFzIHRvcC1sZXZlbCBrZXlz IG9yIGFycmF5IGVsZW1lbnRzIHdpdGhpbiB0aGUgCisgICAgICAgIEpTT04gdmFsdWUuIChUaGlz IGlzIGZ1bmN0aW9uYWxseSBlcXVpdmFsZW50IHRvIHRoZSBqc29uYiA8bGl0ZXJhbD4/fDwvbGl0 ZXJhbD4KKyAgICAgICAgb3BlcmF0b3IsIGJ1dCBtYXkgYmUgdXNlZnVsIHRvIGNhbGwgYXMgYSBm dW5jdGlvbiBpbiBzb21lIGNhc2VzLCBsaWtlIHdoZW4gd29ya2luZyB3aXRoIEpEQkMgcHJvdG9j b2wuKQorICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgPGxpdGVyYWw+anNv bmJfZXhpc3RzX2FueSgneyJhIjoxLCAiYiI6MiwgImMiOjN9Jzo6anNvbmIsIGFycmF5WydiJywg J2QnXSk8L2xpdGVyYWw+CisgICAgICAgIDxyZXR1cm52YWx1ZT50PC9yZXR1cm52YWx1ZT4KKyAg ICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgIDwvcm93PgorCisgICAgICA8cm93PgorICAgICAg IDxlbnRyeSByb2xlPSJmdW5jX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJmdW5jX3NpZ25hdHVy ZSI+CisgICAgICAgIDxpbmRleHRlcm0+CisgICAgICAgICA8cHJpbWFyeT5qc29uYl9leGlzdHNf YWxsPC9wcmltYXJ5PgorICAgICAgICA8L2luZGV4dGVybT4KKyAgICAgICAgPGZ1bmN0aW9uPmpz b25iX2V4aXN0c19hbGw8L2Z1bmN0aW9uPiAoIDx0eXBlPmpzb25iPC90eXBlPiApCisgICAgICAg IDxyZXR1cm52YWx1ZT5ib29sZWFuPC9yZXR1cm52YWx1ZT4KKyAgICAgICA8L3BhcmE+CisgICAg ICAgPHBhcmE+CisgICAgICAgIENoZWNrcyBpZiBhbGwgb2YgdGhlIHN0cmluZ3MgaW4gdGhlIHRl eHQgYXJyYXkgZXhpc3QgYXMgdG9wLWxldmVsIGtleXMgb3IgYXJyYXkgZWxlbWVudHMgd2l0aGlu IHRoZSAKKyAgICAgICAgSlNPTiB2YWx1ZS4gKFRoaXMgaXMgZnVuY3Rpb25hbGx5IGVxdWl2YWxl bnQgdG8gdGhlIGpzb25iIDxsaXRlcmFsPj8mYW1wOzwvbGl0ZXJhbD4KKyAgICAgICAgb3BlcmF0 b3IsIGJ1dCBtYXkgYmUgdXNlZnVsIHRvIGNhbGwgYXMgYSBmdW5jdGlvbiBpbiBzb21lIGNhc2Vz LCBsaWtlIHdoZW4gd29ya2luZyB3aXRoIEpEQkMgcHJvdG9jb2wuKQorICAgICAgIDwvcGFyYT4K KyAgICAgICA8cGFyYT4KKyAgICAgICAgPGxpdGVyYWw+anNvbmJfZXhpc3RzX2FsbCgneyJhIjox LCAiYiI6MiwgImMiOjN9Jzo6anNvbmIsIGFycmF5WydiJywgJ2QnXSk8L2xpdGVyYWw+CisgICAg ICAgIDxyZXR1cm52YWx1ZT5mPC9yZXR1cm52YWx1ZT4KKyAgICAgICA8L3BhcmE+CisgICAgICAg PHBhcmE+CisgICAgICAgIDxsaXRlcmFsPmpzb25iX2V4aXN0c19hbGwoJ3siYSI6MSwgImIiOjIs ICJjIjozfSc6Ompzb25iLCBhcnJheVsnYicsICdjJ10pPC9saXRlcmFsPgorICAgICAgICA8cmV0 dXJudmFsdWU+dDwvcmV0dXJudmFsdWU+CisgICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgICA8 L3Jvdz4KICAgICAgPC90Ym9keT4KICAgICA8L3Rncm91cD4KICAgIDwvdGFibGU+Ci0tIAoyLjIw LjEKCg== --00000000000000bca905d66fbe80--