Managing Extensions
1. Listing Available Extensions
SELECT name , default_version, comment FROM pg_available_extensions ORDER BY name ;
2. Listing Installed Extensions
\dx
SELECT extname, extversion FROM pg_extension;
3. Installing Extension
CREATE EXTENSION IF NOT EXISTS pg_trgm;
4. Creating Extension in Schema
CREATE SCHEMA ext ;
CREATE EXTENSION pgcrypto WITH SCHEMA ext;
5. Using uuid-ossp Extension
CREATE EXTENSION "uuid-ossp" ;
SELECT uuid_generate_v4();
-- PG 13+ also has built-in gen_random_uuid()
6. Using pgcrypto Extension
SELECT crypt( 'pw' , gen_salt( 'bf' , 12 )); -- bcrypt
SELECT encode( digest ( 'hello' , 'sha256' ), 'hex' );
SELECT encode(hmac( 'msg' , 'key' , 'sha256' ), 'hex' );
7. Using pg_trgm Extension
SELECT similarity( 'postgresql' , 'postgrez' );
SELECT * FROM customers WHERE full_name % 'jon smyth' ;
CREATE INDEX customers_name_trgm ON customers USING gin (full_name gin_trgm_ops);
8. Using hstore Extension
CREATE EXTENSION hstore;
SELECT 'a=>1, b=>2' ::hstore -> 'a' ;
-- Today: prefer JSONB for new designs
9. Using citext Extension
CREATE EXTENSION citext;
CREATE TABLE users (email citext UNIQUE ); -- case-insensitive equality
10. Using ltree Extension
CREATE EXTENSION ltree;
SELECT 'a.b.c' ::ltree < @ 'a.b' ; -- true (descendant)
11. Using pg_stat_statements Extension
-- postgresql.conf: shared_preload_libraries = 'pg_stat_statements'
CREATE EXTENSION pg_stat_statements;
SELECT queryid, calls, total_exec_time, mean_exec_time, query
FROM pg_stat_statements ORDER BY total_exec_time DESC LIMIT 20 ;
12. Using PostGIS Extension
CREATE EXTENSION postgis;
SELECT ST_AsText(ST_Point( - 122 . 42 , 37 . 77 ));
SELECT * FROM shops
WHERE ST_DWithin( location , ST_MakePoint( - 122 , 37 ):: geography , 1000 );
13. Updating Extension
ALTER EXTENSION pg_trgm UPDATE ;
ALTER EXTENSION pg_trgm UPDATE TO '1.6' ;
14. Dropping Extension
DROP EXTENSION IF EXISTS pg_trgm CASCADE;
Common Extension Purpose
pg_trgm Trigram similarity, fuzzy LIKE
pgcrypto Hashing, encryption
pg_stat_statements Query telemetry
postgis Geospatial
pgvector Vector similarity (AI/ML)
citext Case-insensitive text