From 1246d797e4b21e5bf4267e8b663057b92258b728 Mon Sep 17 00:00:00 2001 From: Tom Lane <tgl@sss.pgh.pa.us> Date: Sat, 16 Sep 2006 16:18:11 +0000 Subject: [PATCH] Rename xml_valid() to xml_is_well_formed(), but provide a temporary alias with the old name for backwards compatibility. Per discussion, the old name is actively wrong because validity and well-formedness have different meanings in XML. --- contrib/xml2/README.xml2 | 13 ++++++++++--- contrib/xml2/pgxml.sql.in | 6 +++++- contrib/xml2/uninstall_pgxml.sql | 3 +++ contrib/xml2/xpath.c | 8 ++++---- doc/src/sgml/datatype.sgml | 6 +++--- 5 files changed, 25 insertions(+), 11 deletions(-) diff --git a/contrib/xml2/README.xml2 b/contrib/xml2/README.xml2 index f5335c38b56..c2e71703860 100644 --- a/contrib/xml2/README.xml2 +++ b/contrib/xml2/README.xml2 @@ -21,17 +21,24 @@ you can place it in a different directory in a PostgreSQL tree). Before you begin, just check the Makefile, and then just 'make' and 'make install'. -This code requires libxml to be previously installed. +By default, this module requires both libxml2 and libxslt to be installed +on your system. If you do not have libxslt or do not want to use XSLT +functions, you must edit the Makefile to not build the XSLT functions, +as directed in its comments; and edit pgxml.sql.in to remove the XSLT +function declarations, as directed in its comments. Description of functions ------------------------ The first set of functions are straightforward XML parsing and XPath queries: -xml_valid(document) RETURNS bool +xml_is_well_formed(document) RETURNS bool This parses the document text in its parameter and returns true if the -document is well-formed XML. +document is well-formed XML. (Note: before PostgreSQL 8.2, this function +was called xml_valid(). That is the wrong name since validity and +well-formedness have different meanings in XML. The old name is still +available, but is deprecated and will be removed in 8.3.) xpath_string(document,query) RETURNS text xpath_number(document,query) RETURNS float4 diff --git a/contrib/xml2/pgxml.sql.in b/contrib/xml2/pgxml.sql.in index 006f3f7f53c..4555cc83311 100644 --- a/contrib/xml2/pgxml.sql.in +++ b/contrib/xml2/pgxml.sql.in @@ -1,8 +1,12 @@ --SQL for XML parser -CREATE OR REPLACE FUNCTION xml_valid(text) RETURNS bool +CREATE OR REPLACE FUNCTION xml_is_well_formed(text) RETURNS bool AS 'MODULE_PATHNAME' LANGUAGE C STRICT IMMUTABLE; +-- deprecated old name for xml_is_well_formed +CREATE OR REPLACE FUNCTION xml_valid(text) RETURNS bool + AS 'MODULE_PATHNAME', 'xml_is_well_formed' LANGUAGE C STRICT IMMUTABLE; + CREATE OR REPLACE FUNCTION xml_encode_special_chars(text) RETURNS text AS 'MODULE_PATHNAME' LANGUAGE C STRICT IMMUTABLE; diff --git a/contrib/xml2/uninstall_pgxml.sql b/contrib/xml2/uninstall_pgxml.sql index b055ce85a5f..f375f59724a 100644 --- a/contrib/xml2/uninstall_pgxml.sql +++ b/contrib/xml2/uninstall_pgxml.sql @@ -24,4 +24,7 @@ DROP FUNCTION xpath_string(text,text); DROP FUNCTION xml_encode_special_chars(text); +-- deprecated old name for xml_is_well_formed DROP FUNCTION xml_valid(text); + +DROP FUNCTION xml_is_well_formed(text); diff --git a/contrib/xml2/xpath.c b/contrib/xml2/xpath.c index 01f1976ab61..cc830322193 100644 --- a/contrib/xml2/xpath.c +++ b/contrib/xml2/xpath.c @@ -42,7 +42,7 @@ xmlChar *pgxml_texttoxmlchar(text *textstring); static xmlXPathObjectPtr pgxml_xpath(text *document, xmlChar * xpath); -Datum xml_valid(PG_FUNCTION_ARGS); +Datum xml_is_well_formed(PG_FUNCTION_ARGS); Datum xml_encode_special_chars(PG_FUNCTION_ARGS); Datum xpath_nodeset(PG_FUNCTION_ARGS); Datum xpath_string(PG_FUNCTION_ARGS); @@ -166,12 +166,12 @@ pgxml_parser_init() /* Returns true if document is well-formed */ -PG_FUNCTION_INFO_V1(xml_valid); +PG_FUNCTION_INFO_V1(xml_is_well_formed); Datum -xml_valid(PG_FUNCTION_ARGS) +xml_is_well_formed(PG_FUNCTION_ARGS) { - /* called as xml_valid(document) */ + /* called as xml_is_well_formed(document) */ xmlDocPtr doctree; text *t = PG_GETARG_TEXT_P(0); /* document buffer */ int32 docsize = VARSIZE(t) - VARHDRSZ; diff --git a/doc/src/sgml/datatype.sgml b/doc/src/sgml/datatype.sgml index ac632ee3778..5bca7c418f3 100644 --- a/doc/src/sgml/datatype.sgml +++ b/doc/src/sgml/datatype.sgml @@ -1,4 +1,4 @@ -<!-- $PostgreSQL: pgsql/doc/src/sgml/datatype.sgml,v 1.174 2006/09/16 00:30:12 momjian Exp $ --> +<!-- $PostgreSQL: pgsql/doc/src/sgml/datatype.sgml,v 1.175 2006/09/16 16:18:11 tgl Exp $ --> <chapter id="datatype"> <title id="datatype-title">Data Types</title> @@ -3345,8 +3345,8 @@ SELECT * FROM pg_attribute <para> <filename>/contrib/xml2</> has a function called - <function>xml_valid()</> that can be used in a <literal>CHECK</> - constraint to enforce that a field contains valid <acronym>XML</>. + <function>xml_is_well_formed()</> that can be used in a <literal>CHECK</> + constraint to enforce that a field contains well-formed <acronym>XML</>. It does not support validation against a specific <acronym>XML</> schema. A server-side language with <acronym>XML</> capabilities could be used to do schema-specific <acronym>XML</> checks. -- GitLab