pg_idkit
pg_idkit
pg_idkit : multi-tool for generating new/niche universally unique identifiers (ex. UUIDv6, ULID, KSUID)
Overview
| ID | Extension | Package | Version | Category | License | Language |
|---|---|---|---|---|---|---|
| 4500 | pg_idkit
|
pg_idkit
|
0.4.0 |
FUNC
|
Apache-2.0
|
Rust
|
| Attribute | Has Binary | Has Library | Need Load | Has DDL | Relocatable | Trusted |
|---|---|---|---|---|---|---|
--s-d--
|
No
|
Yes
|
No
|
Yes
|
no
|
no
|
| Relationships | |
|---|---|
| See Also | pgx_ulid
pg_uuidv7
pg_hashids
sequential_uuids
uuid-ossp
permuteseq
pg_cardano
pg_base58
|
Packages
| Type | Repo | Version | PG Major Compatibility | Package Pattern | Dependencies |
|---|---|---|---|---|---|
| EXT | PIGSTY
|
0.4.0 |
18
17
16
15
14
|
pg_idkit |
- |
| RPM | PIGSTY
|
0.4.0 |
18
17
16
15
14
|
pg_idkit_$v |
- |
| DEB | PIGSTY
|
0.4.0 |
18
17
16
15
14
|
postgresql-$v-pg-idkit |
- |
| Linux / PG | PG18 | PG17 | PG16 | PG15 | PG14 |
|---|---|---|---|---|---|
el8.x86_64
|
PIGSTY 0.4.0
|
PIGSTY 0.4.0
|
PIGSTY 0.4.0
|
PIGSTY 0.4.0
|
PIGSTY 0.4.0
|
el8.aarch64
|
PIGSTY 0.4.0
|
PIGSTY 0.4.0
|
PIGSTY 0.4.0
|
PIGSTY 0.4.0
|
PIGSTY 0.4.0
|
el9.x86_64
|
PIGSTY 0.4.0
|
PIGSTY 0.4.0
|
PIGSTY 0.4.0
|
PIGSTY 0.4.0
|
PIGSTY 0.4.0
|
el9.aarch64
|
PIGSTY 0.4.0
|
PIGSTY 0.4.0
|
PIGSTY 0.4.0
|
PIGSTY 0.4.0
|
PIGSTY 0.4.0
|
el10.x86_64
|
PIGSTY 0.4.0
|
PIGSTY 0.4.0
|
PIGSTY 0.4.0
|
PIGSTY 0.4.0
|
PIGSTY 0.4.0
|
el10.aarch64
|
PIGSTY 0.4.0
|
PIGSTY 0.4.0
|
PIGSTY 0.4.0
|
PIGSTY 0.4.0
|
PIGSTY 0.4.0
|
d12.x86_64
|
PIGSTY 0.4.0
|
PIGSTY 0.4.0
|
PIGSTY 0.4.0
|
PIGSTY 0.4.0
|
PIGSTY 0.4.0
|
d12.aarch64
|
PIGSTY 0.4.0
|
PIGSTY 0.4.0
|
PIGSTY 0.4.0
|
PIGSTY 0.4.0
|
PIGSTY 0.4.0
|
d13.x86_64
|
PIGSTY 0.4.0
|
PIGSTY 0.4.0
|
PIGSTY 0.4.0
|
PIGSTY 0.4.0
|
PIGSTY 0.4.0
|
d13.aarch64
|
PIGSTY 0.4.0
|
PIGSTY 0.4.0
|
PIGSTY 0.4.0
|
PIGSTY 0.4.0
|
PIGSTY 0.4.0
|
u22.x86_64
|
PIGSTY 0.4.0
|
PIGSTY 0.4.0
|
PIGSTY 0.4.0
|
PIGSTY 0.4.0
|
PIGSTY 0.4.0
|
u22.aarch64
|
PIGSTY 0.4.0
|
PIGSTY 0.4.0
|
PIGSTY 0.4.0
|
PIGSTY 0.4.0
|
PIGSTY 0.4.0
|
u24.x86_64
|
PIGSTY 0.4.0
|
PIGSTY 0.4.0
|
PIGSTY 0.4.0
|
PIGSTY 0.4.0
|
PIGSTY 0.4.0
|
u24.aarch64
|
PIGSTY 0.4.0
|
PIGSTY 0.4.0
|
PIGSTY 0.4.0
|
PIGSTY 0.4.0
|
PIGSTY 0.4.0
|
Source
pig build pkg pg_idkit; # build rpm/debInstall
Make sure PGDG and PIGSTY repo available:
pig repo add pgsql -u # add both repo and update cacheInstall this extension with pig:
pig install pg_idkit; # install via package name, for the active PG version
pig install pg_idkit -v 18; # install for PG 18
pig install pg_idkit -v 17; # install for PG 17
pig install pg_idkit -v 16; # install for PG 16
pig install pg_idkit -v 15; # install for PG 15
pig install pg_idkit -v 14; # install for PG 14Create this extension with:
CREATE EXTENSION pg_idkit;Usage
pg_idkit: multi-tool for generating new/niche universally unique identifiers
CREATE EXTENSION pg_idkit;
SELECT idkit_uuidv7_generate();Available Functions
| Methodology | Function | Description |
|---|---|---|
| UUID v6 | idkit_uuidv6_generate() |
UUID v6 (RFC 4122) |
idkit_uuidv6_generate_uuid() |
UUID v6 as native UUID type | |
idkit_uuidv6_extract_timestamptz(TEXT) |
Extract timestamp from UUID v6 | |
| UUID v7 | idkit_uuidv7_generate() |
UUID v7 (RFC 4122) |
idkit_uuidv7_generate_uuid() |
UUID v7 as native UUID type | |
idkit_uuidv7_extract_timestamptz(TEXT) |
Extract timestamp from UUID v7 | |
| NanoID | idkit_nanoid_generate() |
NanoID |
idkit_nanoid_custom_generate_text() |
NanoID with custom length and alphabet | |
| KSUID | idkit_ksuid_generate() |
K-Sortable UID |
idkit_ksuid_extract_timestamptz(TEXT) |
Extract timestamp from KSUID | |
idkit_ksuidms_generate() |
KSUID with millisecond precision | |
idkit_ksuidms_extract_timestamptz(TEXT) |
Extract timestamp from KSUID-ms | |
| ULID | idkit_ulid_generate() |
Universally Unique Lexicographically Sortable ID |
idkit_ulid_extract_timestamptz(TEXT) |
Extract timestamp from ULID | |
| Timeflake | idkit_timeflake_generate() |
Snowflake + Instagram ID + Firebase PushID |
idkit_timeflake_extract_timestamptz(TEXT) |
Extract timestamp from Timeflake | |
| PushID | idkit_pushid_generate() |
Google Firebase PushID |
| XID | idkit_xid_generate() |
XID |
idkit_xid_extract_timestamptz(TEXT) |
Extract timestamp from XID | |
| CUID | idkit_cuid_generate() |
CUID (deprecated) |
idkit_cuid_extract_timestamptz(TEXT) |
Extract timestamp from CUID | |
| CUID2 | idkit_cuid2_generate() |
CUID2 |
idkit_cuid2_generate_with_len(length) |
CUID2 with custom length | |
| TypeID | idkit_typeid_generate(TEXT) |
TypeID with prefix and UUIDv7 |
idkit_typeid_generate_text(TEXT) |
TypeID as text | |
idkit_typeid_from_uuid_v7(TEXT, TEXT) |
TypeID from a given UUID v7 | |
idkit_typeid_extract_timestamptz(TEXT) |
Extract timestamp from TypeID |
Examples
-- Generate different ID types
SELECT idkit_uuidv7_generate(); -- 018c106f-9304-79bb-b5be-4483b92b036c
SELECT idkit_nanoid_generate(); -- A8jFA0r3NC6FdalR4LEJ0
SELECT idkit_ksuid_generate(); -- 2HMQIBkTJmEN11JI7tvSTMwfYI3
SELECT idkit_ulid_generate(); -- 01HPYV2X17GM5SQP22M3DVFZY3
SELECT idkit_cuid2_generate(); -- clrjx3bwh0000fj3x4c2y1z0s
-- Extract timestamp
SELECT idkit_uuidv7_extract_timestamptz('018c106f-9304-79bb-b5be-4483b92b036c');Last updated on