diff options
author | Peter Eisentraut <peter_e@gmx.net> | 2007-02-11 22:18:16 +0000 |
---|---|---|
committer | Peter Eisentraut <peter_e@gmx.net> | 2007-02-11 22:18:16 +0000 |
commit | eb19144894b0ed44602d6cb8daee9eaa59c902c5 (patch) | |
tree | 9cc455dbfde7496b123494fba16fea348259954d /src/backend/utils/adt/xml.c | |
parent | 733abd298781d604660bc316a845290991774588 (diff) | |
download | postgresql-eb19144894b0ed44602d6cb8daee9eaa59c902c5.tar.gz postgresql-eb19144894b0ed44602d6cb8daee9eaa59c902c5.zip |
Add support for optionally escaping periods when converting SQL identifiers
to XML names, which will be required for supporting XML export.
Diffstat (limited to 'src/backend/utils/adt/xml.c')
-rw-r--r-- | src/backend/utils/adt/xml.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/backend/utils/adt/xml.c b/src/backend/utils/adt/xml.c index 32d26cf3ba7..2d3a2d963f6 100644 --- a/src/backend/utils/adt/xml.c +++ b/src/backend/utils/adt/xml.c @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2007, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/backend/utils/adt/xml.c,v 1.26 2007/02/10 18:47:41 petere Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/xml.c,v 1.27 2007/02/11 22:18:15 petere Exp $ * *------------------------------------------------------------------------- */ @@ -1318,8 +1318,14 @@ is_valid_xml_namechar(pg_wchar c) * Map SQL identifier to XML name; see SQL/XML:2003 section 9.1. */ char * -map_sql_identifier_to_xml_name(char *ident, bool fully_escaped) +map_sql_identifier_to_xml_name(char *ident, bool fully_escaped, bool escape_period) { + /* + * SQL/XML doesn't make use of this case anywhere, so it's + * probably a mistake. + */ + Assert(fully_escaped || !escape_period); + #ifdef USE_LIBXML StringInfoData buf; char *p; @@ -1340,6 +1346,8 @@ map_sql_identifier_to_xml_name(char *ident, bool fully_escaped) else appendStringInfo(&buf, "_x0058_"); } + else if (escape_period && *p == '.') + appendStringInfo(&buf, "_x002E_"); else { pg_wchar u = sqlchar_to_unicode(p); |