[PATCH] Expand character set for ltree labels
Garen Torikian <gjtorikian@gmail.com>
From: Garen Torikian <gjtorikian@gmail.com>
To: pgsql-hackers@lists.postgresql.org
Date: 2022-10-04T16:54:46Z
Lists: pgsql-hackers
Attachments
- 0001-Expand-character-set-for-ltree-labels.patch (application/octet-stream) patch 0001
Dear hackers, I am submitting a patch to expand the label requirements for ltree. The current format is restricted to alphanumeric characters, plus _. Unfortunately, for non-English labels, this set is insufficient. Rather than figure out how to expand this set to include characters beyond the ASCII limit, I have instead opted to provide users with some mechanism for storing encoded UTF-8 characters which is widely used: punycode ( https://en.wikipedia.org/wiki/Punycode). The punycode range of characters is the exact same set as the existing ltree range, with the addition of a hyphen (-). Within this system, any human language can be encoded using just A-Za-z0-9-. On top of this, I added support for two more characters: # and ;, which are used for HTML entities. Note that & and % have special significance in the existing ltree logic; users would have to encode items as #20; (rather than %20). This seems a fair compromise. Since the encoding could make a regular slug even longer, I have also doubled the character limit, from 256 to 512. Please let me know if I can provide any more information or changes. Very sincerely, Garen
Commits
-
Allow hyphens in ltree labels
- b1665bf01e5f 16.0 landed
-
Check that xmax didn't commit in freeze check.
- eb5ad4ff05fd 16.0 cited
-
Push lpp variable closer to usage in heapgetpage()
- e351f8541831 16.0 cited
-
tests: Restrict pg_locks queries in advisory_locks.sql to current database
- c3315a7da57b 16.0 cited