summaryrefslogtreecommitdiff
path: root/contrib/xml2
diff options
context:
space:
mode:
authorPavan Deolasee2016-10-27 15:02:55 +0000
committerPavan Deolasee2016-10-27 15:02:55 +0000
commitc52792488cd87e67e62ec61f5b56f461900353b4 (patch)
tree02b4a719f979659de8f73fce6c1ca65cef2e323f /contrib/xml2
parent891e6be57e5580b54a9df9fd42cb9bd10d0e7b21 (diff)
parentb5bce6c1ec6061c8a4f730d927e162db7e2ce365 (diff)
Merge commit 'b5bce6c1ec6061c8a4f730d927e162db7e2ce365'
Diffstat (limited to 'contrib/xml2')
-rw-r--r--contrib/xml2/Makefile2
-rw-r--r--contrib/xml2/xml2--1.0--1.1.sql18
-rw-r--r--contrib/xml2/xml2--1.1.sql (renamed from contrib/xml2/xml2--1.0.sql)28
-rw-r--r--contrib/xml2/xml2.control2
-rw-r--r--contrib/xml2/xpath.c6
5 files changed, 37 insertions, 19 deletions
diff --git a/contrib/xml2/Makefile b/contrib/xml2/Makefile
index 2f7a08cff1..68fd9c42af 100644
--- a/contrib/xml2/Makefile
+++ b/contrib/xml2/Makefile
@@ -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
diff --git a/contrib/xml2/xml2--1.0--1.1.sql b/contrib/xml2/xml2--1.0--1.1.sql
new file mode 100644
index 0000000000..350afb0138
--- /dev/null
+++ b/contrib/xml2/xml2--1.0--1.1.sql
@@ -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;
diff --git a/contrib/xml2/xml2--1.0.sql b/contrib/xml2/xml2--1.1.sql
index 0b6afc63d0..671372cb27 100644
--- a/contrib/xml2/xml2--1.0.sql
+++ b/contrib/xml2/xml2--1.1.sql
@@ -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;
diff --git a/contrib/xml2/xml2.control b/contrib/xml2/xml2.control
index 51de678d5f..91e6547f01 100644
--- a/contrib/xml2/xml2.control
+++ b/contrib/xml2/xml2.control
@@ -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
diff --git a/contrib/xml2/xpath.c b/contrib/xml2/xpath.c
index 655c5322cd..ac28996867 100644
--- a/contrib/xml2/xpath.c
+++ b/contrib/xml2/xpath.c
@@ -553,8 +553,7 @@ xpath_table(PG_FUNCTION_ARGS)
int numpaths;
int ret;
- int proc;
- int i;
+ uint64 proc;
int j;
int rownr; /* For issuing multiple rows from one original
* document */
@@ -664,7 +663,6 @@ xpath_table(PG_FUNCTION_ARGS)
query_buf.data);
proc = SPI_processed;
- /* elog(DEBUG1,"xpath_table: SPI returned %d rows",proc); */
tuptable = SPI_tuptable;
spi_tupdesc = tuptable->tupdesc;
@@ -692,6 +690,8 @@ xpath_table(PG_FUNCTION_ARGS)
PG_TRY();
{
/* For each row i.e. document returned from SPI */
+ uint64 i;
+
for (i = 0; i < proc; i++)
{
char *pkey;