Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6,206 changes: 6,206 additions & 0 deletions nix/tests/expected/extensions_sql_interface.out

Large diffs are not rendered by default.

768 changes: 0 additions & 768 deletions nix/tests/expected/postgis_sql_interface.out

This file was deleted.

9 changes: 7 additions & 2 deletions nix/tests/postgresql.conf.in
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
# -----------------------------
# PostgreSQL configuration file

# -----------------------------
#
# This file consists of lines of the form:
Expand Down Expand Up @@ -717,8 +718,9 @@ default_text_search_config = 'pg_catalog.english'

#local_preload_libraries = ''
#session_preload_libraries = ''
shared_preload_libraries = 'auto_explain,pgsodium'
#jit_provider = 'llvmjit' # JIT library to use
shared_preload_libraries = 'pg_stat_statements, pg_stat_monitor, pgaudit, plpgsql, plpgsql_check, pg_cron, pg_net, pgsodium, timescaledb, auto_explain, pg_tle, plan_filter' # (change requires restart)
jit_provider = 'llvmjit' # JIT library to use


# - Other Defaults -

Expand Down Expand Up @@ -793,3 +795,6 @@ shared_preload_libraries = 'auto_explain,pgsodium'
# Add settings for extensions here

pgsodium.getkey_script = '@PGSODIUM_GETKEY_SCRIPT@'

auto_explain.log_min_duration = 10s
cron.database_name = 'postgres'
117 changes: 98 additions & 19 deletions nix/tests/prime.sql
Original file line number Diff line number Diff line change
@@ -1,22 +1,101 @@
CREATE EXTENSION IF NOT EXISTS pgtap;
create role postgres;
create extension address_standardizer;
create extension address_standardizer_data_us;
create extension adminpack;
create extension amcheck;
create extension autoinc;
create extension bloom;
create extension btree_gin;
create extension btree_gist;
create extension citext;
create extension cube;
create extension dblink;
create extension dict_int;
create extension dict_xsyn;
create extension earthdistance;
create extension file_fdw;
create extension fuzzystrmatch;
create extension http;
create extension hstore;
create extension hypopg;
create extension index_advisor;
create extension insert_username;
create extension intagg;
create extension intarray;
create extension isn;
create extension lo;
create extension ltree;
create extension moddatetime;
create extension old_snapshot;
create extension pageinspect;
create extension pg_buffercache;

CREATE EXTENSION IF NOT EXISTS postgis;
CREATE EXTENSION IF NOT EXISTS pgrouting;
CREATE EXTENSION IF NOT EXISTS pgcrypto;
CREATE EXTENSION IF NOT EXISTS pgsodium;
CREATE EXTENSION IF NOT EXISTS supabase_vault;
/*
TODO: Does not enable locally mode
requires a change to postgresql.conf to set
cron.database_name = 'testing'
*/
-- create extension pg_cron;

CREATE EXTENSION IF NOT EXISTS pgjwt;
CREATE EXTENSION IF NOT EXISTS plpgsql_check;
CREATE EXTENSION IF NOT EXISTS plv8;
CREATE EXTENSION IF NOT EXISTS rum;
CREATE EXTENSION IF NOT EXISTS vector;
CREATE EXTENSION IF NOT EXISTS pg_repack;
CREATE EXTENSION IF NOT EXISTS pgroonga;
create extension pg_net;
create extension pg_graphql;
create extension pg_freespacemap;
create extension pg_hashids;
create extension pg_prewarm;
create extension pg_jsonschema;
create extension pg_repack;
create extension pg_stat_monitor;
create extension pg_stat_statements;
create extension pg_surgery;
create extension pg_tle;
create extension pg_trgm;
create extension pg_visibility;
create extension pg_walinspect;
create extension pgaudit;
create extension pgcrypto;
create extension pgtap;
create extension pgjwt;
create extension pgroonga;
create extension pgroonga_database;
create extension pgsodium;
create extension pgrowlocks;
create extension pgstattuple;
create extension plpgsql_check;

/*
TODO: PLs can not be enabled on M1 Macs locally
ERROR: could not load library "/nix/store/..../lib/plv8-3.1.5.so
symbol not found in flat namespace
*/
-- create extension plv8;
-- create extension plcoffee;
-- create extension plls;

create extension postgis;
create extension postgis_raster;
create extension postgis_sfcgal;
create extension postgis_tiger_geocoder;
create extension postgis_topology;
create extension pgrouting; -- requires postgis
create extension postgres_fdw;
create extension rum;
create extension refint;
create extension seg;
create extension sslinfo;
create extension supabase_vault;
create extension tablefunc;
create extension tcn;
create extension timescaledb;
create extension tsm_system_rows;
create extension tsm_system_time;
create extension unaccent;
create extension "uuid-ossp";
create extension vector;
create extension wrappers;
create extension xml2;






CREATE EXTENSION IF NOT EXISTS wrappers;
CREATE EXTENSION IF NOT EXISTS http;
CREATE EXTENSION IF NOT EXISTS pg_graphql;
CREATE EXTENSION IF NOT EXISTS pg_jsonschema;
CREATE EXTENSION IF NOT EXISTS hypopg;
CREATE EXTENSION IF NOT EXISTS index_advisor;
101 changes: 101 additions & 0 deletions nix/tests/sql/extensions_sql_interface.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
/*

The purpose of this test is to monitor the SQL interface exposed
by Postgres extensions so we have to manually review/approve any difference
that emerge as versions change.

*/


/*

List all extensions that are not enabled
If a new entry shows up in this list, that means a new extension has been
added and you should `create extension ...` to enable it in ./nix/tests/prime

*/

select
name
from
pg_available_extensions
where
installed_version is null
order by
name asc;


/*

Monitor relocatability and config of each extension
- lesson learned from pg_cron

*/

select
extname as extension_name,
extrelocatable as is_relocatable
from
pg_extension
order by
extname asc;


/*

Monitor extension public function interface

*/

select
e.extname as extension_name,
n.nspname as schema_name,
p.proname as function_name,
pg_catalog.pg_get_function_identity_arguments(p.oid) as argument_types,
pg_catalog.pg_get_function_result(p.oid) as return_type
from
pg_catalog.pg_proc p
join pg_catalog.pg_namespace n
on n.oid = p.pronamespace
join pg_catalog.pg_depend d
on d.objid = p.oid
join pg_catalog.pg_extension e
on e.oid = d.refobjid
where
d.deptype = 'e'
order by
e.extname,
n.nspname,
p.proname,
pg_catalog.pg_get_function_identity_arguments(p.oid);

/*

Monitor extension public table/view/matview/index interface

*/

select
e.extname as extension_name,
n.nspname as schema_name,
pc.relname as entity_name,
pa.attname
from
pg_catalog.pg_class pc
join pg_catalog.pg_namespace n
on n.oid = pc.relnamespace
join pg_catalog.pg_depend d
on d.objid = pc.oid
join pg_catalog.pg_extension e
on e.oid = d.refobjid
left join pg_catalog.pg_attribute pa
on pa.attrelid = pc.oid
and pa.attnum > 0
and not pa.attisdropped
where
d.deptype = 'e'
and pc.relkind in ('r', 'v', 'm', 'i')
order by
e.extname,
pc.relname,
pa.attname;
20 changes: 0 additions & 20 deletions nix/tests/sql/postgis_sql_interface.sql

This file was deleted.

Loading