hashlib
稳定哈希函数包
概览
| 扩展包名 | 版本 | 分类 | 许可证 | 语言 |
|---|---|---|---|---|
pg_hashlib | 1.1 | UTIL | PostgreSQL | C |
| ID | 扩展名 | Bin | Lib | Load | Create | Trust | Reloc | 模式 |
|---|---|---|---|---|---|---|---|---|
| 4400 | hashlib | 否 | 是 | 否 | 是 | 否 | 是 | - |
| 相关扩展 | xxhash shacrypt cryptint pguecc pgcrypto gzip bzip zstd |
|---|
build-deps: python3-docutils
版本
| 类型 | 仓库 | 版本 | PG 大版本 | 包名 | 依赖 |
|---|---|---|---|---|---|
| EXT | PIGSTY | 1.1 | 1817161514 | pg_hashlib | - |
| RPM | PIGSTY | 1.1 | 1817161514 | pg_hashlib_$v | - |
| DEB | PIGSTY | 1.1 | 1817161514 | postgresql-$v-pg-hashlib | - |
构建
您可以使用 pig build 命令构建 pg_hashlib 扩展的 RPM / DEB 包:
pig build pkg pg_hashlib # 构建 RPM / DEB 包
安装
您可以直接安装 pg_hashlib 扩展包的预置二进制包,首先确保 PGDG 和 PIGSTY 仓库已经添加并启用:
pig repo add pgsql -u # 添加仓库并更新缓存
使用 pig 或者是 apt/yum/dnf 安装扩展:
pig install pg_hashlib; # 当前活跃 PG 版本安装
pig ext install -y pg_hashlib -v 18 # PG 18
pig ext install -y pg_hashlib -v 17 # PG 17
pig ext install -y pg_hashlib -v 16 # PG 16
pig ext install -y pg_hashlib -v 15 # PG 15
pig ext install -y pg_hashlib -v 14 # PG 14
dnf install -y pg_hashlib_18 # PG 18
dnf install -y pg_hashlib_17 # PG 17
dnf install -y pg_hashlib_16 # PG 16
dnf install -y pg_hashlib_15 # PG 15
dnf install -y pg_hashlib_14 # PG 14
apt install -y postgresql-18-pg-hashlib # PG 18
apt install -y postgresql-17-pg-hashlib # PG 17
apt install -y postgresql-16-pg-hashlib # PG 16
apt install -y postgresql-15-pg-hashlib # PG 15
apt install -y postgresql-14-pg-hashlib # PG 14
创建扩展:
CREATE EXTENSION hashlib;
用法
提供实现不会随 PostgreSQL 版本变化的稳定哈希函数。
字符串哈希(32 位)
SELECT hash_string('hello', 'crc32');
SELECT hash_string('hello', 'murmur3');
使用可选的初始值:
SELECT hash_string('hello', 'crc32', 42);
字符串哈希(64 位)
SELECT hash64_string('hello', 'city64');
SELECT hash64_string('hello', 'siphash24');
SELECT hash64_string('hello', 'lookup3');
字符串哈希(128 位)
SELECT hash128_string('hello', 'md5');
SELECT hash128_string('hello', 'city128');
SELECT hash128_string('hello', 'spooky');
整数哈希
SELECT hash_int4(42); -- 32 位整数的 32 位哈希
SELECT hash_int8(42::bigint); -- 64 位整数的 64 位哈希
可用算法
| 算法 | CPU 无关 | 位数 | 描述 |
|---|---|---|---|
crc32 | 是 | 32 | CRC32 |
murmur3 | 否 | 32 | MurmurHash v3 |
md5 | 是 | 128 | MD5 |
city64 | 否 | 64 | CityHash64 |
city128 | 否 | 128 | CityHash128 |
siphash24 | 是 | 64 | SipHash-2-4 |
spooky | 否 | 128 | SpookyHash |
lookup2 | 否 | 64 | Jenkins lookup2 |
lookup3 | 否 | 64 | Jenkins lookup3 CPU 原生字节序 |
lookup3be | 是 | 64 | Jenkins lookup3 大端字节序 |
lookup3le | 是 | 64 | Jenkins lookup3 小端字节序 |
pgsql84 | 否 | 64 | Postgres 8.4+ 中修改的 lookup3 |
整数算法:wang32、wang32mult、jenkins(32 位);wang64、wang64to32(64 位)。所有整数算法都是可逆的(1:1 映射),适合在唯一 ID 上创建随机排序。