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 1vrM8M-00GngU-1E for pgsql-committers@arkaria.postgresql.org; Sat, 14 Feb 2026 20:20:54 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vrM8K-000J1m-33 for pgsql-committers@arkaria.postgresql.org; Sat, 14 Feb 2026 20:20:52 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vrM5A-000Ef0-1S for pgsql-committers@lists.postgresql.org; Sat, 14 Feb 2026 20:17:36 +0000 Received: from mahout.postgresql.org ([2001:4800:3e1:1::227]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1vrM56-00000000glY-1xh4 for pgsql-committers@lists.postgresql.org; Sat, 14 Feb 2026 20:17:36 +0000 Received: from gemulon.postgresql.org ([2001:4800:3e1:1::198]) by mahout.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vrM53-0029cB-2f for pgsql-committers@lists.postgresql.org; Sat, 14 Feb 2026 20:17:29 +0000 Received: from localhost ([127.0.0.1] helo=gemulon.postgresql.org) by gemulon.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vrM52-000o8y-1U for pgsql-committers@lists.postgresql.org; Sat, 14 Feb 2026 20:17:29 +0000 Content-Type: multipart/mixed; boundary="===============5100000855469633730==" MIME-Version: 1.0 From: Noah Misch To: pgsql-committers@lists.postgresql.org Subject: pgsql: Fix SUBSTRING() for toasted multibyte characters. X-Auto-Response-Suppress: All Auto-Submitted: auto-generated Message-Id: Date: Sat, 14 Feb 2026 20:17:29 +0000 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --===============5100000855469633730== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Rml4IFNVQlNUUklORygpIGZvciB0b2FzdGVkIG11bHRpYnl0ZSBjaGFyYWN0ZXJzLgoKQ29tbWl0 IDFlN2ZlMDZjMTBjMGE4ZGE5ZGQ2MjYxYTZiZThkNDA1ZGMxN2M3MjggY2hhbmdlZApwZ19tYnN0 cmxlbl93aXRoX2xlbigpIHRvIGVyZXBvcnQoRVJST1IpIGlmIHRoZSBpbnB1dCBlbmRzIGluIGFu CmluY29tcGxldGUgY2hhcmFjdGVyLiAgTW9zdCBjYWxsZXJzIHdhbnQgdGhhdC4gIHRleHRfc3Vi c3RyaW5nKCkgZG9lcwpub3QuICBJdCBkZXRvYXN0cyB0aGUgbW9zdCBieXRlcyBpdCBjb3VsZCBw b3NzaWJseSBuZWVkIHRvIGdldCB0aGUKcmVxdWVzdGVkIG51bWJlciBvZiBjaGFyYWN0ZXJzLiAg Rm9yIGV4YW1wbGUsIHRvIGV4dHJhY3QgdXAgdG8gMiBjaGFycwpmcm9tIFVURjgsIGl0IG5lZWRz IHRvIGRldG9hc3QgOCBieXRlcy4gIEluIGEgc3RyaW5nIG9mIDMtYnl0ZSBVVEY4CmNoYXJzLCA4 IGJ5dGVzIHNwYW5zIDIgY29tcGxldGUgY2hhcnMgYW5kIDEgcGFydGlhbCBjaGFyLgoKRml4IHRo aXMgYnkgcmVwbGFjaW5nIHRoaXMgcGdfbWJzdHJsZW5fd2l0aF9sZW4oKSBjYWxsIHdpdGggYSBz dHJpbmcKdHJhdmVyc2FsIHRoYXQgZGlmZmVycyBieSBzdG9wcGluZyB1cG9uIGZpbmRpbmcgYXMg bWFueSBjaGFycyBhcyB0aGUKc3Vic3RyaW5nIGNvdWxkIG5lZWQuICBUaGlzIGFsc28gbWFrZXMg U1VCU1RSSU5HKCkgc3RvcCByYWlzaW5nIGFuCmVuY29kaW5nIGVycm9yIGlmIHRoZSBpbmNvbXBs ZXRlIGNoYXIgaXMgcGFzdCB0aGUgZW5kIG9mIHRoZSBzdWJzdHJpbmcuClRoaXMgaXMgY29uc2lz dGVudCB3aXRoIHRoZSBnZW5lcmFsIHBoaWxvc29waHkgb2YgdGhlIGFib3ZlIGNvbW1pdCwKd2hp Y2ggd2FzIHRvIHJhaXNlIGVycm9ycyBvbiBhIGp1c3QtaW4tdGltZSBiYXNpcy4gIEJlZm9yZSB0 aGUgYWJvdmUKY29tbWl0LCBTVUJTVFJJTkcoKSBuZXZlciByYWlzZWQgYW4gZW5jb2RpbmcgZXJy b3IuCgpTVUJTVFJJTkcoKSBoYXMgbG9uZyBiZWVuIGRldG9hc3RpbmcgZW5vdWdoIGZvciBvbmUg bW9yZSBjaGFyIHRoYW4KbmVlZGVkLCBiZWNhdXNlIGl0IGRpZCBub3QgZGlzdGluZ3Vpc2ggZXhj bHVzaXZlIGFuZCBpbmNsdXNpdmUgZW5kCnBvc2l0aW9uLiAgRm9yIGF2b2lkYW5jZSBvZiBkb3Vi dCwgc3RvcCBkZXRvYXN0aW5nIGV4dHJhLgoKQmFjay1wYXRjaCB0byB2MTQsIGxpa2UgdGhlIGFi b3ZlIGNvbW1pdC4gIEZvciBhcHBsaWNhdGlvbnMgdXNpbmcKU1VCU1RSSU5HKCkgb24gbm9uLUFT Q0lJIGNvbHVtbiB2YWx1ZXMsIGNvbnNpZGVyIGFwcGx5aW5nIHRoaXMgdG8geW91cgpjb3B5IG9m IGFueSBvZiB0aGUgRmVicnVhcnkgMTIsIDIwMjYgcmVsZWFzZXMuCgpSZXBvcnRlZC1ieTogU0FU xYwgS2VudGFyxY0gPHJhbnZpc0BnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBUaG9tYXMgTXVucm8g PHRob21hcy5tdW5yb0BnbWFpbC5jb20+CkJ1ZzogIzE5NDA2CkRpc2N1c3Npb246IGh0dHBzOi8v cG9zdGdyLmVzL20vMTk0MDYtOTg2N2ZkZGRkZDcyNGZjYUBwb3N0Z3Jlc3FsLm9yZwpCYWNrcGF0 Y2gtdGhyb3VnaDogMTQKCkJyYW5jaAotLS0tLS0KUkVMXzE4X1NUQUJMRQoKRGV0YWlscwotLS0t LS0tCmh0dHBzOi8vZ2l0LnBvc3RncmVzcWwub3JnL3BnL2NvbW1pdGRpZmYvNmUwNDVlMWE2ZTNm MWE1NWQzZDI0NmY4MjU4ZjMzMTY0MTBiMjZmNgoKTW9kaWZpZWQgRmlsZXMKLS0tLS0tLS0tLS0t LS0Kc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3ZhcmxlbmEuYyAgICAgICAgfCA2MiArKysrKysrKysr KysrKysrKysrKysrKysrKystLS0tLS0tCnNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZW5jb2Rp bmcub3V0IHwgNDQgKysrKysrKysrKysrKysrKysrKysrKystCnNyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L2VuY29kaW5nLnNxbCAgICAgIHwgMTkgKysrKysrKysrKy0KMyBmaWxlcyBjaGFuZ2VkLCAxMTEg aW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25zKC0pCgo= --===============5100000855469633730==--