Commit a1816751 authored by Andrew Dunstan's avatar Andrew Dunstan

Use a new hstore extension version for added json functions.

This should have been done when the json functionality was added to
hstore in 9.3.0. To handle this correctly, the upgrade script therefore
uses conditional logic by using plpgsql in a DO statement to add the two
new functions and the new cast. If hstore_to_json_loose is detected as
already present and dependent on the hstore extension nothing is done.
This will require that the database be loaded with plpgsql.

People who have installed the earlier and spurious 1.1 version of hstore
will need to do:

	ALTER EXTENSION hstore UPDATE;

to pick up the new functions properly.
parent d942f9d9
/* contrib/hstore/hstore--1.1--1.2.sql */
-- complain if script is sourced in psql, rather than via ALTER EXTENSION
\echo Use "ALTER EXTENSION hstore UPDATE TO '1.2'" to load this file. \quit
-- A version of 1.1 was shipped with these objects mistakenly in 9.3.0.
-- Therefore we only add them if we detect that they aren't already there and
-- dependent on the extension.
DO LANGUAGE plpgsql
$$
BEGIN
PERFORM 1
FROM pg_proc p
JOIN pg_depend d
ON p.proname = 'hstore_to_json_loose'
AND d.objid = p.oid
AND d.refclassid = 'pg_extension'::regclass
JOIN pg_extension x
ON d.refobjid = x.oid
AND x.extname = 'hstore';
IF NOT FOUND
THEN
CREATE FUNCTION hstore_to_json(hstore)
RETURNS json
AS 'MODULE_PATHNAME', 'hstore_to_json'
LANGUAGE C IMMUTABLE STRICT;
CREATE CAST (hstore AS json)
WITH FUNCTION hstore_to_json(hstore);
CREATE FUNCTION hstore_to_json_loose(hstore)
RETURNS json
AS 'MODULE_PATHNAME', 'hstore_to_json_loose'
LANGUAGE C IMMUTABLE STRICT;
END IF;
END;
$$;
# hstore extension # hstore extension
comment = 'data type for storing sets of (key, value) pairs' comment = 'data type for storing sets of (key, value) pairs'
default_version = '1.1' default_version = '1.2'
module_pathname = '$libdir/hstore' module_pathname = '$libdir/hstore'
relocatable = true relocatable = true
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment