-- complain if script is sourced in psql, rather than via CREATE EXTENSION \echo Use "CREATE EXTENSION pg_mockable" to load this file. \quit -------------------------------------------------------------------------------------------------------------- do $$ declare _extension_name name := 'pg_mockable'; _setting_name text := _extension_name || '.readme_url'; _ddl_cmd_to_set_pg_readme_url text := format( 'ALTER DATABASE %I SET %s = %L' ,current_database() ,_setting_name ,'https://github.com/bigsmoke/' || _extension_name || '/blob/master/README.md' ); begin if (select rolsuper from pg_roles where rolname = current_user) then execute _ddl_cmd_to_set_pg_readme_url; else -- We say `superuser = false` in the control file; so let's just whine a little instead of crashing. raise warning using message = format( 'Because you''re installing the `%I` extension as non-superuser and because you' || ' are also not the owner of the `%I` DB, the database-level `%I` setting has' || ' not been set.' ,_extension_name ,current_database() ,_setting_name ) ,detail = 'Settings of the form `.readme_url` are used by `pg_readme` to' || ' cross-link between extensions their README files.' ,hint = 'If you want full inter-extension README cross-linking, you can ask your friendly' || E' neighbourhood DBA to execute the following statement:\n' || _ddl_cmd_to_set_pg_readme_url || ';'; end if; end; $$; -------------------------------------------------------------------------------------------------------------- create or replace function pg_mockable_meta_pgxn() returns jsonb stable language sql return jsonb_build_object( 'name' ,'pg_mockable' ,'abstract' ,'Create mockable versions of functions from other schemas.' ,'description' ,'The `pg_mockable` extension can be used to create mockable versions of functions from other' ' schemas.' ,'version' ,( select pg_extension.extversion from pg_catalog.pg_extension where pg_extension.extname = 'pg_mockable' ) ,'maintainer' ,array[ 'Rowan Rodrik van der Molen ' ] ,'license' ,'gpl_3' ,'prereqs' ,'{ "runtime": { "requires": { "hstore": 0 } }, "test": { "requires": { "pgtap": 0 } } }'::jsonb ,'provides' ,('{ "pg_readme": { "file": "pg_mockable--0.1.0.sql", "version": "' || ( select pg_extension.extversion from pg_catalog.pg_extension where pg_extension.extname = 'pg_mockable' ) || '", "docfile": "README.md" } }')::jsonb ,'resources' ,'{ "homepage": "https://blog.bigsmoke.us/tag/pg_mockable", "bugtracker": { "web": "https://github.com/bigsmoke/pg_mockable/issues" }, "repository": { "url": "https://github.com/bigsmoke/pg_mockable.git", "web": "https://github.com/bigsmoke/pg_mockable", "type": "git" } }'::jsonb ,'meta-spec' ,'{ "version": "1.0.0", "url": "https://pgxn.org/spec/" }'::jsonb ,'generated_by' ,'`select pg_mockable_meta_pgxn()`' ,'tags' ,array[ 'documentation', 'markdown', 'meta', 'plpgsql', 'function', 'functions' ] ); comment on function pg_mockable_meta_pgxn() is $markdown$ Returns the JSON meta data that has to go into the `META.json` file needed for [PGXN—PostgreSQL Extension Network](https://pgxn.org/) packages. The `Makefile` includes a recipe to allow the developer to: `make META.json` to refresh the meta file with the function's current output, including the `default_version`. `pg_rowalesce` can indeed be found on PGXN: https://pgxn.org/dist/pg_mockable/ $markdown$; --------------------------------------------------------------------------------------------------------------