PostgreSQL Extension Developer Tips – Part 2
First, you do the same check for the other extension’s schema
SELECT nspname INTO v_jobmon_schema FROM pg_namespace n, pg_extension e WHERE e.extname = 'pg_jobmon' AND e.extnamespace = n.oid;
Then, wherever you would optionally use your other extension, just check and see if the schema variable is null
IF v_jobmon_schema IS NOT NULL THEN v_job_id := add_job('PARTMAN CREATE FUNCTION: '||p_parent_table); v_step_id := add_step(v_job_id, 'Creating partition function for table '||p_parent_table); END IF;
If you want to see a working example, the partition management extension I’m working on does this. If pg_jobmon is installed, it just automatically does the logging. If it’s not there, all logging steps are simply ignored and the extension does only its core functionality.
You can also use this method to check for a specific version of another extension and allow you to support multiple versions of the other extension over time
SELECT replace(extversion,'.','')::int FROM pg_extension e WHERE e.extname = 'pg_jobmon'; IF v_jobmon_version >= 30 THEN ... do some stuff only in 0.3.0 or later... ELSE ... do stuff the pre 0.3.0 way... END IF;