Update xml2 extension for parallel query.

All functions provided by this extension are PARALLEL SAFE.

Andreas Karlsson
This commit is contained in:
Robert Haas 2016-06-14 15:49:32 -04:00
parent 20f6c3a2a1
commit 13e7453135
4 changed files with 34 additions and 16 deletions

View File

@ -4,7 +4,7 @@ MODULE_big = pgxml
OBJS = xpath.o xslt_proc.o $(WIN32RES)
EXTENSION = xml2
DATA = xml2--1.0.sql xml2--unpackaged--1.0.sql
DATA = xml2--1.1.sql xml2--1.0--1.1.sql xml2--unpackaged--1.0.sql
PGFILEDESC = "xml2 - XPath querying and XSLT"
REGRESS = xml2

View File

@ -0,0 +1,18 @@
/* contrib/xml2/xml2--1.0--1.1.sql */
-- complain if script is sourced in psql, rather than via ALTER EXTENSION
\echo Use "ALTER EXTENSION xml2 UPDATE TO '1.1'" to load this file. \quit
ALTER FUNCTION xml_valid(text) PARALLEL SAFE;
ALTER FUNCTION xml_encode_special_chars(text) PARALLEL SAFE;
ALTER FUNCTION xpath_string(text, text) PARALLEL SAFE;
ALTER FUNCTION xpath_nodeset(text, text, text, text) PARALLEL SAFE;
ALTER FUNCTION xpath_number(text, text) PARALLEL SAFE;
ALTER FUNCTION xpath_bool(text, text) PARALLEL SAFE;
ALTER FUNCTION xpath_list(text, text, text) PARALLEL SAFE;
ALTER FUNCTION xpath_list(text, text) PARALLEL SAFE;
ALTER FUNCTION xpath_nodeset(text, text) PARALLEL SAFE;
ALTER FUNCTION xpath_nodeset(text, text, text) PARALLEL SAFE;
ALTER FUNCTION xpath_table(text, text, text, text, text) PARALLEL SAFE;
ALTER FUNCTION xslt_process(text, text, text) PARALLEL SAFE;
ALTER FUNCTION xslt_process(text, text) PARALLEL SAFE;

View File

@ -1,4 +1,4 @@
/* contrib/xml2/xml2--1.0.sql */
/* contrib/xml2/xml2--1.1.sql */
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
\echo Use "CREATE EXTENSION xml2" to load this file. \quit
@ -8,66 +8,66 @@
-- deprecated old name for xml_is_well_formed
CREATE FUNCTION xml_valid(text) RETURNS bool
AS 'xml_is_well_formed'
LANGUAGE INTERNAL STRICT STABLE;
LANGUAGE INTERNAL STRICT STABLE PARALLEL SAFE;
CREATE FUNCTION xml_encode_special_chars(text) RETURNS text
AS 'MODULE_PATHNAME'
LANGUAGE C STRICT IMMUTABLE;
LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;
CREATE FUNCTION xpath_string(text,text) RETURNS text
AS 'MODULE_PATHNAME'
LANGUAGE C STRICT IMMUTABLE;
LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;
CREATE FUNCTION xpath_nodeset(text,text,text,text) RETURNS text
AS 'MODULE_PATHNAME'
LANGUAGE C STRICT IMMUTABLE;
LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;
CREATE FUNCTION xpath_number(text,text) RETURNS float4
AS 'MODULE_PATHNAME'
LANGUAGE C STRICT IMMUTABLE;
LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;
CREATE FUNCTION xpath_bool(text,text) RETURNS boolean
AS 'MODULE_PATHNAME'
LANGUAGE C STRICT IMMUTABLE;
LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;
-- List function
CREATE FUNCTION xpath_list(text,text,text) RETURNS text
AS 'MODULE_PATHNAME'
LANGUAGE C STRICT IMMUTABLE;
LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;
CREATE FUNCTION xpath_list(text,text) RETURNS text
AS 'SELECT xpath_list($1,$2,'','')'
LANGUAGE SQL STRICT IMMUTABLE;
LANGUAGE SQL STRICT IMMUTABLE PARALLEL SAFE;
-- Wrapper functions for nodeset where no tags needed
CREATE FUNCTION xpath_nodeset(text,text)
RETURNS text
AS 'SELECT xpath_nodeset($1,$2,'''','''')'
LANGUAGE SQL STRICT IMMUTABLE;
LANGUAGE SQL STRICT IMMUTABLE PARALLEL SAFE;
CREATE FUNCTION xpath_nodeset(text,text,text)
RETURNS text
AS 'SELECT xpath_nodeset($1,$2,'''',$3)'
LANGUAGE SQL STRICT IMMUTABLE;
LANGUAGE SQL STRICT IMMUTABLE PARALLEL SAFE;
-- Table function
CREATE FUNCTION xpath_table(text,text,text,text,text)
RETURNS setof record
AS 'MODULE_PATHNAME'
LANGUAGE C STRICT STABLE;
LANGUAGE C STRICT STABLE PARALLEL SAFE;
-- XSLT functions
CREATE FUNCTION xslt_process(text,text,text)
RETURNS text
AS 'MODULE_PATHNAME'
LANGUAGE C STRICT VOLATILE;
LANGUAGE C STRICT VOLATILE PARALLEL SAFE;
-- the function checks for the correct argument count
CREATE FUNCTION xslt_process(text,text)
RETURNS text
AS 'MODULE_PATHNAME'
LANGUAGE C STRICT IMMUTABLE;
LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;

View File

@ -1,6 +1,6 @@
# xml2 extension
comment = 'XPath querying and XSLT'
default_version = '1.0'
default_version = '1.1'
module_pathname = '$libdir/pgxml'
# non-relocatable because xml2--unpackaged--1.0.sql needs to use @extschema@
relocatable = false