RPG-18 / pg_ulid

Universally Unique Lexicographically Sortable Identifier generate for PostgreSQL
MIT License
11 stars 0 forks source link

Universally Unique Lexicographically Sortable Identifier generate for PostgreSQL

Extension for generate ULIDs.

Usage

Function Return Type Example Result
ulid_generate() uuid select ulid_generate() 0177a26f-6db1-11bf-54e2-e0f29ca6fc72
ulid_to_string(id uuid) text select ulid_to_string(ulid_generate()) 01EZ37SMZRKB68B5CPZZ56MBQQ
ulid_from_string(id text) uuid select ulid_from_string('01EZ37SMZRKB68B5CPZZ56MBQQ') 0177c67c-d3f8-9acc-8595-96ffca6a2ef7

Build

mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release ..
make
make install

Examples

CREATE EXTENSION ulid;
-- ...
CREATE TABLE foo
(
    id uuid default ulid_generate() primary key,
    value bigint not null
);
-- ...
INSERT INTO foo(value) SELECT generate_series(1, 1000) as value ;
-- ...
SELECT ulid_to_string(id), value FROM foo ORDER BY id LIMIT 10;

Build in docker

docker build -f Dockerfile.debian -t deb .
sudo find /var/lib/docker/ -name pg-ulid_1.1-1_amd64.deb -type f | xargs sudo ls -hrt | tail -1 | xargs  -i  sudo cp -v  '{}' .