From 525aedee9f56a455a0b570f6e20c8aad967b0d8f Mon Sep 17 00:00:00 2001 From: Oliver Rice Date: Wed, 5 Feb 2025 09:04:27 -0600 Subject: [PATCH 1/2] move orioledb to extensions schema by default --- migrations/README.md | 7 +- ...616_move_orioledb_to_extensions_schema.sql | 26 +++++ nix/tests/expected/z_17_ext_interface.out | 110 +++++++++--------- 3 files changed, 87 insertions(+), 56 deletions(-) create mode 100644 migrations/db/migrations/20250205144616_move_orioledb_to_extensions_schema.sql diff --git a/migrations/README.md b/migrations/README.md index 19d2bf4b3..fbd80e8d7 100644 --- a/migrations/README.md +++ b/migrations/README.md @@ -80,9 +80,14 @@ Additionally, [supabase/postgres](https://github.com/supabase/postgres/blob/deve ```shell # Start the database server -docker-compose up +cd docker +docker compose up +``` +Then +```shell # create a new migration +cd migrations dbmate new '' ``` diff --git a/migrations/db/migrations/20250205144616_move_orioledb_to_extensions_schema.sql b/migrations/db/migrations/20250205144616_move_orioledb_to_extensions_schema.sql new file mode 100644 index 000000000..259a6b0e5 --- /dev/null +++ b/migrations/db/migrations/20250205144616_move_orioledb_to_extensions_schema.sql @@ -0,0 +1,26 @@ +-- migrate:up +do $$ +declare + ext_schema text; + extensions_schema_exists boolean; +begin + -- check if the "extensions" schema exists + select exists ( + select 1 from pg_namespace where nspname = 'extensions' + ) into extensions_schema_exists; + + if extensions_schema_exists then + -- check if the "orioledb" extension is in the "public" schema + select nspname into ext_schema + from pg_extension e + join pg_namespace n on e.extnamespace = n.oid + where extname = 'orioledb'; + + if ext_schema = 'public' then + execute 'alter extension orioledb set schema extensions'; + end if; + end if; +end $$; + +-- migrate:down + diff --git a/nix/tests/expected/z_17_ext_interface.out b/nix/tests/expected/z_17_ext_interface.out index 37f417f81..45090f6e2 100644 --- a/nix/tests/expected/z_17_ext_interface.out +++ b/nix/tests/expected/z_17_ext_interface.out @@ -1078,41 +1078,41 @@ order by ltree | public | subpath | ltree, integer, integer | ltree ltree | public | text2ltree | text | ltree moddatetime | public | moddatetime | | trigger - orioledb | public | orioledb_commit_hash | | text - orioledb | public | orioledb_compression_max_level | | bigint - orioledb | public | orioledb_evict_pages | relid oid, maxlevel integer | void - orioledb | public | orioledb_get_evicted_trees | OUT datoid oid, OUT relnode oid, OUT root_downlink bigint, OUT file_length bigint | SETOF record - orioledb | public | orioledb_get_index_descrs | OUT datoid oid, OUT reloid oid, OUT relnode oid, OUT refcnt oid | SETOF record - orioledb | public | orioledb_get_table_descrs | OUT datoid oid, OUT reloid oid, OUT relnode oid, OUT refcnt oid | SETOF record - orioledb | public | orioledb_has_retained_undo | | boolean - orioledb | public | orioledb_idx_structure | relid oid, tree_name text, options character varying, depth integer | text - orioledb | public | orioledb_index_description | datoid oid, relid oid, relnode oid, index_type text, OUT name text, OUT description text | record - orioledb | public | orioledb_index_oids | OUT datoid oid, OUT table_reloid oid, OUT table_relnode oid, OUT index_reloid oid, OUT index_relnode oid, OUT index_type text | SETOF record - orioledb | public | orioledb_index_rows | relid oid, OUT total integer, OUT dead integer | record - orioledb | public | orioledb_page_stats | OUT pool_name text, OUT busy_pages bigint, OUT free_pages bigint, OUT dirty_pages bigint, OUT all_pages bigint | SETOF record - orioledb | public | orioledb_recovery_synchronized | | boolean - orioledb | public | orioledb_relation_size | relid oid | bigint - orioledb | public | orioledb_sys_tree_check | num integer, force_map_check boolean | boolean - orioledb | public | orioledb_sys_tree_rows | num integer | SETOF jsonb - orioledb | public | orioledb_sys_tree_structure | num integer, options character varying, depth integer | text - orioledb | public | orioledb_table_description | datoid oid, relid oid, relnode oid | text - orioledb | public | orioledb_table_description | relid oid | text - orioledb | public | orioledb_table_oids | OUT datoid oid, OUT reloid oid, OUT relnode oid | SETOF record - orioledb | public | orioledb_table_pages | relid oid, OUT blkno bigint, OUT level integer, OUT rightlink bigint, OUT hikey jsonb | SETOF record - orioledb | public | orioledb_tableam_handler | internal | table_am_handler - orioledb | public | orioledb_tbl_are_indices_equal | idx_oid1 regclass, idx_oid2 regclass | boolean - orioledb | public | orioledb_tbl_bin_structure | relid oid, print_bytes boolean, depth integer | text - orioledb | public | orioledb_tbl_check | relid oid, force_map_check boolean | boolean - orioledb | public | orioledb_tbl_compression_check | level bigint, relid oid, ranges integer[] | text - orioledb | public | orioledb_tbl_indices | relid oid | text - orioledb | public | orioledb_tbl_structure | relid oid, options character varying, depth integer | text - orioledb | public | orioledb_tree_stat | relid regclass, OUT level integer, OUT count bigint, OUT avgoccupied double precision, OUT avgvacated double precision | SETOF record - orioledb | public | orioledb_ucm_check | | boolean - orioledb | public | orioledb_version | | text - orioledb | public | orioledb_write_pages | relid oid | void - orioledb | public | pg_stopevent_reset | eventname text | boolean - orioledb | public | pg_stopevent_set | eventname text, condition jsonpath | void - orioledb | public | pg_stopevents | OUT stopevent text, OUT condition jsonpath, OUT waiter_pids integer[] | SETOF record + orioledb | extensions | orioledb_commit_hash | | text + orioledb | extensions | orioledb_compression_max_level | | bigint + orioledb | extensions | orioledb_evict_pages | relid oid, maxlevel integer | void + orioledb | extensions | orioledb_get_evicted_trees | OUT datoid oid, OUT relnode oid, OUT root_downlink bigint, OUT file_length bigint | SETOF record + orioledb | extensions | orioledb_get_index_descrs | OUT datoid oid, OUT reloid oid, OUT relnode oid, OUT refcnt oid | SETOF record + orioledb | extensions | orioledb_get_table_descrs | OUT datoid oid, OUT reloid oid, OUT relnode oid, OUT refcnt oid | SETOF record + orioledb | extensions | orioledb_has_retained_undo | | boolean + orioledb | extensions | orioledb_idx_structure | relid oid, tree_name text, options character varying, depth integer | text + orioledb | extensions | orioledb_index_description | datoid oid, relid oid, relnode oid, index_type text, OUT name text, OUT description text | record + orioledb | extensions | orioledb_index_oids | OUT datoid oid, OUT table_reloid oid, OUT table_relnode oid, OUT index_reloid oid, OUT index_relnode oid, OUT index_type text | SETOF record + orioledb | extensions | orioledb_index_rows | relid oid, OUT total integer, OUT dead integer | record + orioledb | extensions | orioledb_page_stats | OUT pool_name text, OUT busy_pages bigint, OUT free_pages bigint, OUT dirty_pages bigint, OUT all_pages bigint | SETOF record + orioledb | extensions | orioledb_recovery_synchronized | | boolean + orioledb | extensions | orioledb_relation_size | relid oid | bigint + orioledb | extensions | orioledb_sys_tree_check | num integer, force_map_check boolean | boolean + orioledb | extensions | orioledb_sys_tree_rows | num integer | SETOF jsonb + orioledb | extensions | orioledb_sys_tree_structure | num integer, options character varying, depth integer | text + orioledb | extensions | orioledb_table_description | datoid oid, relid oid, relnode oid | text + orioledb | extensions | orioledb_table_description | relid oid | text + orioledb | extensions | orioledb_table_oids | OUT datoid oid, OUT reloid oid, OUT relnode oid | SETOF record + orioledb | extensions | orioledb_table_pages | relid oid, OUT blkno bigint, OUT level integer, OUT rightlink bigint, OUT hikey jsonb | SETOF record + orioledb | extensions | orioledb_tableam_handler | internal | table_am_handler + orioledb | extensions | orioledb_tbl_are_indices_equal | idx_oid1 regclass, idx_oid2 regclass | boolean + orioledb | extensions | orioledb_tbl_bin_structure | relid oid, print_bytes boolean, depth integer | text + orioledb | extensions | orioledb_tbl_check | relid oid, force_map_check boolean | boolean + orioledb | extensions | orioledb_tbl_compression_check | level bigint, relid oid, ranges integer[] | text + orioledb | extensions | orioledb_tbl_indices | relid oid | text + orioledb | extensions | orioledb_tbl_structure | relid oid, options character varying, depth integer | text + orioledb | extensions | orioledb_tree_stat | relid regclass, OUT level integer, OUT count bigint, OUT avgoccupied double precision, OUT avgvacated double precision | SETOF record + orioledb | extensions | orioledb_ucm_check | | boolean + orioledb | extensions | orioledb_version | | text + orioledb | extensions | orioledb_write_pages | relid oid | void + orioledb | extensions | pg_stopevent_reset | eventname text | boolean + orioledb | extensions | pg_stopevent_set | eventname text, condition jsonpath | void + orioledb | extensions | pg_stopevents | OUT stopevent text, OUT condition jsonpath, OUT waiter_pids integer[] | SETOF record pageinspect | public | brin_metapage_info | page bytea, OUT magic text, OUT version integer, OUT pagesperrange integer, OUT lastrevmappage bigint | record pageinspect | public | brin_page_type | page bytea | text pageinspect | public | brin_revmap_data | page bytea, OUT pages tid | SETOF tid @@ -4966,26 +4966,26 @@ order by hypopg | public | hypopg_list_indexes | indexrelid hypopg | public | hypopg_list_indexes | schema_name hypopg | public | hypopg_list_indexes | table_name - orioledb | public | orioledb_index | datoid - orioledb | public | orioledb_index | description - orioledb | public | orioledb_index | index_relnode - orioledb | public | orioledb_index | index_reloid - orioledb | public | orioledb_index | index_type - orioledb | public | orioledb_index | name - orioledb | public | orioledb_index | table_relnode - orioledb | public | orioledb_index | table_reloid - orioledb | public | orioledb_index_descr | datoid - orioledb | public | orioledb_index_descr | refcnt - orioledb | public | orioledb_index_descr | relnode - orioledb | public | orioledb_index_descr | reloid - orioledb | public | orioledb_table | datoid - orioledb | public | orioledb_table | description - orioledb | public | orioledb_table | relnode - orioledb | public | orioledb_table | reloid - orioledb | public | orioledb_table_descr | datoid - orioledb | public | orioledb_table_descr | refcnt - orioledb | public | orioledb_table_descr | relnode - orioledb | public | orioledb_table_descr | reloid + orioledb | extensions | orioledb_index | datoid + orioledb | extensions | orioledb_index | description + orioledb | extensions | orioledb_index | index_relnode + orioledb | extensions | orioledb_index | index_reloid + orioledb | extensions | orioledb_index | index_type + orioledb | extensions | orioledb_index | name + orioledb | extensions | orioledb_index | table_relnode + orioledb | extensions | orioledb_index | table_reloid + orioledb | extensions | orioledb_index_descr | datoid + orioledb | extensions | orioledb_index_descr | refcnt + orioledb | extensions | orioledb_index_descr | relnode + orioledb | extensions | orioledb_index_descr | reloid + orioledb | extensions | orioledb_table | datoid + orioledb | extensions | orioledb_table | description + orioledb | extensions | orioledb_table | relnode + orioledb | extensions | orioledb_table | reloid + orioledb | extensions | orioledb_table_descr | datoid + orioledb | extensions | orioledb_table_descr | refcnt + orioledb | extensions | orioledb_table_descr | relnode + orioledb | extensions | orioledb_table_descr | reloid pg_buffercache | public | pg_buffercache | bufferid pg_buffercache | public | pg_buffercache | isdirty pg_buffercache | public | pg_buffercache | pinning_backends From c4e3f10eb7a7b44e75129ed31ab84a51dd10d18c Mon Sep 17 00:00:00 2001 From: Oliver Rice Date: Mon, 10 Feb 2025 09:02:52 -0600 Subject: [PATCH 2/2] update readme --- migrations/README.md | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/migrations/README.md b/migrations/README.md index fbd80e8d7..e756e2ce7 100644 --- a/migrations/README.md +++ b/migrations/README.md @@ -78,20 +78,18 @@ Additionally, [supabase/postgres](https://github.com/supabase/postgres/blob/deve ### Add a Migration +First, start a local postgres server and apply the migrations ```shell -# Start the database server -cd docker -docker compose up +nix run .#dbmate-tool -- --version 15 --flake-url "." ``` -Then +Then create a new migration ```shell -# create a new migration cd migrations dbmate new '' ``` -Then, populate the migration at `./db/migrations/xxxxxxxxx_` and make sure it execute sucessfully with +Then, execute the migration at `./db/migrations/xxxxxxxxx_` and make sure it runs sucessfully with ```shell dbmate up