mirror of
https://github.com/postgres/postgres.git
synced 2025-04-20 00:42:27 +03:00
Revert "Delete contrib/xml2's legacy implementation of xml_is_well_formed()."
This partly reverts commit 20540710e83f2873707c284a0c0693f0b57156c4. Since we've given up on adding PGDLLEXPORT markers to PG_FUNCTION_INFO_V1, there's no need to remove the legacy compatibility function. I kept the documentation changes, though, as they seem appropriate anyway.
This commit is contained in:
parent
33cb96ba1a
commit
c59f94e81e
@ -81,6 +81,51 @@ pgxml_parser_init(PgXmlStrictness strictness)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Returns true if document is well-formed
|
||||||
|
*
|
||||||
|
* Note: this has been superseded by a core function. We still have to
|
||||||
|
* have it in the contrib module so that existing SQL-level references
|
||||||
|
* to the function won't fail; but in normal usage with up-to-date SQL
|
||||||
|
* definitions for the contrib module, this won't be called.
|
||||||
|
*/
|
||||||
|
|
||||||
|
PG_FUNCTION_INFO_V1(xml_is_well_formed);
|
||||||
|
|
||||||
|
Datum
|
||||||
|
xml_is_well_formed(PG_FUNCTION_ARGS)
|
||||||
|
{
|
||||||
|
text *t = PG_GETARG_TEXT_P(0); /* document buffer */
|
||||||
|
bool result = false;
|
||||||
|
int32 docsize = VARSIZE(t) - VARHDRSZ;
|
||||||
|
xmlDocPtr doctree;
|
||||||
|
PgXmlErrorContext *xmlerrcxt;
|
||||||
|
|
||||||
|
xmlerrcxt = pgxml_parser_init(PG_XML_STRICTNESS_LEGACY);
|
||||||
|
|
||||||
|
PG_TRY();
|
||||||
|
{
|
||||||
|
doctree = xmlParseMemory((char *) VARDATA(t), docsize);
|
||||||
|
|
||||||
|
result = (doctree != NULL);
|
||||||
|
|
||||||
|
if (doctree != NULL)
|
||||||
|
xmlFreeDoc(doctree);
|
||||||
|
}
|
||||||
|
PG_CATCH();
|
||||||
|
{
|
||||||
|
pg_xml_done(xmlerrcxt, true);
|
||||||
|
|
||||||
|
PG_RE_THROW();
|
||||||
|
}
|
||||||
|
PG_END_TRY();
|
||||||
|
|
||||||
|
pg_xml_done(xmlerrcxt, false);
|
||||||
|
|
||||||
|
PG_RETURN_BOOL(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Encodes special characters (<, >, &, " and \r) as XML entities */
|
/* Encodes special characters (<, >, &, " and \r) as XML entities */
|
||||||
|
|
||||||
PG_FUNCTION_INFO_V1(xml_encode_special_chars);
|
PG_FUNCTION_INFO_V1(xml_encode_special_chars);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user