pg_lexo
概览
| ID | 扩展名 | Bin | Lib | Load | Create | Trust | Reloc | 模式 |
|---|---|---|---|---|---|---|---|---|
| 3530 | pg_lexo | 否 | 是 | 否 | 是 | 否 | 否 | - |
Release/package 0.6.1 ships SQL/control version 0.6.0. Objects use the chosen installation schema; the old lexo schema was removed. superuser=false is not trusted=true. PGSTY patches lexo_next for native-type ordering and empty tables, and lexo_rebalance to preserve order independently of text collation.
版本
| 类型 | 仓库 | 版本 | PG 大版本 | 包名 | 依赖 |
|---|---|---|---|---|---|
| EXT | PIGSTY | 0.6.0 | 1817161514 | pg_lexo | - |
| RPM | PIGSTY | 0.6.1 | 1817161514 | pg_lexo_$v | - |
| DEB | PIGSTY | 0.6.1 | 1817161514 | postgresql-$v-pg-lexo | - |
| OS / PG | PG18 | PG17 | PG16 | PG15 | PG14 |
|---|---|---|---|---|---|
| el8.x86_64 | PIGSTY 0.6.1 el8.x86_64.pg18 : pg_lexo_18 pg_lexo_18-0.6.1-1PGSTY.el8.x86_64.rpm
| PIGSTY 0.6.1 el8.x86_64.pg17 : pg_lexo_17 pg_lexo_17-0.6.1-1PGSTY.el8.x86_64.rpm
| PIGSTY 0.6.1 el8.x86_64.pg16 : pg_lexo_16 pg_lexo_16-0.6.1-1PGSTY.el8.x86_64.rpm
| N/A | N/A |
| el8.aarch64 | PIGSTY 0.6.1 el8.aarch64.pg18 : pg_lexo_18 pg_lexo_18-0.6.1-1PGSTY.el8.aarch64.rpm
| PIGSTY 0.6.1 el8.aarch64.pg17 : pg_lexo_17 pg_lexo_17-0.6.1-1PGSTY.el8.aarch64.rpm
| PIGSTY 0.6.1 el8.aarch64.pg16 : pg_lexo_16 pg_lexo_16-0.6.1-1PGSTY.el8.aarch64.rpm
| N/A | N/A |
| el9.x86_64 | PIGSTY 0.6.1 el9.x86_64.pg18 : pg_lexo_18 pg_lexo_18-0.6.1-1PGSTY.el9.x86_64.rpm
| PIGSTY 0.6.1 el9.x86_64.pg17 : pg_lexo_17 pg_lexo_17-0.6.1-1PGSTY.el9.x86_64.rpm
| PIGSTY 0.6.1 el9.x86_64.pg16 : pg_lexo_16 pg_lexo_16-0.6.1-1PGSTY.el9.x86_64.rpm
| N/A | N/A |
| el9.aarch64 | PIGSTY 0.6.1 el9.aarch64.pg18 : pg_lexo_18 pg_lexo_18-0.6.1-1PGSTY.el9.aarch64.rpm
| PIGSTY 0.6.1 el9.aarch64.pg17 : pg_lexo_17 pg_lexo_17-0.6.1-1PGSTY.el9.aarch64.rpm
| PIGSTY 0.6.1 el9.aarch64.pg16 : pg_lexo_16 pg_lexo_16-0.6.1-1PGSTY.el9.aarch64.rpm
| N/A | N/A |
| el10.x86_64 | PIGSTY 0.6.1 el10.x86_64.pg18 : pg_lexo_18 pg_lexo_18-0.6.1-1PGSTY.el10.x86_64.rpm
| PIGSTY 0.6.1 el10.x86_64.pg17 : pg_lexo_17 pg_lexo_17-0.6.1-1PGSTY.el10.x86_64.rpm
| PIGSTY 0.6.1 el10.x86_64.pg16 : pg_lexo_16 pg_lexo_16-0.6.1-1PGSTY.el10.x86_64.rpm
| N/A | N/A |
| el10.aarch64 | PIGSTY 0.6.1 el10.aarch64.pg18 : pg_lexo_18 pg_lexo_18-0.6.1-1PGSTY.el10.aarch64.rpm
| PIGSTY 0.6.1 el10.aarch64.pg17 : pg_lexo_17 pg_lexo_17-0.6.1-1PGSTY.el10.aarch64.rpm
| PIGSTY 0.6.1 el10.aarch64.pg16 : pg_lexo_16 pg_lexo_16-0.6.1-1PGSTY.el10.aarch64.rpm
| N/A | N/A |
| d12.x86_64 | PIGSTY 0.6.1 d12.x86_64.pg18 : postgresql-18-pg-lexo postgresql-18-pg-lexo_0.6.1-1PGSTY~bookworm_amd64.deb
| PIGSTY 0.6.1 d12.x86_64.pg17 : postgresql-17-pg-lexo postgresql-17-pg-lexo_0.6.1-1PGSTY~bookworm_amd64.deb
| PIGSTY 0.6.1 d12.x86_64.pg16 : postgresql-16-pg-lexo postgresql-16-pg-lexo_0.6.1-1PGSTY~bookworm_amd64.deb
| N/A | N/A |
| d12.aarch64 | PIGSTY 0.6.1 d12.aarch64.pg18 : postgresql-18-pg-lexo postgresql-18-pg-lexo_0.6.1-1PGSTY~bookworm_arm64.deb
| PIGSTY 0.6.1 d12.aarch64.pg17 : postgresql-17-pg-lexo postgresql-17-pg-lexo_0.6.1-1PGSTY~bookworm_arm64.deb
| PIGSTY 0.6.1 d12.aarch64.pg16 : postgresql-16-pg-lexo postgresql-16-pg-lexo_0.6.1-1PGSTY~bookworm_arm64.deb
| N/A | N/A |
| d13.x86_64 | PIGSTY 0.6.1 d13.x86_64.pg18 : postgresql-18-pg-lexo postgresql-18-pg-lexo_0.6.1-1PGSTY~trixie_amd64.deb
| PIGSTY 0.6.1 d13.x86_64.pg17 : postgresql-17-pg-lexo postgresql-17-pg-lexo_0.6.1-1PGSTY~trixie_amd64.deb
| PIGSTY 0.6.1 d13.x86_64.pg16 : postgresql-16-pg-lexo postgresql-16-pg-lexo_0.6.1-1PGSTY~trixie_amd64.deb
| N/A | N/A |
| d13.aarch64 | PIGSTY 0.6.1 d13.aarch64.pg18 : postgresql-18-pg-lexo postgresql-18-pg-lexo_0.6.1-1PGSTY~trixie_arm64.deb
| PIGSTY 0.6.1 d13.aarch64.pg17 : postgresql-17-pg-lexo postgresql-17-pg-lexo_0.6.1-1PGSTY~trixie_arm64.deb
| PIGSTY 0.6.1 d13.aarch64.pg16 : postgresql-16-pg-lexo postgresql-16-pg-lexo_0.6.1-1PGSTY~trixie_arm64.deb
| N/A | N/A |
| u22.x86_64 | PIGSTY 0.6.1 u22.x86_64.pg18 : postgresql-18-pg-lexo postgresql-18-pg-lexo_0.6.1-1PGSTY~jammy_amd64.deb
| PIGSTY 0.6.1 u22.x86_64.pg17 : postgresql-17-pg-lexo postgresql-17-pg-lexo_0.6.1-1PGSTY~jammy_amd64.deb
| PIGSTY 0.6.1 u22.x86_64.pg16 : postgresql-16-pg-lexo postgresql-16-pg-lexo_0.6.1-1PGSTY~jammy_amd64.deb
| N/A | N/A |
| u22.aarch64 | PIGSTY 0.6.1 u22.aarch64.pg18 : postgresql-18-pg-lexo postgresql-18-pg-lexo_0.6.1-1PGSTY~jammy_arm64.deb
| PIGSTY 0.6.1 u22.aarch64.pg17 : postgresql-17-pg-lexo postgresql-17-pg-lexo_0.6.1-1PGSTY~jammy_arm64.deb
| PIGSTY 0.6.1 u22.aarch64.pg16 : postgresql-16-pg-lexo postgresql-16-pg-lexo_0.6.1-1PGSTY~jammy_arm64.deb
| N/A | N/A |
| u24.x86_64 | PIGSTY 0.6.1 u24.x86_64.pg18 : postgresql-18-pg-lexo postgresql-18-pg-lexo_0.6.1-1PGSTY~noble_amd64.deb
| PIGSTY 0.6.1 u24.x86_64.pg17 : postgresql-17-pg-lexo postgresql-17-pg-lexo_0.6.1-1PGSTY~noble_amd64.deb
| PIGSTY 0.6.1 u24.x86_64.pg16 : postgresql-16-pg-lexo postgresql-16-pg-lexo_0.6.1-1PGSTY~noble_amd64.deb
| N/A | N/A |
| u24.aarch64 | PIGSTY 0.6.1 u24.aarch64.pg18 : postgresql-18-pg-lexo postgresql-18-pg-lexo_0.6.1-1PGSTY~noble_arm64.deb
| PIGSTY 0.6.1 u24.aarch64.pg17 : postgresql-17-pg-lexo postgresql-17-pg-lexo_0.6.1-1PGSTY~noble_arm64.deb
| PIGSTY 0.6.1 u24.aarch64.pg16 : postgresql-16-pg-lexo postgresql-16-pg-lexo_0.6.1-1PGSTY~noble_arm64.deb
| N/A | N/A |
| u26.x86_64 | PIGSTY 0.6.1 u26.x86_64.pg18 : postgresql-18-pg-lexo postgresql-18-pg-lexo_0.6.1-1PGSTY~resolute_amd64.deb
| PIGSTY 0.6.1 u26.x86_64.pg17 : postgresql-17-pg-lexo postgresql-17-pg-lexo_0.6.1-1PGSTY~resolute_amd64.deb
| PIGSTY 0.6.1 u26.x86_64.pg16 : postgresql-16-pg-lexo postgresql-16-pg-lexo_0.6.1-1PGSTY~resolute_amd64.deb
| N/A | N/A |
| u26.aarch64 | PIGSTY 0.6.1 u26.aarch64.pg18 : postgresql-18-pg-lexo postgresql-18-pg-lexo_0.6.1-1PGSTY~resolute_arm64.deb
| PIGSTY 0.6.1 u26.aarch64.pg17 : postgresql-17-pg-lexo postgresql-17-pg-lexo_0.6.1-1PGSTY~resolute_arm64.deb
| PIGSTY 0.6.1 u26.aarch64.pg16 : postgresql-16-pg-lexo postgresql-16-pg-lexo_0.6.1-1PGSTY~resolute_arm64.deb
| N/A | N/A |
构建
您可以使用 pig build 命令构建 pg_lexo 扩展的 RPM / DEB 包:
安装
您可以直接安装 pg_lexo 扩展包的预置二进制包,首先确保 PGDG 和 PIGSTY 仓库已经添加并启用:
使用 pig 或者是 apt/yum/dnf 安装扩展:
创建扩展:
用法
来源:
pg_lexo 0.6.0 提供 Base62 lexo 类型,用于稳定的用户可控排序。它可以在已有位置之前、之后或之间生成短值,使项目移动时不必重新编号全部行。该类型提供比较操作符,以及默认 B-tree 和哈希操作符类。
核心流程
lexo_first() 从 H 开始。lexo_after(lexo)、lexo_before(lexo) 和 lexo_between(lexo, lexo) 生成相邻位置;lexo_between 的任一参数可以为 NULL,表示开放的一端。输入只能包含 0-9、A-Z 和 a-z,其 ASCII 顺序与该类型的排序一致。
表辅助函数
lexo_next(table, position_column, key_column, key_value) 查找当前最大值并返回下一个位置,可选限定到某个分组。lexo_add_column(table, column) 添加 lexo 列。lexo_rebalance(table, position_column, key_column, key_value) 用均匀分布的位置重写匹配行,并返回更新行数。
这些辅助函数执行动态 SQL,调用者必须拥有相应表权限。重平衡会更新每条选中行,应与应用写入协调执行。如果位置列有唯一约束,应使用可延迟约束,并在重平衡事务中延迟检查,允许更新过程中出现临时重叠。位置生成本身不会预留值:并发会话可能得到相同位置,因此应建立合适的唯一约束,并在冲突时重试或串行化移动。当相邻位置之间(或最小值之前)没有可用 Base62 值时,应先重平衡。
0.6 版本边界
0.6 版移除了专用 lexo 模式。原来的 lexo.lexorank 类型改名为 lexo,lexo.first() 等模式限定函数改为 lexo_first() 等名称。旧示例必须迁移后才能使用。发行包版本 0.6.1 保留 SQL/control 版本 0.6.0,通过 pgrx 0.16.1 面向 PostgreSQL 16–18。Pigsty 软件包为 lexo_next 添加补丁,使用原生排序替代不存在的 max(lexo) 聚合,并让 lexo_rebalance 的顺序不受文本排序规则影响。
这个页面对您有帮助吗?
感谢反馈,我们会据此改进这篇文档。
哪里没有解决?(可选)