diff --git a/contrib/isn/Makefile b/contrib/isn/Makefile
index 96aaf35884478b2110c67acfb148d9b436d39a07..9543a4b1cf05ff0dcf31fb1dbbb24eefea51d0a6 100644
--- a/contrib/isn/Makefile
+++ b/contrib/isn/Makefile
@@ -3,7 +3,7 @@
 MODULES = isn
 
 EXTENSION = isn
-DATA = isn--1.0.sql isn--unpackaged--1.0.sql
+DATA = isn--1.1.sql isn--1.0--1.1.sql isn--unpackaged--1.0.sql
 PGFILEDESC = "isn - data types for international product numbering standards"
 
 REGRESS = isn
diff --git a/contrib/isn/isn--1.0--1.1.sql b/contrib/isn/isn--1.0--1.1.sql
new file mode 100644
index 0000000000000000000000000000000000000000..6f1ccb076b91bf83f950b5ef183921e62932fda7
--- /dev/null
+++ b/contrib/isn/isn--1.0--1.1.sql
@@ -0,0 +1,250 @@
+/* contrib/isn/isn--1.0--1.1.sql */
+
+-- complain if script is sourced in psql, rather than via ALTER EXTENSION
+\echo Use "ALTER EXTENSION isn UPDATE TO '1.1'" to load this file. \quit
+
+ALTER FUNCTION ean13_in(cstring) PARALLEL SAFE;
+ALTER FUNCTION ean13_out(ean13) PARALLEL SAFE;
+ALTER FUNCTION isbn13_in(cstring) PARALLEL SAFE;
+ALTER FUNCTION ean13_out(isbn13) PARALLEL SAFE;
+ALTER FUNCTION ismn13_in(cstring) PARALLEL SAFE;
+ALTER FUNCTION ean13_out(ismn13) PARALLEL SAFE;
+ALTER FUNCTION issn13_in(cstring) PARALLEL SAFE;
+ALTER FUNCTION ean13_out(issn13) PARALLEL SAFE;
+ALTER FUNCTION isbn_in(cstring) PARALLEL SAFE;
+ALTER FUNCTION isn_out(isbn) PARALLEL SAFE;
+ALTER FUNCTION ismn_in(cstring) PARALLEL SAFE;
+ALTER FUNCTION isn_out(ismn) PARALLEL SAFE;
+ALTER FUNCTION issn_in(cstring) PARALLEL SAFE;
+ALTER FUNCTION isn_out(issn) PARALLEL SAFE;
+ALTER FUNCTION upc_in(cstring) PARALLEL SAFE;
+ALTER FUNCTION isn_out(upc) PARALLEL SAFE;
+ALTER FUNCTION isnlt(ean13, ean13) PARALLEL SAFE;
+ALTER FUNCTION isnle(ean13, ean13) PARALLEL SAFE;
+ALTER FUNCTION isneq(ean13, ean13) PARALLEL SAFE;
+ALTER FUNCTION isnge(ean13, ean13) PARALLEL SAFE;
+ALTER FUNCTION isngt(ean13, ean13) PARALLEL SAFE;
+ALTER FUNCTION isnne(ean13, ean13) PARALLEL SAFE;
+ALTER FUNCTION isnlt(ean13, isbn13) PARALLEL SAFE;
+ALTER FUNCTION isnle(ean13, isbn13) PARALLEL SAFE;
+ALTER FUNCTION isneq(ean13, isbn13) PARALLEL SAFE;
+ALTER FUNCTION isnge(ean13, isbn13) PARALLEL SAFE;
+ALTER FUNCTION isngt(ean13, isbn13) PARALLEL SAFE;
+ALTER FUNCTION isnne(ean13, isbn13) PARALLEL SAFE;
+ALTER FUNCTION isnlt(ean13, ismn13) PARALLEL SAFE;
+ALTER FUNCTION isnle(ean13, ismn13) PARALLEL SAFE;
+ALTER FUNCTION isneq(ean13, ismn13) PARALLEL SAFE;
+ALTER FUNCTION isnge(ean13, ismn13) PARALLEL SAFE;
+ALTER FUNCTION isngt(ean13, ismn13) PARALLEL SAFE;
+ALTER FUNCTION isnne(ean13, ismn13) PARALLEL SAFE;
+ALTER FUNCTION isnlt(ean13, issn13) PARALLEL SAFE;
+ALTER FUNCTION isnle(ean13, issn13) PARALLEL SAFE;
+ALTER FUNCTION isneq(ean13, issn13) PARALLEL SAFE;
+ALTER FUNCTION isnge(ean13, issn13) PARALLEL SAFE;
+ALTER FUNCTION isngt(ean13, issn13) PARALLEL SAFE;
+ALTER FUNCTION isnne(ean13, issn13) PARALLEL SAFE;
+ALTER FUNCTION isnlt(ean13, isbn) PARALLEL SAFE;
+ALTER FUNCTION isnle(ean13, isbn) PARALLEL SAFE;
+ALTER FUNCTION isneq(ean13, isbn) PARALLEL SAFE;
+ALTER FUNCTION isnge(ean13, isbn) PARALLEL SAFE;
+ALTER FUNCTION isngt(ean13, isbn) PARALLEL SAFE;
+ALTER FUNCTION isnne(ean13, isbn) PARALLEL SAFE;
+ALTER FUNCTION isnlt(ean13, ismn) PARALLEL SAFE;
+ALTER FUNCTION isnle(ean13, ismn) PARALLEL SAFE;
+ALTER FUNCTION isneq(ean13, ismn) PARALLEL SAFE;
+ALTER FUNCTION isnge(ean13, ismn) PARALLEL SAFE;
+ALTER FUNCTION isngt(ean13, ismn) PARALLEL SAFE;
+ALTER FUNCTION isnne(ean13, ismn) PARALLEL SAFE;
+ALTER FUNCTION isnlt(ean13, issn) PARALLEL SAFE;
+ALTER FUNCTION isnle(ean13, issn) PARALLEL SAFE;
+ALTER FUNCTION isneq(ean13, issn) PARALLEL SAFE;
+ALTER FUNCTION isnge(ean13, issn) PARALLEL SAFE;
+ALTER FUNCTION isngt(ean13, issn) PARALLEL SAFE;
+ALTER FUNCTION isnne(ean13, issn) PARALLEL SAFE;
+ALTER FUNCTION isnlt(ean13, upc) PARALLEL SAFE;
+ALTER FUNCTION isnle(ean13, upc) PARALLEL SAFE;
+ALTER FUNCTION isneq(ean13, upc) PARALLEL SAFE;
+ALTER FUNCTION isnge(ean13, upc) PARALLEL SAFE;
+ALTER FUNCTION isngt(ean13, upc) PARALLEL SAFE;
+ALTER FUNCTION isnne(ean13, upc) PARALLEL SAFE;
+ALTER FUNCTION isnlt(isbn13, isbn13) PARALLEL SAFE;
+ALTER FUNCTION isnle(isbn13, isbn13) PARALLEL SAFE;
+ALTER FUNCTION isneq(isbn13, isbn13) PARALLEL SAFE;
+ALTER FUNCTION isnge(isbn13, isbn13) PARALLEL SAFE;
+ALTER FUNCTION isngt(isbn13, isbn13) PARALLEL SAFE;
+ALTER FUNCTION isnne(isbn13, isbn13) PARALLEL SAFE;
+ALTER FUNCTION isnlt(isbn13, isbn) PARALLEL SAFE;
+ALTER FUNCTION isnle(isbn13, isbn) PARALLEL SAFE;
+ALTER FUNCTION isneq(isbn13, isbn) PARALLEL SAFE;
+ALTER FUNCTION isnge(isbn13, isbn) PARALLEL SAFE;
+ALTER FUNCTION isngt(isbn13, isbn) PARALLEL SAFE;
+ALTER FUNCTION isnne(isbn13, isbn) PARALLEL SAFE;
+ALTER FUNCTION isnlt(isbn13, ean13) PARALLEL SAFE;
+ALTER FUNCTION isnle(isbn13, ean13) PARALLEL SAFE;
+ALTER FUNCTION isneq(isbn13, ean13) PARALLEL SAFE;
+ALTER FUNCTION isnge(isbn13, ean13) PARALLEL SAFE;
+ALTER FUNCTION isngt(isbn13, ean13) PARALLEL SAFE;
+ALTER FUNCTION isnne(isbn13, ean13) PARALLEL SAFE;
+ALTER FUNCTION isnlt(isbn, isbn) PARALLEL SAFE;
+ALTER FUNCTION isnle(isbn, isbn) PARALLEL SAFE;
+ALTER FUNCTION isneq(isbn, isbn) PARALLEL SAFE;
+ALTER FUNCTION isnge(isbn, isbn) PARALLEL SAFE;
+ALTER FUNCTION isngt(isbn, isbn) PARALLEL SAFE;
+ALTER FUNCTION isnne(isbn, isbn) PARALLEL SAFE;
+ALTER FUNCTION isnlt(isbn, isbn13) PARALLEL SAFE;
+ALTER FUNCTION isnle(isbn, isbn13) PARALLEL SAFE;
+ALTER FUNCTION isneq(isbn, isbn13) PARALLEL SAFE;
+ALTER FUNCTION isnge(isbn, isbn13) PARALLEL SAFE;
+ALTER FUNCTION isngt(isbn, isbn13) PARALLEL SAFE;
+ALTER FUNCTION isnne(isbn, isbn13) PARALLEL SAFE;
+ALTER FUNCTION isnlt(isbn, ean13) PARALLEL SAFE;
+ALTER FUNCTION isnle(isbn, ean13) PARALLEL SAFE;
+ALTER FUNCTION isneq(isbn, ean13) PARALLEL SAFE;
+ALTER FUNCTION isnge(isbn, ean13) PARALLEL SAFE;
+ALTER FUNCTION isngt(isbn, ean13) PARALLEL SAFE;
+ALTER FUNCTION isnne(isbn, ean13) PARALLEL SAFE;
+ALTER FUNCTION isnlt(ismn13, ismn13) PARALLEL SAFE;
+ALTER FUNCTION isnle(ismn13, ismn13) PARALLEL SAFE;
+ALTER FUNCTION isneq(ismn13, ismn13) PARALLEL SAFE;
+ALTER FUNCTION isnge(ismn13, ismn13) PARALLEL SAFE;
+ALTER FUNCTION isngt(ismn13, ismn13) PARALLEL SAFE;
+ALTER FUNCTION isnne(ismn13, ismn13) PARALLEL SAFE;
+ALTER FUNCTION isnlt(ismn13, ismn) PARALLEL SAFE;
+ALTER FUNCTION isnle(ismn13, ismn) PARALLEL SAFE;
+ALTER FUNCTION isneq(ismn13, ismn) PARALLEL SAFE;
+ALTER FUNCTION isnge(ismn13, ismn) PARALLEL SAFE;
+ALTER FUNCTION isngt(ismn13, ismn) PARALLEL SAFE;
+ALTER FUNCTION isnne(ismn13, ismn) PARALLEL SAFE;
+ALTER FUNCTION isnlt(ismn13, ean13) PARALLEL SAFE;
+ALTER FUNCTION isnle(ismn13, ean13) PARALLEL SAFE;
+ALTER FUNCTION isneq(ismn13, ean13) PARALLEL SAFE;
+ALTER FUNCTION isnge(ismn13, ean13) PARALLEL SAFE;
+ALTER FUNCTION isngt(ismn13, ean13) PARALLEL SAFE;
+ALTER FUNCTION isnne(ismn13, ean13) PARALLEL SAFE;
+ALTER FUNCTION isnlt(ismn, ismn) PARALLEL SAFE;
+ALTER FUNCTION isnle(ismn, ismn) PARALLEL SAFE;
+ALTER FUNCTION isneq(ismn, ismn) PARALLEL SAFE;
+ALTER FUNCTION isnge(ismn, ismn) PARALLEL SAFE;
+ALTER FUNCTION isngt(ismn, ismn) PARALLEL SAFE;
+ALTER FUNCTION isnne(ismn, ismn) PARALLEL SAFE;
+ALTER FUNCTION isnlt(ismn, ismn13) PARALLEL SAFE;
+ALTER FUNCTION isnle(ismn, ismn13) PARALLEL SAFE;
+ALTER FUNCTION isneq(ismn, ismn13) PARALLEL SAFE;
+ALTER FUNCTION isnge(ismn, ismn13) PARALLEL SAFE;
+ALTER FUNCTION isngt(ismn, ismn13) PARALLEL SAFE;
+ALTER FUNCTION isnne(ismn, ismn13) PARALLEL SAFE;
+ALTER FUNCTION isnlt(ismn, ean13) PARALLEL SAFE;
+ALTER FUNCTION isnle(ismn, ean13) PARALLEL SAFE;
+ALTER FUNCTION isneq(ismn, ean13) PARALLEL SAFE;
+ALTER FUNCTION isnge(ismn, ean13) PARALLEL SAFE;
+ALTER FUNCTION isngt(ismn, ean13) PARALLEL SAFE;
+ALTER FUNCTION isnne(ismn, ean13) PARALLEL SAFE;
+ALTER FUNCTION isnlt(issn13, issn13) PARALLEL SAFE;
+ALTER FUNCTION isnle(issn13, issn13) PARALLEL SAFE;
+ALTER FUNCTION isneq(issn13, issn13) PARALLEL SAFE;
+ALTER FUNCTION isnge(issn13, issn13) PARALLEL SAFE;
+ALTER FUNCTION isngt(issn13, issn13) PARALLEL SAFE;
+ALTER FUNCTION isnne(issn13, issn13) PARALLEL SAFE;
+ALTER FUNCTION isnlt(issn13, issn) PARALLEL SAFE;
+ALTER FUNCTION isnle(issn13, issn) PARALLEL SAFE;
+ALTER FUNCTION isneq(issn13, issn) PARALLEL SAFE;
+ALTER FUNCTION isnge(issn13, issn) PARALLEL SAFE;
+ALTER FUNCTION isngt(issn13, issn) PARALLEL SAFE;
+ALTER FUNCTION isnne(issn13, issn) PARALLEL SAFE;
+ALTER FUNCTION isnlt(issn13, ean13) PARALLEL SAFE;
+ALTER FUNCTION isnle(issn13, ean13) PARALLEL SAFE;
+ALTER FUNCTION isneq(issn13, ean13) PARALLEL SAFE;
+ALTER FUNCTION isnge(issn13, ean13) PARALLEL SAFE;
+ALTER FUNCTION isngt(issn13, ean13) PARALLEL SAFE;
+ALTER FUNCTION isnne(issn13, ean13) PARALLEL SAFE;
+ALTER FUNCTION isnlt(issn, issn) PARALLEL SAFE;
+ALTER FUNCTION isnle(issn, issn) PARALLEL SAFE;
+ALTER FUNCTION isneq(issn, issn) PARALLEL SAFE;
+ALTER FUNCTION isnge(issn, issn) PARALLEL SAFE;
+ALTER FUNCTION isngt(issn, issn) PARALLEL SAFE;
+ALTER FUNCTION isnne(issn, issn) PARALLEL SAFE;
+ALTER FUNCTION isnlt(issn, issn13) PARALLEL SAFE;
+ALTER FUNCTION isnle(issn, issn13) PARALLEL SAFE;
+ALTER FUNCTION isneq(issn, issn13) PARALLEL SAFE;
+ALTER FUNCTION isnge(issn, issn13) PARALLEL SAFE;
+ALTER FUNCTION isngt(issn, issn13) PARALLEL SAFE;
+ALTER FUNCTION isnne(issn, issn13) PARALLEL SAFE;
+ALTER FUNCTION isnlt(issn, ean13) PARALLEL SAFE;
+ALTER FUNCTION isnle(issn, ean13) PARALLEL SAFE;
+ALTER FUNCTION isneq(issn, ean13) PARALLEL SAFE;
+ALTER FUNCTION isnge(issn, ean13) PARALLEL SAFE;
+ALTER FUNCTION isngt(issn, ean13) PARALLEL SAFE;
+ALTER FUNCTION isnne(issn, ean13) PARALLEL SAFE;
+ALTER FUNCTION isnlt(upc, upc) PARALLEL SAFE;
+ALTER FUNCTION isnle(upc, upc) PARALLEL SAFE;
+ALTER FUNCTION isneq(upc, upc) PARALLEL SAFE;
+ALTER FUNCTION isnge(upc, upc) PARALLEL SAFE;
+ALTER FUNCTION isngt(upc, upc) PARALLEL SAFE;
+ALTER FUNCTION isnne(upc, upc) PARALLEL SAFE;
+ALTER FUNCTION isnlt(upc, ean13) PARALLEL SAFE;
+ALTER FUNCTION isnle(upc, ean13) PARALLEL SAFE;
+ALTER FUNCTION isneq(upc, ean13) PARALLEL SAFE;
+ALTER FUNCTION isnge(upc, ean13) PARALLEL SAFE;
+ALTER FUNCTION isngt(upc, ean13) PARALLEL SAFE;
+ALTER FUNCTION isnne(upc, ean13) PARALLEL SAFE;
+ALTER FUNCTION btean13cmp(ean13, ean13) PARALLEL SAFE;
+ALTER FUNCTION hashean13(ean13) PARALLEL SAFE;
+ALTER FUNCTION btean13cmp(ean13, isbn13) PARALLEL SAFE;
+ALTER FUNCTION btean13cmp(ean13, ismn13) PARALLEL SAFE;
+ALTER FUNCTION btean13cmp(ean13, issn13) PARALLEL SAFE;
+ALTER FUNCTION btean13cmp(ean13, isbn) PARALLEL SAFE;
+ALTER FUNCTION btean13cmp(ean13, ismn) PARALLEL SAFE;
+ALTER FUNCTION btean13cmp(ean13, issn) PARALLEL SAFE;
+ALTER FUNCTION btean13cmp(ean13, upc) PARALLEL SAFE;
+ALTER FUNCTION btisbn13cmp(isbn13, isbn13) PARALLEL SAFE;
+ALTER FUNCTION hashisbn13(isbn13) PARALLEL SAFE;
+ALTER FUNCTION btisbn13cmp(isbn13, ean13) PARALLEL SAFE;
+ALTER FUNCTION btisbn13cmp(isbn13, isbn) PARALLEL SAFE;
+ALTER FUNCTION btisbncmp(isbn, isbn) PARALLEL SAFE;
+ALTER FUNCTION hashisbn(isbn) PARALLEL SAFE;
+ALTER FUNCTION btisbncmp(isbn, ean13) PARALLEL SAFE;
+ALTER FUNCTION btisbncmp(isbn, isbn13) PARALLEL SAFE;
+ALTER FUNCTION btismn13cmp(ismn13, ismn13) PARALLEL SAFE;
+ALTER FUNCTION hashismn13(ismn13) PARALLEL SAFE;
+ALTER FUNCTION btismn13cmp(ismn13, ean13) PARALLEL SAFE;
+ALTER FUNCTION btismn13cmp(ismn13, ismn) PARALLEL SAFE;
+ALTER FUNCTION btismncmp(ismn, ismn) PARALLEL SAFE;
+ALTER FUNCTION hashismn(ismn) PARALLEL SAFE;
+ALTER FUNCTION btismncmp(ismn, ean13) PARALLEL SAFE;
+ALTER FUNCTION btismncmp(ismn, ismn13) PARALLEL SAFE;
+ALTER FUNCTION btissn13cmp(issn13, issn13) PARALLEL SAFE;
+ALTER FUNCTION hashissn13(issn13) PARALLEL SAFE;
+ALTER FUNCTION btissn13cmp(issn13, ean13) PARALLEL SAFE;
+ALTER FUNCTION btissn13cmp(issn13, issn) PARALLEL SAFE;
+ALTER FUNCTION btissncmp(issn, issn) PARALLEL SAFE;
+ALTER FUNCTION hashissn(issn) PARALLEL SAFE;
+ALTER FUNCTION btissncmp(issn, ean13) PARALLEL SAFE;
+ALTER FUNCTION btissncmp(issn, issn13) PARALLEL SAFE;
+ALTER FUNCTION btupccmp(upc, upc) PARALLEL SAFE;
+ALTER FUNCTION hashupc(upc) PARALLEL SAFE;
+ALTER FUNCTION btupccmp(upc, ean13) PARALLEL SAFE;
+ALTER FUNCTION isbn13(ean13) PARALLEL SAFE;
+ALTER FUNCTION ismn13(ean13) PARALLEL SAFE;
+ALTER FUNCTION issn13(ean13) PARALLEL SAFE;
+ALTER FUNCTION isbn(ean13) PARALLEL SAFE;
+ALTER FUNCTION ismn(ean13) PARALLEL SAFE;
+ALTER FUNCTION issn(ean13) PARALLEL SAFE;
+ALTER FUNCTION upc(ean13) PARALLEL SAFE;
+ALTER FUNCTION make_valid(ean13) PARALLEL SAFE;
+ALTER FUNCTION make_valid(isbn13) PARALLEL SAFE;
+ALTER FUNCTION make_valid(ismn13) PARALLEL SAFE;
+ALTER FUNCTION make_valid(issn13) PARALLEL SAFE;
+ALTER FUNCTION make_valid(isbn) PARALLEL SAFE;
+ALTER FUNCTION make_valid(ismn) PARALLEL SAFE;
+ALTER FUNCTION make_valid(issn) PARALLEL SAFE;
+ALTER FUNCTION make_valid(upc) PARALLEL SAFE;
+ALTER FUNCTION is_valid(ean13) PARALLEL SAFE;
+ALTER FUNCTION is_valid(isbn13) PARALLEL SAFE;
+ALTER FUNCTION is_valid(ismn13) PARALLEL SAFE;
+ALTER FUNCTION is_valid(issn13) PARALLEL SAFE;
+ALTER FUNCTION is_valid(isbn) PARALLEL SAFE;
+ALTER FUNCTION is_valid(ismn) PARALLEL SAFE;
+ALTER FUNCTION is_valid(issn) PARALLEL SAFE;
+ALTER FUNCTION is_valid(upc) PARALLEL SAFE;
+ALTER FUNCTION isn_weak(boolean) PARALLEL RESTRICTED;
+ALTER FUNCTION isn_weak() PARALLEL RESTRICTED;
diff --git a/contrib/isn/isn--1.0.sql b/contrib/isn/isn--1.1.sql
similarity index 87%
rename from contrib/isn/isn--1.0.sql
rename to contrib/isn/isn--1.1.sql
index ce74c17cc8200aebf7982395c9eb8e9d1f19239d..520696141d9cea103f78c17652c3be7d2de6eaae 100644
--- a/contrib/isn/isn--1.0.sql
+++ b/contrib/isn/isn--1.1.sql
@@ -1,4 +1,4 @@
-/* contrib/isn/isn--1.0.sql */
+/* contrib/isn/isn--1.1.sql */
 
 -- complain if script is sourced in psql, rather than via CREATE EXTENSION
 \echo Use "CREATE EXTENSION isn" to load this file. \quit
