Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w5PV4-003Dxv-1G for pgsql-hackers@arkaria.postgresql.org; Wed, 25 Mar 2026 14:46:26 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w5PV2-00EV27-1G for pgsql-hackers@arkaria.postgresql.org; Wed, 25 Mar 2026 14:46:24 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w5PV1-00EV1x-35 for pgsql-hackers@lists.postgresql.org; Wed, 25 Mar 2026 14:46:24 +0000 Received: from mail-lj1-x22f.google.com ([2a00:1450:4864:20::22f]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w5PV0-00000000yw5-2vVI for pgsql-hackers@lists.postgresql.org; Wed, 25 Mar 2026 14:46:23 +0000 Received: by mail-lj1-x22f.google.com with SMTP id 38308e7fff4ca-38a2e62b893so19886311fa.1 for ; Wed, 25 Mar 2026 07:46:22 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1774449981; cv=none; d=google.com; s=arc-20240605; b=hJJa6W5kRlu8/JlMxtXp6ihdpDaOAuxwn7/UqCatYCSIj2TZY+q94cwymNpXZM2am1 bPtOFW4MlMD0Y1/mMtJIuOncdQRAzzGgHo2iAemNhP/l68Mun46E1InVuuuGO6X8qRA8 Q5IWD9+IqBm8ndnvzOg+TdYW/eyLoNko+R1MHqaviOMY5E5b2+2TKU+gCyUcf5SAg/Ov ctHIBRrB66urucwxbgEeMrrWFbW5m/CoKCdiduFHt3UJC/8N5KIJzBxvOTOsVtSIKEul PcBfp8K9VmlaxO0swQJr00sXpeM84wtLEiwah0DL/H6e4H+vjeaHsr8XpE9ODP6slgzW 1Kvw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:subject:message-id:date:from:in-reply-to:references:mime-version :dkim-signature; bh=BspfxzJrPvGfZCmq/G4Pws/bIKMMOJ0+IUOHwf6YILc=; fh=XweXJleylVc32+ynEzR0D96eEXt+AWWa5Z5zup8DRok=; b=Ckg46H9fkEJ3CCU3FvtCvHSKdKznyJqYURd1UO2zH65f70ZWDBr+RQtr9UGQsQMt0t FUXbJV3XX+TSLfx8bBtVTyCvLP3361z39swFwVUkYeySjh8TEFPYlfwQUbod2ONJE4nW Je/lkKhOVSA/v+CSPDDaipJTevPaKbFdHdw8AOtqgJ+fME/vhztQ4O8+1MsfGpwJxuxF fBWn+J4A2oFGSqq/bHk5t74hZloCBoUklRJ8YNciuhQPCh0TIx4sLBf3Z3vQSHd/aY/Z /LQya6PhLtiYXpl+aQh81K51msGHe2qYqeboHKHzz8Tzuvk7/3G2TXysYB2JL/1f5/Fx P4iw==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1774449981; x=1775054781; darn=lists.postgresql.org; h=cc:subject:message-id:date:from:in-reply-to:references:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=BspfxzJrPvGfZCmq/G4Pws/bIKMMOJ0+IUOHwf6YILc=; b=qWiU+uUPIWNIdGn5tHwyd8sFafeYV+1VtQjgFDQr5WlZUigQqrZ60Soa3dJrE1RTL5 jDSaifrvjwMHmNApxCwx3V1+TbxVOIZ9LyjUBG8pnVNgGu9SRp1U53FlGY2wtDbFCIFi k1R3KfwDASt4rfffBBIEMCV/8wX048cnxt+evnmurBrQwePKWS1P/nKoXb6jhRF7BkcO +191wSbUboNuIWcltwovOIHFM1pegprMhKYXM2TDnX9dkTem6Gl2ryTuG3AqEyKn8UDA djVP4vfUolxgU3/atZ4AuzwPLLo0CsTbYns/C2RFOCztDLfFjZ2AWwzpOUeRHTQPf34q zAXA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774449981; x=1775054781; h=cc:subject:message-id:date:from:in-reply-to:references:mime-version :x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=BspfxzJrPvGfZCmq/G4Pws/bIKMMOJ0+IUOHwf6YILc=; b=D2vQ9V7HqfscYimAmJOaAPfSIoOIV4tlhMYPW2QsOKd/zgjW2UzywplczISysCrRQP sd0aAFCTNpmDSACRLndn4U6uYbCernrt+feQn4fojTNUMYveHlhrfaxxeIPtw6rDEHA9 8CP4ZAoYZBm1nq61pZJmk58K1JCOGZ8pJ7opgDhQMMd5b4cJgEBZL65cGI+yg1cksAzW yjRK3rely2iGEgcvPPYz9m4ac1SZeV7xjkv5u52eo8X7fV6H5Jvc47K5NWDbnnN6PjAr pwbUyIvm6BQ/p+fGsP4NmB8a6MsbZzpxaCR/VFxfc/nuyCs12EixnESHRRbLKAQKKri9 PIZg== X-Forwarded-Encrypted: i=1; AJvYcCV2lAJ3SHCnd9pKwTlVRnSOtL/mkix2Nxu6LiwgE7hIYRey7oZxVkSUAUWn8hXCBpey6meTxLxaPRW7BhRG@lists.postgresql.org X-Gm-Message-State: AOJu0Yw2XAoF4Eui11KZr9b1YRivm+oYO+vBiZwenGaa27IV6uXk2Oy3 3/eh1qltJFxBAO3YVjPILOMB/IkhSWRkxx5xcie5obvv4bRHrQDZHo0J6rUDP29Kgy1rgLbkfNZ 4vdAKEb5QKxqYjTZuBIF4rEHDIE0Y3Do= X-Gm-Gg: ATEYQzwqKfeDTqmUuGUQx0TYGN64SxTwkYGHb2UWNpIecBQNgRK013ocHWLfG/BUvwp k8KQCVPBXgSOhBS7Jq4Ktsx+bKeAozZ3IQl2rVvn0RDM8NxuJSaBR3Yl93QssSWeZzoHGliz3oP TovS+Wnq/mQg+NhJSb6Ma15LeG4bN8nlDPGOH08RLwkuPlY9iSbIYHRCo2Axc3buXJ/R1IOyORP Mp0HyIYTAGowObV+yiq+R/c1AYHUAK5zRppq/OauSegM7TcE28QkhMuQGj+wweR1Q7LJnRuQCgc 8De5Qz0Uungp93zdUVsnuJ6dMJhQ7AMQJzEMpA5nSwpI7PQTSeabsywsCEpWuw6FT2tZAW7WtD0 Zj67o X-Received: by 2002:a05:651c:989:b0:38b:d004:3f27 with SMTP id 38308e7fff4ca-38c4318f55amt15079371fa.21.1774449980212; Wed, 25 Mar 2026 07:46:20 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Matthias van de Meent Date: Wed, 25 Mar 2026 15:46:08 +0100 X-Gm-Features: AQROBzBHwne8DKIOp_brHn5dAeQn_Y_INgGqGjT5fs9XAWyRrNEinS_1zu7F_dg Message-ID: Subject: Re: SQL-level pg_datum_image_equal Cc: jian he , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000bf5646064dda5422" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000bf5646064dda5422 Content-Type: text/plain; charset="UTF-8" On Mon, 22 Dec 2025 at 16:25, Matthias van de Meent wrote: > > On Sat, 20 Dec 2025 at 14:15, jian he wrote: > > maybe Table 9.76 > > (https://www.postgresql.org/docs/current/functions-info.html#FUNCTIONS-INFO-CATALOG) > > is the right place for this function. > > I think table 9.3 > (https://www.postgresql.org/docs/18/functions-comparison.html#FUNCTIONS-COMPARISON-FUNC-TABLE) > makes more sense, as this is more a compare function than one that > exposes catalog information about the input. Attached is v2, which adds the new function to the docs, in addition to rebasing the patch onto master. Kind regards, Matthias van de Meent Databricks (https://www.databricks.com) --000000000000bf5646064dda5422 Content-Type: application/octet-stream; name="v2-0001-Add-SQL-level-datum-equality-tests.patch" Content-Disposition: attachment; filename="v2-0001-Add-SQL-level-datum-equality-tests.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mn65jotr0 RnJvbSBmZWJmOGQ2NDE1NGJkZDQwOTk3Mzk4ZmIwZmY3OWMyN2I3MjZmYzcyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXR0aGlhcyB2YW4gZGUgTWVlbnQgPGJvZWtld3VybStwb3N0 Z3Jlc0BnbWFpbC5jb20+CkRhdGU6IFdlZCwgMTAgRGVjIDIwMjUgMTg6NDU6MTkgKzAxMDAKU3Vi amVjdDogW1BBVENIIHYyXSBBZGQgU1FMLWxldmVsIGRhdHVtIGVxdWFsaXR5IHRlc3RzCgpUaGlz IGVuYWJsZXMgaW1wcm92ZWQgcGVyZm9ybWFuY2UgZm9yIHVzZXJzIHRoYXQgbmVlZCB0byB0ZXN0 IGZvcgpleGFjdCBieXRld2lzZSBkaWZmZXJlbmNlcyBpbiBTUUw7IGUuZy4gdG8gc2VlIGlmIGFu IFVQREFURSBpcwpyZWFsbHkgbmVjZXNzYXJ5IHdpdGggYSBzZXQgb2YgZXh0ZXJuYWxseSBwcm92 aWRlZCB2YWx1ZXMuCgpBIHdvcmthcm91bmQgYXJvdW5kIHRoaXMgbGltaXRhdGlvbiB3YXMgb2Z0 ZW4gcG9zc2libGUsIGJ1dCBubwpnZW5lcmljIG1ldGhvZCB3YXMgYXZhaWxhYmxlIHRoYXQgd2Fz IHRoaXMgcGVyZm9ybWFudCwgb3IKd29ya2VkIGZvciBhbGwgdHlwZXMuCi0tLQogZG9jL3NyYy9z Z21sL2Z1bmMvZnVuYy1jb21wYXJpc29uLnNnbWwgICB8IDIxICsrKysrKysrKysKIHNyYy9iYWNr ZW5kL3V0aWxzL2FkdC9wc2V1ZG90eXBlcy5jICAgICAgfCA1MSArKysrKysrKysrKysrKysrKysr KysrKysKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgICAgICAgICAgfCAgNyArKysr CiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL29wcl9zYW5pdHkub3V0IHwgIDEgKwogNCBmaWxl cyBjaGFuZ2VkLCA4MCBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2Z1 bmMvZnVuYy1jb21wYXJpc29uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvZnVuYy9mdW5jLWNvbXBhcmlz b24uc2dtbAppbmRleCBlY2IxZDg5NDYzYS4uMmY5NzBmZWNkYTMgMTAwNjQ0Ci0tLSBhL2RvYy9z cmMvc2dtbC9mdW5jL2Z1bmMtY29tcGFyaXNvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9mdW5j L2Z1bmMtY29tcGFyaXNvbi5zZ21sCkBAIC02NTMsNiArNjUzLDI3IEBAIFNFTEVDVCBOT1QoUk9X KHRhYmxlLiopIElTIE5PVCBOVUxMKSBGUk9NIFRBQkxFOyAtLSBkZXRlY3QgYXQgbGVhc3Qgb25l IG51bGwgaW4KICAgICAgICAgPHJldHVybnZhbHVlPjE8L3JldHVybnZhbHVlPgogICAgICAgIDwv cGFyYT48L2VudHJ5PgogICAgICAgPC9yb3c+CisKKyAgICAgIDxyb3c+CisgICAgICAgPGVudHJ5 IHJvbGU9ImZ1bmNfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImZ1bmNfc2lnbmF0dXJlIj4KKyAg ICAgICAgPGluZGV4dGVybT4KKyAgICAgICAgIDxwcmltYXJ5PnBnX2RhdHVtX2ltYWdlX2VxdWFs PC9wcmltYXJ5PgorICAgICAgICA8L2luZGV4dGVybT4KKyAgICAgICAgPGZ1bmN0aW9uPnBnX2Rh dHVtX2ltYWdlX2VxdWFsPC9mdW5jdGlvbj4gKCA8dHlwZT5hbnllbGVtZW50PC90eXBlPiwgPHR5 cGU+YW55ZWxlbWVudDwvdHlwZT4gKQorICAgICAgICA8cmV0dXJudmFsdWU+Ym9vbGVhbjwvcmV0 dXJudmFsdWU+CisgICAgICAgPC9wYXJhPgorICAgICAgIDxwYXJhPgorICAgICAgICBSZXR1cm5z IHdoZXRoZXIgdGhlIHZhbHVlcyBoYXZlIHRoZSBzYW1lIGV4YWN0IGJpbmFyeSByZXByZXNlbnRh dGlvbi4KKyAgICAgICA8L3BhcmE+CisgICAgICAgPHBhcmE+CisgICAgICAgIDxsaXRlcmFsPnBn X2RhdHVtX2ltYWdlX2VxdWFsKCcxLjAnOjpudW1lcmljLCAnMS4wJzo6bnVtZXJpYyk8L2xpdGVy YWw+CisgICAgICAgIDxyZXR1cm52YWx1ZT50cnVlPC9yZXR1cm52YWx1ZT4KKyAgICAgICA8L3Bh cmE+CisgICAgICAgPHBhcmE+CisgICAgICAgIDxsaXRlcmFsPnBnX2RhdHVtX2ltYWdlX2VxdWFs KCcxLjAnOjpudW1lcmljLCAnMS4wMCc6Om51bWVyaWMpPC9saXRlcmFsPgorICAgICAgICA8cmV0 dXJudmFsdWU+ZmFsc2U8L3JldHVybnZhbHVlPgorICAgICAgIDwvcGFyYT48L2VudHJ5PgorICAg ICAgPC9yb3c+CiAgICAgIDwvdGJvZHk+CiAgICAgPC90Z3JvdXA+CiAgICA8L3RhYmxlPgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BzZXVkb3R5cGVzLmMgYi9zcmMvYmFja2Vu ZC91dGlscy9hZHQvcHNldWRvdHlwZXMuYwppbmRleCA0NTgxYzRiMTY5Ny4uOTNhNjdlNTMwMjYg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wc2V1ZG90eXBlcy5jCisrKyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9wc2V1ZG90eXBlcy5jCkBAIC0yMyw3ICsyMyw5IEBACiAjaW5j bHVkZSAicG9zdGdyZXMuaCIKIAogI2luY2x1ZGUgImxpYnBxL3BxZm9ybWF0LmgiCisjaW5jbHVk ZSAidXRpbHMvZGF0dW0uaCIKICNpbmNsdWRlICJ1dGlscy9mbWdycHJvdG9zLmgiCisjaW5jbHVk ZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAKIAogLyoKQEAgLTM3NSwzICszNzcsNTIgQEAgUFNFVURP VFlQRV9EVU1NWV9JT19GVU5DUyhhbnllbGVtZW50KTsKIFBTRVVET1RZUEVfRFVNTVlfSU9fRlVO Q1MoYW55bm9uYXJyYXkpOwogUFNFVURPVFlQRV9EVU1NWV9JT19GVU5DUyhhbnljb21wYXRpYmxl KTsKIFBTRVVET1RZUEVfRFVNTVlfSU9fRlVOQ1MoYW55Y29tcGF0aWJsZW5vbmFycmF5KTsKKwor LyoKKyAqIENvbXBhcmVzIHR3byBkYXR1bXMgb2YgdGhlIHNhbWUgKGFueSkgdHlwZSwgYW5kIHJl dHVybnMgd2hldGhlciB0aGV5IGhhdmUKKyAqIHRoZSBzYW1lIGJpbmFyeSByZXByZXNlbnRhdGlv bi4KKyAqLworRGF0dW0KK3BnX2RhdHVtX2ltYWdlX2VxdWFsKFBHX0ZVTkNUSU9OX0FSR1MpCit7 CisJYm9vbAkJZXE7CisKKwlpZiAoUEdfQVJHSVNOVUxMKDApICE9IFBHX0FSR0lTTlVMTCgxKSkK Kwl7CisJCWVxID0gZmFsc2U7CisJfQorCWVsc2UgaWYgKFBHX0FSR0lTTlVMTCgwKSkKKwl7CisJ CS8qIGJvdGggTlVMTCAqLworCQllcSA9IHRydWU7CisJfQorCWVsc2UKKwl7CisJCU9pZAkJdHlw OworCQlEYXR1bQlhcmcwOworCQlEYXR1bQlhcmcxOworCQlib29sCXR5cGJ5dmFsOworCQljaGFy CXR5cGFsaWduOworCQlpbnQxNgl0eXBsZW47CisKKwkJdHlwID0gZ2V0X2ZuX2V4cHJfYXJndHlw ZShmY2luZm8tPmZsaW5mbywgMCk7CisKKwkJaWYgKCFPaWRJc1ZhbGlkKHR5cCkpCisJCXsKKwkJ CWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9S VEVEKSwKKwkJCQkJIGVycm1zZygiY291bGQgbm90IGRldGVybWluZSB0eXBlIikpKTsKKwkJfQor CisJCUFzc2VydCh0eXAgPT0gZ2V0X2ZuX2V4cHJfYXJndHlwZShmY2luZm8tPmZsaW5mbywgMSkp OworCisJCWFyZzAgPSBQR19HRVRBUkdfREFUVU0oMCk7CisJCWFyZzEgPSBQR19HRVRBUkdfREFU VU0oMSk7CisKKwkJZ2V0X3R5cGxlbmJ5dmFsYWxpZ24odHlwLCAmdHlwbGVuLCAmdHlwYnl2YWws ICZ0eXBhbGlnbik7CisKKwkJZXEgPSBkYXR1bV9pbWFnZV9lcShhcmcwLCBhcmcxLCB0eXBieXZh bCwgdHlwbGVuKTsKKwl9CisKKwlQR19SRVRVUk5fQk9PTChlcSk7Cit9CmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19w cm9jLmRhdAppbmRleCAwMTE4ZTk3MGRkYS4uZWE1OWVkZTk2NjAgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19w cm9jLmRhdApAQCAtMTI4NTEsNCArMTI4NTEsMTEgQEAKICAgcHJvbmFtZSA9PiAnaGFzaG9pZDhl eHRlbmRlZCcsIHByb3JldHR5cGUgPT4gJ2ludDgnLAogICBwcm9hcmd0eXBlcyA9PiAnb2lkOCBp bnQ4JywgcHJvc3JjID0+ICdoYXNob2lkOGV4dGVuZGVkJyB9LAogCit7IG9pZCA9PiAnOTIwMCcs CisgIGRlc2NyID0+ICd0ZXN0IGlmIHR3byB2YWx1ZXMgaGF2ZSB0aGUgc2FtZSBiaW5hcnkgcmVw cmVzZW50YXRpb24nLAorICBwcm9uYW1lID0+ICdwZ19kYXR1bV9pbWFnZV9lcXVhbCcsIHByb2lz c3RyaWN0ID0+ICdmJywKKyAgcHJvbGVha3Byb29mID0+ICd0JywgcHJvcmV0dHlwZSA9PiAnYm9v bCcsCisgIHByb2FyZ3R5cGVzID0+ICdhbnllbGVtZW50IGFueWVsZW1lbnQnLAorICBwcm9zcmMg PT4gJ3BnX2RhdHVtX2ltYWdlX2VxdWFsJyB9LAorCiBdCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL29wcl9zYW5pdHkub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9vcHJfc2FuaXR5Lm91dAppbmRleCA2ZmY0ZDdlZTkwMS4uZGYyNTU1MWM0OGQgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvb3ByX3Nhbml0eS5vdXQKKysrIGIvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9vcHJfc2FuaXR5Lm91dApAQCAtODg3LDYgKzg4Nyw3IEBAIG9p ZDhsZShvaWQ4LG9pZDgpCiBvaWQ4Z3Qob2lkOCxvaWQ4KQogb2lkOGdlKG9pZDgsb2lkOCkKIGJ0 b2lkOGNtcChvaWQ4LG9pZDgpCitwZ19kYXR1bV9pbWFnZV9lcXVhbChhbnllbGVtZW50LGFueWVs ZW1lbnQpCiAtLSBDaGVjayB0aGF0IGZ1bmN0aW9ucyB3aXRob3V0IGFyZ3VtZW50IGFyZSBub3Qg bWFya2VkIGFzIGxlYWtwcm9vZi4KIFNFTEVDVCBwMS5vaWQ6OnJlZ3Byb2NlZHVyZQogRlJPTSBw Z19wcm9jIHAxIEpPSU4gcGdfbmFtZXNwYWNlIHBuCi0tIAoyLjUwLjEgKEFwcGxlIEdpdC0xNTUp Cgo= --000000000000bf5646064dda5422--