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 1vfdbO-003dkP-2U for pgsql-hackers@arkaria.postgresql.org; Tue, 13 Jan 2026 12:34:27 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vfdbM-004itN-2i for pgsql-hackers@arkaria.postgresql.org; Tue, 13 Jan 2026 12:34:25 +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 1vfdbM-004itF-1F for pgsql-hackers@lists.postgresql.org; Tue, 13 Jan 2026 12:34:24 +0000 Received: from mail-ot1-x32c.google.com ([2607:f8b0:4864:20::32c]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vfdbJ-000CVp-1m for pgsql-hackers@postgresql.org; Tue, 13 Jan 2026 12:34:23 +0000 Received: by mail-ot1-x32c.google.com with SMTP id 46e09a7af769-7ce2b17a2e4so4832774a34.3 for ; Tue, 13 Jan 2026 04:34:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tigerdata.com; s=google; t=1768307661; x=1768912461; darn=postgresql.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=npVoll7Ir9LvGCDCK8Rw71YT9//wBKC6/QxfHPtlhy0=; b=Njq9wnl04MJNdl/cCU8YwbfvmkL9oYsZRhVhk2RhNt9sZd5O78njGG6X5837bZf3cU 3Tf5wOKEs94M7fwrKNima/lseq6yd5Y1ecROqNYc6KgodvzMIknE4Hr6cDzC+lgYjdD+ aKoRH6kQNYRQZMqd6Q2q2xdb9g0m8ULuMQjnZAc7ButHit3dWR2EIsUoHHJZjiyXJO+r LdRe8+IcSxDS527wk8Afic/eZMgiiTrQHaytIiWKm6XSQd2zR7XQeiDE7j4N0CqBgDzA vxcQ/tIZz1GDQcHlFn3vKcjVO0qmKGmS6VHDlFsgS+yq+CzV+1+ob9SfpEwz3s3Tp+zg VUpw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768307661; x=1768912461; h=to:subject:message-id:date:from:mime-version:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=npVoll7Ir9LvGCDCK8Rw71YT9//wBKC6/QxfHPtlhy0=; b=p8c1GOHr/0C4r7IF1EbgXKSZigEXfXNqH+QVEeI0Hj+V1twkgnWH5jROlWTxxOxtt1 XS8mORMWAgVBtp5IyNZIkHT5yv8wktZHncXw11axKcB1d+NHN/6zIKlpVjz4y8t1VWrs pcoR+6Y0N3HtYs31TE0S1zJ92dZ+0oaaz3aLBpezBpu+hGSD3L0exVQ1aEmD5q3D2+r5 wAS6m6wGeT4sK0l1EfnG0pVloklXi2/tZhkfppbp19ZE5Nq1hRMnwA2qYUwOaCuE60N0 EDONkLwoTLOfEWXEQB/MvwonBZRCyNwa7IYwnFpOvYGuUh5w1bLn1/AqkujBmjsuTweR XSew== X-Gm-Message-State: AOJu0Yxc6Y/wm9zAnEmhFudS59vl/inIJ8TMvLGldkcxvd33qjYlQpsV O6geiDq5wyWEQ1eKk2eAIFUqyRMvbAAqXPjnS8rL/TFSD3P4OoMp5Gx4gTomGyna0SXdbFWbcU+ oCB4omZVRSFRJIOkO3PUO7IuAMXi24tSbCk9noY1VJeUSN2oiKanQT3ihIF/X X-Gm-Gg: AY/fxX525JvKumV3mQWDXaQ/9IPM9MvExqykQ8Wt+9r4Tpvrk7/iuVayCD5cJX/f72B Ul2JeJA7qnY4eZNkP7nfdNmagHcVXj0FXGT3Y4PyXQ2swkeN/JLbeYvOBoUiN4AvrdH1eqW/t2R EaeDIRXMdX5Sa+7cW7CMGvXKtp6tOpEidsDuGR/0ztHVP6gj249egBnjUCBghV4FvGnUBA0Rtnq odBGB7bTB3Xzjyv3AOQqJ/TKALp330Q2AfK3Q2n7/RLVF/BmxT+I3GgCEz8sXtMv2etWIsNjFj3 6EhYiSk= X-Google-Smtp-Source: AGHT+IFCt9GENiEVA05CxwdtG4U6u0ixzSFI4QAQoOGmcu9HmSF8hMs8S4fJGQThfEEV/70Pa/szAulolYbCxYvJff4= X-Received: by 2002:a05:6830:4392:b0:7b7:59c5:7671 with SMTP id 46e09a7af769-7ce50a998c2mr12168596a34.34.1768307660845; Tue, 13 Jan 2026 04:34:20 -0800 (PST) MIME-Version: 1.0 From: Aleksander Alekseev Date: Tue, 13 Jan 2026 15:34:09 +0300 X-Gm-Features: AZwV_QiRY8yna2UNB6ZdRlwXZPv8hwWoVRK7VJ-1VLQ9f4ocJRvUz63V4JKyU-w Message-ID: Subject: [PATCH] Refactor *_abbrev_convert() functions To: PostgreSQL Development Content-Type: multipart/mixed; boundary="000000000000faad4c06484435aa" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000faad4c06484435aa Content-Type: text/plain; charset="UTF-8" Hi, Now when all Datums are 64-bit values we can simplify the code by using murmurhash64(). This refactoring was previously suggested by John Naylor [1]. [1]: https://postgr.es/m/CANWCAZbMyrijdR0xc-4SqpNJBHMEwRZccBK4fa0aquNpq2Uj7w%40mail.gmail.com -- Best regards, Aleksander Alekseev --000000000000faad4c06484435aa Content-Type: text/x-patch; charset="US-ASCII"; name="v1-0001-Refactor-_abbrev_convert-functions.patch" Content-Disposition: attachment; filename="v1-0001-Refactor-_abbrev_convert-functions.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mkcko8dv0 RnJvbSA2OWYwNDA3Y2UxNjFhZjYyMTY2YjEzZWI1MDQ0NzdkOTVlZDMxMTc2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGVrc2FuZGVyIEFsZWtzZWV2IDxhbGVrc2FuZGVyQHRpZ2Vy ZGF0YS5jb20+CkRhdGU6IFR1ZSwgMTMgSmFuIDIwMjYgMTQ6NTE6MjEgKzAzMDAKU3ViamVjdDog W1BBVENIIHYxXSBSZWZhY3RvciAqX2FiYnJldl9jb252ZXJ0KCkgZnVuY3Rpb25zCgpOb3cgd2hl biBhbGwgRGF0dW1zIGFyZSA2NC1iaXQgdmFsdWVzIHdlIGNhbiBzaW1wbGlmeSB0aGUgY29kZSBi eSB1c2luZwptdXJtdXJoYXNoNjQoKS4KCkF1dGhvcjogQWxla3NhbmRlciBBbGVrc2VldiA8YWxl a3NhbmRlckB0aWdlcmRhdGEuY29tPgpTdWdnZXN0ZWQtYnk6IEpvaG4gTmF5bG9yIDxqb2huY25h eWxvcmxzQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IFRPRE8gRklYTUUKRGlzY3Vzc2lvbjogVE9E TyBGSVhNRQotLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9ieXRlYS5jICAgfCAgNyArLS0tLS0t CiBzcmMvYmFja2VuZC91dGlscy9hZHQvbWFjLmMgICAgIHwgMTEgKysrLS0tLS0tLS0KIHNyYy9i YWNrZW5kL3V0aWxzL2FkdC9uZXR3b3JrLmMgfCAgNiArLS0tLS0KIHNyYy9iYWNrZW5kL3V0aWxz L2FkdC9udW1lcmljLmMgfCAgNSArLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3V1aWQuYyAg ICB8ICA2ICstLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3ZhcmxlbmEuYyB8ICA3ICstLS0t LS0KIDYgZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAzNCBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvYnl0ZWEuYyBiL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9ieXRlYS5jCmluZGV4IGZkNzY2MmQ0MWVlLi5kODgwYjYyNjg4YyAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2J5dGVhLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L2J5dGVhLmMKQEAgLTExMTUsMTIgKzExMTUsNyBAQCBieXRlYV9hYmJyZXZfY29udmVydChE YXR1bSBvcmlnaW5hbCwgU29ydFN1cHBvcnQgc3N1cCkKIAlhZGRIeXBlckxvZ0xvZygmYnNzLT5m dWxsX2NhcmQsIGhhc2gpOwogCiAJLyogSGFzaCBhYmJyZXZpYXRlZCBrZXkgKi8KLQl7Ci0JCXVp bnQzMgkJdG1wOwotCi0JCXRtcCA9IERhdHVtR2V0VUludDMyKHJlcykgXiAodWludDMyKSAoRGF0 dW1HZXRVSW50NjQocmVzKSA+PiAzMik7Ci0JCWhhc2ggPSBEYXR1bUdldFVJbnQzMihoYXNoX3Vp bnQzMih0bXApKTsKLQl9CisJaGFzaCA9ICh1aW50MzIpIG11cm11cmhhc2g2NChEYXR1bUdldFVJ bnQ2NChyZXMpKTsKIAogCWFkZEh5cGVyTG9nTG9nKCZic3MtPmFiYnJfY2FyZCwgaGFzaCk7CiAK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9tYWMuYyBiL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9tYWMuYwppbmRleCBmMTQ2NzVkZWE0MC4uMDY1ODg0NmYyNzQgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9tYWMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQv bWFjLmMKQEAgLTQ5MiwxNyArNDkyLDEyIEBAIG1hY2FkZHJfYWJicmV2X2NvbnZlcnQoRGF0dW0g b3JpZ2luYWwsIFNvcnRTdXBwb3J0IHNzdXApCiAJdXNzLT5pbnB1dF9jb3VudCArPSAxOwogCiAJ LyoKLQkgKiBDYXJkaW5hbGl0eSBlc3RpbWF0aW9uLiBUaGUgZXN0aW1hdGUgdXNlcyB1aW50MzIs IHNvIFhPUiB0aGUgdHdvIDMyLWJpdAotCSAqIGhhbHZlcyB0b2dldGhlciB0byBwcm9kdWNlIHNs aWdodGx5IG1vcmUgZW50cm9weS4gVGhlIHR3byB6ZXJvZWQgYnl0ZXMKLQkgKiB3b24ndCBoYXZl IGFueSBwcmFjdGljYWwgaW1wYWN0IG9uIHRoaXMgb3BlcmF0aW9uLgorCSAqIENhcmRpbmFsaXR5 IGVzdGltYXRpb24uIFRoZSBlc3RpbWF0ZSB1c2VzIHVpbnQzMiwgc28gd2UgaGFzaCB0aGUgZnVs bAorCSAqIDY0LWJpdCB2YWx1ZSBhbmQgdGFrZSB0aGUgbG93ZXIgMzIgYml0cyBvZiB0aGUgcmVz dWx0LgogCSAqLwogCWlmICh1c3MtPmVzdGltYXRpbmcpCiAJewotCQl1aW50MzIJCXRtcDsKLQot CQl0bXAgPSBEYXR1bUdldFVJbnQzMihyZXMpIF4gKHVpbnQzMikgKERhdHVtR2V0VUludDY0KHJl cykgPj4gMzIpOwotCi0JCWFkZEh5cGVyTG9nTG9nKCZ1c3MtPmFiYnJfY2FyZCwgRGF0dW1HZXRV SW50MzIoaGFzaF91aW50MzIodG1wKSkpOworCQlhZGRIeXBlckxvZ0xvZygmdXNzLT5hYmJyX2Nh cmQsICh1aW50MzIpIG11cm11cmhhc2g2NChEYXR1bUdldFVJbnQ2NChyZXMpKSk7CiAJfQogCiAJ LyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9uZXR3b3JrLmMgYi9zcmMvYmFj a2VuZC91dGlscy9hZHQvbmV0d29yay5jCmluZGV4IDNhMjAwMjA5N2RkLi5jMjI2YWY1Y2E4MCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L25ldHdvcmsuYworKysgYi9zcmMvYmFj a2VuZC91dGlscy9hZHQvbmV0d29yay5jCkBAIC03MzksMTEgKzczOSw3IEBAIG5ldHdvcmtfYWJi cmV2X2NvbnZlcnQoRGF0dW0gb3JpZ2luYWwsIFNvcnRTdXBwb3J0IHNzdXApCiAJLyogSGFzaCBh YmJyZXZpYXRlZCBrZXkgKi8KIAlpZiAodXNzLT5lc3RpbWF0aW5nKQogCXsKLQkJdWludDMyCQl0 bXA7Ci0KLQkJdG1wID0gRGF0dW1HZXRVSW50MzIocmVzKSBeICh1aW50MzIpIChEYXR1bUdldFVJ bnQ2NChyZXMpID4+IDMyKTsKLQotCQlhZGRIeXBlckxvZ0xvZygmdXNzLT5hYmJyX2NhcmQsIERh dHVtR2V0VUludDMyKGhhc2hfdWludDMyKHRtcCkpKTsKKwkJYWRkSHlwZXJMb2dMb2coJnVzcy0+ YWJicl9jYXJkLCAodWludDMyKSBtdXJtdXJoYXNoNjQoRGF0dW1HZXRVSW50NjQocmVzKSkpOwog CX0KIAogCXJldHVybiByZXM7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvbnVt ZXJpYy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L251bWVyaWMuYwppbmRleCA4OTFhZTZiYTdm ZS4uNmQ1ZTJhMzY0NGYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9udW1lcmlj LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L251bWVyaWMuYwpAQCAtMjM5NywxMCArMjM5 Nyw3IEBAIG51bWVyaWNfYWJicmV2X2NvbnZlcnRfdmFyKGNvbnN0IE51bWVyaWNWYXIgKnZhciwg TnVtZXJpY1NvcnRTdXBwb3J0ICpuc3MpCiAKIAlpZiAobnNzLT5lc3RpbWF0aW5nKQogCXsKLQkJ dWludDMyCQl0bXAgPSAoKHVpbnQzMikgcmVzdWx0Ci0JCQkJCQkgICBeICh1aW50MzIpICgodWlu dDY0KSByZXN1bHQgPj4gMzIpKTsKLQotCQlhZGRIeXBlckxvZ0xvZygmbnNzLT5hYmJyX2NhcmQs IERhdHVtR2V0VUludDMyKGhhc2hfdWludDMyKHRtcCkpKTsKKwkJYWRkSHlwZXJMb2dMb2coJm5z cy0+YWJicl9jYXJkLCAodWludDMyKSBtdXJtdXJoYXNoNjQocmVzdWx0KSk7CiAJfQogCiAJcmV0 dXJuIE51bWVyaWNBYmJyZXZHZXREYXR1bShyZXN1bHQpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L3V1aWQuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC91dWlkLmMKaW5kZXgg NmVlMzc1MmFjNzguLjg4ODgwMmMzMDEyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9h ZHQvdXVpZC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC91dWlkLmMKQEAgLTM5NiwxMSAr Mzk2LDcgQEAgdXVpZF9hYmJyZXZfY29udmVydChEYXR1bSBvcmlnaW5hbCwgU29ydFN1cHBvcnQg c3N1cCkKIAogCWlmICh1c3MtPmVzdGltYXRpbmcpCiAJewotCQl1aW50MzIJCXRtcDsKLQotCQl0 bXAgPSBEYXR1bUdldFVJbnQzMihyZXMpIF4gKHVpbnQzMikgKERhdHVtR2V0VUludDY0KHJlcykg Pj4gMzIpOwotCi0JCWFkZEh5cGVyTG9nTG9nKCZ1c3MtPmFiYnJfY2FyZCwgRGF0dW1HZXRVSW50 MzIoaGFzaF91aW50MzIodG1wKSkpOworCQlhZGRIeXBlckxvZ0xvZygmdXNzLT5hYmJyX2NhcmQs ICh1aW50MzIpIG11cm11cmhhc2g2NChEYXR1bUdldFVJbnQ2NChyZXMpKSk7CiAJfQogCiAJLyoK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC92YXJsZW5hLmMgYi9zcmMvYmFja2Vu ZC91dGlscy9hZHQvdmFybGVuYS5jCmluZGV4IGM4MDE5MWYwYTIyLi4yODBmMmU2NTg5OCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3ZhcmxlbmEuYworKysgYi9zcmMvYmFja2Vu ZC91dGlscy9hZHQvdmFybGVuYS5jCkBAIC0yMTE1LDEyICsyMTE1LDcgQEAgdmFyc3RyX2FiYnJl dl9jb252ZXJ0KERhdHVtIG9yaWdpbmFsLCBTb3J0U3VwcG9ydCBzc3VwKQogCWFkZEh5cGVyTG9n TG9nKCZzc3MtPmZ1bGxfY2FyZCwgaGFzaCk7CiAKIAkvKiBIYXNoIGFiYnJldmlhdGVkIGtleSAq LwotCXsKLQkJdWludDMyCQl0bXA7Ci0KLQkJdG1wID0gRGF0dW1HZXRVSW50MzIocmVzKSBeICh1 aW50MzIpIChEYXR1bUdldFVJbnQ2NChyZXMpID4+IDMyKTsKLQkJaGFzaCA9IERhdHVtR2V0VUlu dDMyKGhhc2hfdWludDMyKHRtcCkpOwotCX0KKwloYXNoID0gKHVpbnQzMikgbXVybXVyaGFzaDY0 KERhdHVtR2V0VUludDY0KHJlcykpOwogCiAJYWRkSHlwZXJMb2dMb2coJnNzcy0+YWJicl9jYXJk LCBoYXNoKTsKIAotLSAKMi40My4wCgo= --000000000000faad4c06484435aa--