@@ -19,12 +19,14 @@ CREATE FUNCTION ean13_in(cstring)
 	RETURNS ean13
 	AS 'MODULE_PATHNAME'
 	LANGUAGE C
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION ean13_out(ean13)
 	RETURNS cstring
 	AS 'MODULE_PATHNAME'
 	LANGUAGE C
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE TYPE ean13 (
 	INPUT = ean13_in,
 	OUTPUT = ean13_out,
@@ -37,12 +39,14 @@ CREATE FUNCTION isbn13_in(cstring)
 	RETURNS isbn13
 	AS 'MODULE_PATHNAME', 'isbn_in'
 	LANGUAGE C
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION ean13_out(isbn13)
 	RETURNS cstring
 	AS 'MODULE_PATHNAME'
 	LANGUAGE C
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE TYPE isbn13 (
 	INPUT = isbn13_in,
 	OUTPUT = ean13_out,
@@ -55,12 +59,14 @@ CREATE FUNCTION ismn13_in(cstring)
 	RETURNS ismn13
 	AS 'MODULE_PATHNAME', 'ismn_in'
 	LANGUAGE C
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION ean13_out(ismn13)
 	RETURNS cstring
 	AS 'MODULE_PATHNAME'
 	LANGUAGE C
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE TYPE ismn13 (
 	INPUT = ismn13_in,
 	OUTPUT = ean13_out,
@@ -73,12 +79,14 @@ CREATE FUNCTION issn13_in(cstring)
 	RETURNS issn13
 	AS 'MODULE_PATHNAME', 'issn_in'
 	LANGUAGE C
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION ean13_out(issn13)
 	RETURNS cstring
 	AS 'MODULE_PATHNAME'
 	LANGUAGE C
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE TYPE issn13 (
 	INPUT = issn13_in,
 	OUTPUT = ean13_out,
@@ -93,12 +101,14 @@ CREATE FUNCTION isbn_in(cstring)
 	RETURNS isbn
 	AS 'MODULE_PATHNAME'
 	LANGUAGE C
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isn_out(isbn)
 	RETURNS cstring
 	AS 'MODULE_PATHNAME'
 	LANGUAGE C
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE TYPE isbn (
 	INPUT = isbn_in,
 	OUTPUT = isn_out,
@@ -111,12 +121,14 @@ CREATE FUNCTION ismn_in(cstring)
 	RETURNS ismn
 	AS 'MODULE_PATHNAME'
 	LANGUAGE C
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isn_out(ismn)
 	RETURNS cstring
 	AS 'MODULE_PATHNAME'
 	LANGUAGE C
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE TYPE ismn (
 	INPUT = ismn_in,
 	OUTPUT = isn_out,
@@ -129,12 +141,14 @@ CREATE FUNCTION issn_in(cstring)
 	RETURNS issn
 	AS 'MODULE_PATHNAME'
 	LANGUAGE C
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isn_out(issn)
 	RETURNS cstring
 	AS 'MODULE_PATHNAME'
 	LANGUAGE C
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE TYPE issn (
 	INPUT = issn_in,
 	OUTPUT = isn_out,
@@ -147,12 +161,14 @@ CREATE FUNCTION upc_in(cstring)
 	RETURNS upc
 	AS 'MODULE_PATHNAME'
 	LANGUAGE C
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isn_out(upc)
 	RETURNS cstring
 	AS 'MODULE_PATHNAME'
 	LANGUAGE C
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE TYPE upc (
 	INPUT = upc_in,
 	OUTPUT = isn_out,
@@ -170,249 +186,297 @@ CREATE FUNCTION isnlt(ean13, ean13)
 	RETURNS boolean
 	AS 'int8lt'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnle(ean13, ean13)
 	RETURNS boolean
 	AS 'int8le'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isneq(ean13, ean13)
 	RETURNS boolean
 	AS 'int8eq'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnge(ean13, ean13)
 	RETURNS boolean
 	AS 'int8ge'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isngt(ean13, ean13)
 	RETURNS boolean
 	AS 'int8gt'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnne(ean13, ean13)
 	RETURNS boolean
 	AS 'int8ne'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 
 CREATE FUNCTION isnlt(ean13, isbn13)
 	RETURNS boolean
 	AS 'int8lt'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnle(ean13, isbn13)
 	RETURNS boolean
 	AS 'int8le'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isneq(ean13, isbn13)
 	RETURNS boolean
 	AS 'int8eq'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnge(ean13, isbn13)
 	RETURNS boolean
 	AS 'int8ge'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isngt(ean13, isbn13)
 	RETURNS boolean
 	AS 'int8gt'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnne(ean13, isbn13)
 	RETURNS boolean
 	AS 'int8ne'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 
 CREATE FUNCTION isnlt(ean13, ismn13)
 	RETURNS boolean
 	AS 'int8lt'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnle(ean13, ismn13)
 	RETURNS boolean
 	AS 'int8le'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isneq(ean13, ismn13)
 	RETURNS boolean
 	AS 'int8eq'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnge(ean13, ismn13)
 	RETURNS boolean
 	AS 'int8ge'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isngt(ean13, ismn13)
 	RETURNS boolean
 	AS 'int8gt'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnne(ean13, ismn13)
 	RETURNS boolean
 	AS 'int8ne'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 
 CREATE FUNCTION isnlt(ean13, issn13)
 	RETURNS boolean
 	AS 'int8lt'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnle(ean13, issn13)
 	RETURNS boolean
 	AS 'int8le'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isneq(ean13, issn13)
 	RETURNS boolean
 	AS 'int8eq'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnge(ean13, issn13)
 	RETURNS boolean
 	AS 'int8ge'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isngt(ean13, issn13)
 	RETURNS boolean
 	AS 'int8gt'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnne(ean13, issn13)
 	RETURNS boolean
 	AS 'int8ne'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 
 CREATE FUNCTION isnlt(ean13, isbn)
 	RETURNS boolean
 	AS 'int8lt'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnle(ean13, isbn)
 	RETURNS boolean
 	AS 'int8le'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isneq(ean13, isbn)
 	RETURNS boolean
 	AS 'int8eq'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnge(ean13, isbn)
 	RETURNS boolean
 	AS 'int8ge'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isngt(ean13, isbn)
 	RETURNS boolean
 	AS 'int8gt'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnne(ean13, isbn)
 	RETURNS boolean
 	AS 'int8ne'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 
 CREATE FUNCTION isnlt(ean13, ismn)
 	RETURNS boolean
 	AS 'int8lt'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnle(ean13, ismn)
 	RETURNS boolean
 	AS 'int8le'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isneq(ean13, ismn)
 	RETURNS boolean
 	AS 'int8eq'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnge(ean13, ismn)
 	RETURNS boolean
 	AS 'int8ge'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isngt(ean13, ismn)
 	RETURNS boolean
 	AS 'int8gt'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnne(ean13, ismn)
 	RETURNS boolean
 	AS 'int8ne'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 
 CREATE FUNCTION isnlt(ean13, issn)
 	RETURNS boolean
 	AS 'int8lt'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnle(ean13, issn)
 	RETURNS boolean
 	AS 'int8le'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isneq(ean13, issn)
 	RETURNS boolean
 	AS 'int8eq'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnge(ean13, issn)
 	RETURNS boolean
 	AS 'int8ge'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isngt(ean13, issn)
 	RETURNS boolean
 	AS 'int8gt'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnne(ean13, issn)
 	RETURNS boolean
 	AS 'int8ne'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 
 CREATE FUNCTION isnlt(ean13, upc)
 	RETURNS boolean
 	AS 'int8lt'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnle(ean13, upc)
 	RETURNS boolean
 	AS 'int8le'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isneq(ean13, upc)
 	RETURNS boolean
 	AS 'int8eq'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnge(ean13, upc)
 	RETURNS boolean
 	AS 'int8ge'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isngt(ean13, upc)
 	RETURNS boolean
 	AS 'int8gt'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnne(ean13, upc)
 	RETURNS boolean
 	AS 'int8ne'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 
 ---------------------------------------------------
 -- ISBN13:
@@ -420,94 +484,112 @@ CREATE FUNCTION isnlt(isbn13, isbn13)
 	RETURNS boolean
 	AS 'int8lt'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnle(isbn13, isbn13)
 	RETURNS boolean
 	AS 'int8le'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isneq(isbn13, isbn13)
 	RETURNS boolean
 	AS 'int8eq'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnge(isbn13, isbn13)
 	RETURNS boolean
 	AS 'int8ge'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isngt(isbn13, isbn13)
 	RETURNS boolean
 	AS 'int8gt'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnne(isbn13, isbn13)
 	RETURNS boolean
 	AS 'int8ne'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 
 CREATE FUNCTION isnlt(isbn13, isbn)
 	RETURNS boolean
 	AS 'int8lt'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnle(isbn13, isbn)
 	RETURNS boolean
 	AS 'int8le'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isneq(isbn13, isbn)
 	RETURNS boolean
 	AS 'int8eq'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnge(isbn13, isbn)
 	RETURNS boolean
 	AS 'int8ge'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isngt(isbn13, isbn)
 	RETURNS boolean
 	AS 'int8gt'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnne(isbn13, isbn)
 	RETURNS boolean
 	AS 'int8ne'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 
 CREATE FUNCTION isnlt(isbn13, ean13)
 	RETURNS boolean
 	AS 'int8lt'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnle(isbn13, ean13)
 	RETURNS boolean
 	AS 'int8le'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isneq(isbn13, ean13)
 	RETURNS boolean
 	AS 'int8eq'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnge(isbn13, ean13)
 	RETURNS boolean
 	AS 'int8ge'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isngt(isbn13, ean13)
 	RETURNS boolean
 	AS 'int8gt'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnne(isbn13, ean13)
 	RETURNS boolean
 	AS 'int8ne'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 
 ---------------------------------------------------
 -- ISBN:
@@ -515,94 +597,112 @@ CREATE FUNCTION isnlt(isbn, isbn)
 	RETURNS boolean
 	AS 'int8lt'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnle(isbn, isbn)
 	RETURNS boolean
 	AS 'int8le'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isneq(isbn, isbn)
 	RETURNS boolean
 	AS 'int8eq'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnge(isbn, isbn)
 	RETURNS boolean
 	AS 'int8ge'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isngt(isbn, isbn)
 	RETURNS boolean
 	AS 'int8gt'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnne(isbn, isbn)
 	RETURNS boolean
 	AS 'int8ne'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 
 CREATE FUNCTION isnlt(isbn, isbn13)
 	RETURNS boolean
 	AS 'int8lt'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnle(isbn, isbn13)
 	RETURNS boolean
 	AS 'int8le'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isneq(isbn, isbn13)
 	RETURNS boolean
 	AS 'int8eq'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnge(isbn, isbn13)
 	RETURNS boolean
 	AS 'int8ge'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isngt(isbn, isbn13)
 	RETURNS boolean
 	AS 'int8gt'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnne(isbn, isbn13)
 	RETURNS boolean
 	AS 'int8ne'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 
 CREATE FUNCTION isnlt(isbn, ean13)
 	RETURNS boolean
 	AS 'int8lt'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnle(isbn, ean13)
 	RETURNS boolean
 	AS 'int8le'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isneq(isbn, ean13)
 	RETURNS boolean
 	AS 'int8eq'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnge(isbn, ean13)
 	RETURNS boolean
 	AS 'int8ge'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isngt(isbn, ean13)
 	RETURNS boolean
 	AS 'int8gt'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnne(isbn, ean13)
 	RETURNS boolean
 	AS 'int8ne'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 
 ---------------------------------------------------
 -- ISMN13:
@@ -610,94 +710,112 @@ CREATE FUNCTION isnlt(ismn13, ismn13)
 	RETURNS boolean
 	AS 'int8lt'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnle(ismn13, ismn13)
 	RETURNS boolean
 	AS 'int8le'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isneq(ismn13, ismn13)
 	RETURNS boolean
 	AS 'int8eq'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnge(ismn13, ismn13)
 	RETURNS boolean
 	AS 'int8ge'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isngt(ismn13, ismn13)
 	RETURNS boolean
 	AS 'int8gt'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnne(ismn13, ismn13)
 	RETURNS boolean
 	AS 'int8ne'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 
 CREATE FUNCTION isnlt(ismn13, ismn)
 	RETURNS boolean
 	AS 'int8lt'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnle(ismn13, ismn)
 	RETURNS boolean
 	AS 'int8le'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isneq(ismn13, ismn)
 	RETURNS boolean
 	AS 'int8eq'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnge(ismn13, ismn)
 	RETURNS boolean
 	AS 'int8ge'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isngt(ismn13, ismn)
 	RETURNS boolean
 	AS 'int8gt'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnne(ismn13, ismn)
 	RETURNS boolean
 	AS 'int8ne'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 
 CREATE FUNCTION isnlt(ismn13, ean13)
 	RETURNS boolean
 	AS 'int8lt'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnle(ismn13, ean13)
 	RETURNS boolean
 	AS 'int8le'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isneq(ismn13, ean13)
 	RETURNS boolean
 	AS 'int8eq'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnge(ismn13, ean13)
 	RETURNS boolean
 	AS 'int8ge'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isngt(ismn13, ean13)
 	RETURNS boolean
 	AS 'int8gt'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnne(ismn13, ean13)
 	RETURNS boolean
 	AS 'int8ne'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 
 ---------------------------------------------------
 -- ISMN:
@@ -705,94 +823,112 @@ CREATE FUNCTION isnlt(ismn, ismn)
 	RETURNS boolean
 	AS 'int8lt'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnle(ismn, ismn)
 	RETURNS boolean
 	AS 'int8le'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isneq(ismn, ismn)
 	RETURNS boolean
 	AS 'int8eq'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnge(ismn, ismn)
 	RETURNS boolean
 	AS 'int8ge'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isngt(ismn, ismn)
 	RETURNS boolean
 	AS 'int8gt'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnne(ismn, ismn)
 	RETURNS boolean
 	AS 'int8ne'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 
 CREATE FUNCTION isnlt(ismn, ismn13)
 	RETURNS boolean
 	AS 'int8lt'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnle(ismn, ismn13)
 	RETURNS boolean
 	AS 'int8le'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isneq(ismn, ismn13)
 	RETURNS boolean
 	AS 'int8eq'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnge(ismn, ismn13)
 	RETURNS boolean
 	AS 'int8ge'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isngt(ismn, ismn13)
 	RETURNS boolean
 	AS 'int8gt'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnne(ismn, ismn13)
 	RETURNS boolean
 	AS 'int8ne'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 
 CREATE FUNCTION isnlt(ismn, ean13)
 	RETURNS boolean
 	AS 'int8lt'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnle(ismn, ean13)
 	RETURNS boolean
 	AS 'int8le'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isneq(ismn, ean13)
 	RETURNS boolean
 	AS 'int8eq'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnge(ismn, ean13)
 	RETURNS boolean
 	AS 'int8ge'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isngt(ismn, ean13)
 	RETURNS boolean
 	AS 'int8gt'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnne(ismn, ean13)
 	RETURNS boolean
 	AS 'int8ne'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 
 ---------------------------------------------------
 -- ISSN13:
@@ -800,94 +936,112 @@ CREATE FUNCTION isnlt(issn13, issn13)
 	RETURNS boolean
 	AS 'int8lt'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnle(issn13, issn13)
 	RETURNS boolean
 	AS 'int8le'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isneq(issn13, issn13)
 	RETURNS boolean
 	AS 'int8eq'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnge(issn13, issn13)
 	RETURNS boolean
 	AS 'int8ge'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isngt(issn13, issn13)
 	RETURNS boolean
 	AS 'int8gt'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnne(issn13, issn13)
 	RETURNS boolean
 	AS 'int8ne'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 
 CREATE FUNCTION isnlt(issn13, issn)
 	RETURNS boolean
 	AS 'int8lt'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnle(issn13, issn)
 	RETURNS boolean
 	AS 'int8le'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isneq(issn13, issn)
 	RETURNS boolean
 	AS 'int8eq'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnge(issn13, issn)
 	RETURNS boolean
 	AS 'int8ge'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isngt(issn13, issn)
 	RETURNS boolean
 	AS 'int8gt'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnne(issn13, issn)
 	RETURNS boolean
 	AS 'int8ne'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 
 CREATE FUNCTION isnlt(issn13, ean13)
 	RETURNS boolean
 	AS 'int8lt'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnle(issn13, ean13)
 	RETURNS boolean
 	AS 'int8le'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isneq(issn13, ean13)
 	RETURNS boolean
 	AS 'int8eq'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnge(issn13, ean13)
 	RETURNS boolean
 	AS 'int8ge'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isngt(issn13, ean13)
 	RETURNS boolean
 	AS 'int8gt'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnne(issn13, ean13)
 	RETURNS boolean
 	AS 'int8ne'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 
 ---------------------------------------------------
 -- ISSN:
@@ -895,94 +1049,112 @@ CREATE FUNCTION isnlt(issn, issn)
 	RETURNS boolean
 	AS 'int8lt'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnle(issn, issn)
 	RETURNS boolean
 	AS 'int8le'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isneq(issn, issn)
 	RETURNS boolean
 	AS 'int8eq'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnge(issn, issn)
 	RETURNS boolean
 	AS 'int8ge'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isngt(issn, issn)
 	RETURNS boolean
 	AS 'int8gt'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnne(issn, issn)
 	RETURNS boolean
 	AS 'int8ne'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 
 CREATE FUNCTION isnlt(issn, issn13)
 	RETURNS boolean
 	AS 'int8lt'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnle(issn, issn13)
 	RETURNS boolean
 	AS 'int8le'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isneq(issn, issn13)
 	RETURNS boolean
 	AS 'int8eq'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnge(issn, issn13)
 	RETURNS boolean
 	AS 'int8ge'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isngt(issn, issn13)
 	RETURNS boolean
 	AS 'int8gt'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnne(issn, issn13)
 	RETURNS boolean
 	AS 'int8ne'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 
 CREATE FUNCTION isnlt(issn, ean13)
 	RETURNS boolean
 	AS 'int8lt'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnle(issn, ean13)
 	RETURNS boolean
 	AS 'int8le'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isneq(issn, ean13)
 	RETURNS boolean
 	AS 'int8eq'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnge(issn, ean13)
 	RETURNS boolean
 	AS 'int8ge'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isngt(issn, ean13)
 	RETURNS boolean
 	AS 'int8gt'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnne(issn, ean13)
 	RETURNS boolean
 	AS 'int8ne'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 
 ---------------------------------------------------
 -- UPC:
@@ -990,63 +1162,75 @@ CREATE FUNCTION isnlt(upc, upc)
 	RETURNS boolean
 	AS 'int8lt'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnle(upc, upc)
 	RETURNS boolean
 	AS 'int8le'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isneq(upc, upc)
 	RETURNS boolean
 	AS 'int8eq'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnge(upc, upc)
 	RETURNS boolean
 	AS 'int8ge'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isngt(upc, upc)
 	RETURNS boolean
 	AS 'int8gt'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnne(upc, upc)
 	RETURNS boolean
 	AS 'int8ne'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 
 CREATE FUNCTION isnlt(upc, ean13)
 	RETURNS boolean
 	AS 'int8lt'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnle(upc, ean13)
 	RETURNS boolean
 	AS 'int8le'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isneq(upc, ean13)
 	RETURNS boolean
 	AS 'int8eq'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnge(upc, ean13)
 	RETURNS boolean
 	AS 'int8ge'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isngt(upc, ean13)
 	RETURNS boolean
 	AS 'int8gt'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION isnne(upc, ean13)
 	RETURNS boolean
 	AS 'int8ne'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 
 --
 -- Now the operators:
@@ -2529,7 +2713,8 @@ CREATE FUNCTION btean13cmp(ean13, ean13)
 	RETURNS int4
 	AS 'btint8cmp'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 
 CREATE OPERATOR CLASS ean13_ops DEFAULT
 	FOR TYPE ean13 USING btree FAMILY isn_ops AS
@@ -2543,7 +2728,8 @@ CREATE OPERATOR CLASS ean13_ops DEFAULT
 CREATE FUNCTION hashean13(ean13)
 	RETURNS int4
 	AS 'hashint8'
-	LANGUAGE 'internal' IMMUTABLE STRICT;
+	LANGUAGE 'internal' IMMUTABLE STRICT
+	PARALLEL SAFE;
 
 CREATE OPERATOR CLASS ean13_ops DEFAULT
 	FOR TYPE ean13 USING hash FAMILY isn_ops AS
@@ -2555,37 +2741,44 @@ CREATE FUNCTION btean13cmp(ean13, isbn13)
 	RETURNS int4
 	AS 'btint8cmp'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION btean13cmp(ean13, ismn13)
 	RETURNS int4
 	AS 'btint8cmp'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION btean13cmp(ean13, issn13)
 	RETURNS int4
 	AS 'btint8cmp'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION btean13cmp(ean13, isbn)
 	RETURNS int4
 	AS 'btint8cmp'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION btean13cmp(ean13, ismn)
 	RETURNS int4
 	AS 'btint8cmp'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION btean13cmp(ean13, issn)
 	RETURNS int4
 	AS 'btint8cmp'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION btean13cmp(ean13, upc)
 	RETURNS int4
 	AS 'btint8cmp'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 
 ALTER OPERATOR FAMILY isn_ops USING btree ADD
 	OPERATOR 1  < (ean13, isbn13),
@@ -2646,7 +2839,8 @@ CREATE FUNCTION btisbn13cmp(isbn13, isbn13)
 	RETURNS int4
 	AS 'btint8cmp'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 
 CREATE OPERATOR CLASS isbn13_ops DEFAULT
 	FOR TYPE isbn13 USING btree FAMILY isn_ops AS
@@ -2661,7 +2855,8 @@ CREATE FUNCTION hashisbn13(isbn13)
 	RETURNS int4
 	AS 'hashint8'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 
 CREATE OPERATOR CLASS isbn13_ops DEFAULT
 	FOR TYPE isbn13 USING hash FAMILY isn_ops AS
@@ -2673,12 +2868,14 @@ CREATE FUNCTION btisbn13cmp(isbn13, ean13)
 	RETURNS int4
 	AS 'btint8cmp'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION btisbn13cmp(isbn13, isbn)
 	RETURNS int4
 	AS 'btint8cmp'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 
 ALTER OPERATOR FAMILY isn_ops USING btree ADD
 	OPERATOR 1  < (isbn13, ean13),
@@ -2704,7 +2901,8 @@ CREATE FUNCTION btisbncmp(isbn, isbn)
 	RETURNS int4
 	AS 'btint8cmp'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 
 CREATE OPERATOR CLASS isbn_ops DEFAULT
 	FOR TYPE isbn USING btree FAMILY isn_ops AS
@@ -2719,7 +2917,8 @@ CREATE FUNCTION hashisbn(isbn)
 	RETURNS int4
 	AS 'hashint8'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 
 CREATE OPERATOR CLASS isbn_ops DEFAULT
 	FOR TYPE isbn USING hash FAMILY isn_ops AS
@@ -2731,12 +2930,14 @@ CREATE FUNCTION btisbncmp(isbn, ean13)
 	RETURNS int4
 	AS 'btint8cmp'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION btisbncmp(isbn, isbn13)
 	RETURNS int4
 	AS 'btint8cmp'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 
 ALTER OPERATOR FAMILY isn_ops USING btree ADD
 	OPERATOR 1  < (isbn, ean13),
@@ -2762,7 +2963,8 @@ CREATE FUNCTION btismn13cmp(ismn13, ismn13)
 	RETURNS int4
 	AS 'btint8cmp'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 
 CREATE OPERATOR CLASS ismn13_ops DEFAULT
 	FOR TYPE ismn13 USING btree FAMILY isn_ops AS
@@ -2777,7 +2979,8 @@ CREATE FUNCTION hashismn13(ismn13)
 	RETURNS int4
 	AS 'hashint8'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 
 CREATE OPERATOR CLASS ismn13_ops DEFAULT
 	FOR TYPE ismn13 USING hash FAMILY isn_ops AS
@@ -2789,12 +2992,14 @@ CREATE FUNCTION btismn13cmp(ismn13, ean13)
 	RETURNS int4
 	AS 'btint8cmp'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION btismn13cmp(ismn13, ismn)
 	RETURNS int4
 	AS 'btint8cmp'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 
 ALTER OPERATOR FAMILY isn_ops USING btree ADD
 	OPERATOR 1  < (ismn13, ean13),
@@ -2820,7 +3025,8 @@ CREATE FUNCTION btismncmp(ismn, ismn)
 	RETURNS int4
 	AS 'btint8cmp'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 
 CREATE OPERATOR CLASS ismn_ops DEFAULT
 	FOR TYPE ismn USING btree FAMILY isn_ops AS
@@ -2835,7 +3041,8 @@ CREATE FUNCTION hashismn(ismn)
 	RETURNS int4
 	AS 'hashint8'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 
 CREATE OPERATOR CLASS ismn_ops DEFAULT
 	FOR TYPE ismn USING hash FAMILY isn_ops AS
@@ -2847,12 +3054,14 @@ CREATE FUNCTION btismncmp(ismn, ean13)
 	RETURNS int4
 	AS 'btint8cmp'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION btismncmp(ismn, ismn13)
 	RETURNS int4
 	AS 'btint8cmp'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 
 ALTER OPERATOR FAMILY isn_ops USING btree ADD
 	OPERATOR 1  < (ismn, ean13),
@@ -2878,7 +3087,8 @@ CREATE FUNCTION btissn13cmp(issn13, issn13)
 	RETURNS int4
 	AS 'btint8cmp'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 
 CREATE OPERATOR CLASS issn13_ops DEFAULT
 	FOR TYPE issn13 USING btree FAMILY isn_ops AS
@@ -2893,7 +3103,8 @@ CREATE FUNCTION hashissn13(issn13)
 	RETURNS int4
 	AS 'hashint8'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 
 CREATE OPERATOR CLASS issn13_ops DEFAULT
 	FOR TYPE issn13 USING hash FAMILY isn_ops AS
@@ -2905,12 +3116,14 @@ CREATE FUNCTION btissn13cmp(issn13, ean13)
 	RETURNS int4
 	AS 'btint8cmp'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION btissn13cmp(issn13, issn)
 	RETURNS int4
 	AS 'btint8cmp'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 
 ALTER OPERATOR FAMILY isn_ops USING btree ADD
 	OPERATOR 1  < (issn13, ean13),
@@ -2936,7 +3149,8 @@ CREATE FUNCTION btissncmp(issn, issn)
 	RETURNS int4
 	AS 'btint8cmp'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 
 CREATE OPERATOR CLASS issn_ops DEFAULT
 	FOR TYPE issn USING btree FAMILY isn_ops AS
@@ -2951,7 +3165,8 @@ CREATE FUNCTION hashissn(issn)
 	RETURNS int4
 	AS 'hashint8'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 
 CREATE OPERATOR CLASS issn_ops DEFAULT
 	FOR TYPE issn USING hash FAMILY isn_ops AS
@@ -2963,12 +3178,14 @@ CREATE FUNCTION btissncmp(issn, ean13)
 	RETURNS int4
 	AS 'btint8cmp'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION btissncmp(issn, issn13)
 	RETURNS int4
 	AS 'btint8cmp'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 
 ALTER OPERATOR FAMILY isn_ops USING btree ADD
 	OPERATOR 1  < (issn, ean13),
@@ -2994,7 +3211,8 @@ CREATE FUNCTION btupccmp(upc, upc)
 	RETURNS int4
 	AS 'btint8cmp'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 
 CREATE OPERATOR CLASS upc_ops DEFAULT
 	FOR TYPE upc USING btree FAMILY isn_ops AS
@@ -3009,7 +3227,8 @@ CREATE FUNCTION hashupc(upc)
 	RETURNS int4
 	AS 'hashint8'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 
 CREATE OPERATOR CLASS upc_ops DEFAULT
 	FOR TYPE upc USING hash FAMILY isn_ops AS
@@ -3021,7 +3240,8 @@ CREATE FUNCTION btupccmp(upc, ean13)
 	RETURNS int4
 	AS 'btint8cmp'
 	LANGUAGE 'internal'
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 
 ALTER OPERATOR FAMILY isn_ops USING btree ADD
 	OPERATOR 1  < (upc, ean13),
@@ -3041,31 +3261,31 @@ ALTER OPERATOR FAMILY isn_ops USING hash ADD
 CREATE FUNCTION isbn13(ean13)
 RETURNS isbn13
 AS 'MODULE_PATHNAME', 'isbn_cast_from_ean13'
-LANGUAGE C IMMUTABLE STRICT;
+LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
 CREATE FUNCTION ismn13(ean13)
 RETURNS ismn13
 AS 'MODULE_PATHNAME', 'ismn_cast_from_ean13'
-LANGUAGE C IMMUTABLE STRICT;
+LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
 CREATE FUNCTION issn13(ean13)
 RETURNS issn13
 AS 'MODULE_PATHNAME', 'issn_cast_from_ean13'
-LANGUAGE C IMMUTABLE STRICT;
+LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
 CREATE FUNCTION isbn(ean13)
 RETURNS isbn
 AS 'MODULE_PATHNAME', 'isbn_cast_from_ean13'
-LANGUAGE C IMMUTABLE STRICT;
+LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
 CREATE FUNCTION ismn(ean13)
 RETURNS ismn
 AS 'MODULE_PATHNAME', 'ismn_cast_from_ean13'
-LANGUAGE C IMMUTABLE STRICT;
+LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
 CREATE FUNCTION issn(ean13)
 RETURNS issn
 AS 'MODULE_PATHNAME', 'issn_cast_from_ean13'
-LANGUAGE C IMMUTABLE STRICT;
+LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
 CREATE FUNCTION upc(ean13)
 RETURNS upc
 AS 'MODULE_PATHNAME', 'upc_cast_from_ean13'
-LANGUAGE C IMMUTABLE STRICT;
+LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
 
 
 CREATE CAST (ean13 AS isbn13) WITH FUNCTION isbn13(ean13);
@@ -3098,83 +3318,99 @@ CREATE FUNCTION make_valid(ean13)
 	RETURNS ean13
 	AS 'MODULE_PATHNAME'
 	LANGUAGE C
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION make_valid(isbn13)
 	RETURNS isbn13
 	AS 'MODULE_PATHNAME'
 	LANGUAGE C
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION make_valid(ismn13)
 	RETURNS ismn13
 	AS 'MODULE_PATHNAME'
 	LANGUAGE C
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION make_valid(issn13)
 	RETURNS issn13
 	AS 'MODULE_PATHNAME'
 	LANGUAGE C
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION make_valid(isbn)
 	RETURNS isbn
 	AS 'MODULE_PATHNAME'
 	LANGUAGE C
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION make_valid(ismn)
 	RETURNS ismn
 	AS 'MODULE_PATHNAME'
 	LANGUAGE C
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION make_valid(issn)
 	RETURNS issn
 	AS 'MODULE_PATHNAME'
 	LANGUAGE C
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION make_valid(upc)
 	RETURNS upc
 	AS 'MODULE_PATHNAME'
 	LANGUAGE C
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 
 CREATE FUNCTION is_valid(ean13)
 	RETURNS boolean
 	AS 'MODULE_PATHNAME'
 	LANGUAGE C
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION is_valid(isbn13)
 	RETURNS boolean
 	AS 'MODULE_PATHNAME'
 	LANGUAGE C
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION is_valid(ismn13)
 	RETURNS boolean
 	AS 'MODULE_PATHNAME'
 	LANGUAGE C
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION is_valid(issn13)
 	RETURNS boolean
 	AS 'MODULE_PATHNAME'
 	LANGUAGE C
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION is_valid(isbn)
 	RETURNS boolean
 	AS 'MODULE_PATHNAME'
 	LANGUAGE C
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION is_valid(ismn)
 	RETURNS boolean
 	AS 'MODULE_PATHNAME'
 	LANGUAGE C
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION is_valid(issn)
 	RETURNS boolean
 	AS 'MODULE_PATHNAME'
 	LANGUAGE C
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 CREATE FUNCTION is_valid(upc)
 	RETURNS boolean
 	AS 'MODULE_PATHNAME'
 	LANGUAGE C
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL SAFE;
 
 --
 -- isn_weak(boolean) - Sets the weak input mode.
@@ -3184,7 +3420,8 @@ CREATE FUNCTION isn_weak(boolean)
 	RETURNS boolean
 	AS 'MODULE_PATHNAME', 'accept_weak_input'
 	LANGUAGE C
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL RESTRICTED;
 
 --
 -- isn_weak() - Gets the weak input mode status
@@ -3193,4 +3430,5 @@ CREATE FUNCTION isn_weak()
 	RETURNS boolean
 	AS 'MODULE_PATHNAME', 'weak_input_status'
 	LANGUAGE C
-	IMMUTABLE STRICT;
+	IMMUTABLE STRICT
+	PARALLEL RESTRICTED;
diff --git a/contrib/isn/isn.control b/contrib/isn/isn.control
index cf0b2ebe3831f87c93678689846a1a100cce2570..544bd8d0bf288a599a6576765fd56e8ca6a51a30 100644
--- a/contrib/isn/isn.control
+++ b/contrib/isn/isn.control
@@ -1,5 +1,5 @@
 # isn extension
 comment = 'data types for international product numbering standards'
-default_version = '1.0'
+default_version = '1.1'
 module_pathname = '$libdir/isn'
 relocatable = true