aboutsummaryrefslogtreecommitdiff
path: root/src/include/utils/xml.h
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2008-01-15 18:57:00 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2008-01-15 18:57:00 +0000
commitac12412edec900fea429d5b9bf9e58990d9f4533 (patch)
treeb650ed9f0e8248986b72dba615c9ed31bfa0a19d /src/include/utils/xml.h
parentdeb7deda2661c86606b682b485c19315cef0eaeb (diff)
downloadpostgresql-ac12412edec900fea429d5b9bf9e58990d9f4533.tar.gz
postgresql-ac12412edec900fea429d5b9bf9e58990d9f4533.zip
Revise memory management for libxml calls. Instead of keeping libxml's data
in whichever context happens to be current during a call of an xml.c function, use a dedicated context that will not go away until we explicitly delete it (which we do at transaction end or subtransaction abort). This makes recovery after an error much simpler --- we don't have to individually delete the data structures created by libxml. Also, we need to initialize and cleanup libxml only once per transaction (if there's no error) instead of once per function call, so it should be a bit faster. We'll need to keep an eye out for intra-transaction memory leaks, though. Alvaro and Tom.
Diffstat (limited to 'src/include/utils/xml.h')
-rw-r--r--src/include/utils/xml.h4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/include/utils/xml.h b/src/include/utils/xml.h
index 8d5b222f803..99a46f8ef76 100644
--- a/src/include/utils/xml.h
+++ b/src/include/utils/xml.h
@@ -7,7 +7,7 @@
* Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $PostgreSQL: pgsql/src/include/utils/xml.h,v 1.22 2008/01/01 19:45:59 momjian Exp $
+ * $PostgreSQL: pgsql/src/include/utils/xml.h,v 1.23 2008/01/15 18:57:00 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -75,6 +75,8 @@ extern char *map_sql_identifier_to_xml_name(char *ident, bool fully_escaped, boo
extern char *map_xml_name_to_sql_identifier(char *name);
extern char *map_sql_value_to_xml_value(Datum value, Oid type);
+extern void AtEOXact_xml(void);
+
typedef enum
{
XMLBINARY_BASE64,