Fix incorrect xmlschema output for types timetz and timestamptz.
authorTom Lane <[email protected]>
Fri, 18 Mar 2022 20:01:42 +0000 (16:01 -0400)
committerTom Lane <[email protected]>
Fri, 18 Mar 2022 20:01:42 +0000 (16:01 -0400)
The output of table_to_xmlschema() and allied functions includes
a regex describing valid values for these types ... but the regex
was itself invalid, as it failed to escape a literal "+" sign.

Report and fix by Renan Soares Lopes.  Back-patch to all
supported branches.

Discussion: https://postgr.es/m/7f6fabaa-3f8f-49ab-89ca-59fbfe633105@me.com

src/backend/utils/adt/xml.c
src/test/regress/expected/xmlmap.out
src/test/regress/expected/xmlmap_1.out
src/test/regress/sql/xmlmap.sql

index a456dca458de5bb413ce6e15119ca7755fb72e0e..ca51db295562fa143dffef12b704d01f7643a320 100644 (file)
@@ -3632,7 +3632,7 @@ map_sql_type_to_xmlschema_type(Oid typeoid, int typmod)
            case TIMEOID:
            case TIMETZOID:
                {
-                   const char *tz = (typeoid == TIMETZOID ? "(+|-)\\p{Nd}{2}:\\p{Nd}{2}" : "");
+                   const char *tz = (typeoid == TIMETZOID ? "(\\+|-)\\p{Nd}{2}:\\p{Nd}{2}" : "");
 
                    if (typmod == -1)
                        appendStringInfo(&result,
@@ -3655,7 +3655,7 @@ map_sql_type_to_xmlschema_type(Oid typeoid, int typmod)
            case TIMESTAMPOID:
            case TIMESTAMPTZOID:
                {
-                   const char *tz = (typeoid == TIMESTAMPTZOID ? "(+|-)\\p{Nd}{2}:\\p{Nd}{2}" : "");
+                   const char *tz = (typeoid == TIMESTAMPTZOID ? "(\\+|-)\\p{Nd}{2}:\\p{Nd}{2}" : "");
 
                    if (typmod == -1)
                        appendStringInfo(&result,
index c08f8a0d9c17a466c63a83150ce2baa49445f971..ccc5460663019bcfe280802567c73f3214b8d561 100644 (file)
@@ -2,9 +2,15 @@ CREATE SCHEMA testxmlschema;
 CREATE TABLE testxmlschema.test1 (a int, b text);
 INSERT INTO testxmlschema.test1 VALUES (1, 'one'), (2, 'two'), (-1, null);
 CREATE DOMAIN testxmldomain AS varchar;
-CREATE TABLE testxmlschema.test2 (z int, y varchar(500), x char(6), w numeric(9,2), v smallint, u bigint, t real, s time, r timestamp, q date, p xml, o testxmldomain, n bool, m bytea, aaa text);
+CREATE TABLE testxmlschema.test2 (z int, y varchar(500), x char(6),
+    w numeric(9,2), v smallint, u bigint, t real,
+    s time, stz timetz, r timestamp, rtz timestamptz, q date,
+    p xml, o testxmldomain, n bool, m bytea, aaa text);
 ALTER TABLE testxmlschema.test2 DROP COLUMN aaa;
-INSERT INTO testxmlschema.test2 VALUES (55, 'abc', 'def', 98.6, 2, 999, 0, '21:07', '2009-06-08 21:07:30', '2009-06-08', NULL, 'ABC', true, 'XYZ');
+INSERT INTO testxmlschema.test2 VALUES (55, 'abc', 'def',
+    98.6, 2, 999, 0,
+    '21:07', '21:11 +05', '2009-06-08 21:07:30', '2009-06-08 21:07:30 -07', '2009-06-08',
+    NULL, 'ABC', true, 'XYZ');
 SELECT table_to_xml('testxmlschema.test1', false, false, '');
                          table_to_xml                          
 ---------------------------------------------------------------
@@ -107,7 +113,9 @@ SELECT table_to_xml('testxmlschema.test2', false, false, '');
    <u>999</u>                                                 +
    <t>0</t>                                                   +
    <s>21:07:00</s>                                            +
+   <stz>21:11:00+05</stz>                                     +
    <r>2009-06-08T21:07:30</r>                                 +
+   <rtz>2009-06-08T21:07:30-07:00</rtz>                       +
    <q>2009-06-08</q>                                          +
    <o>ABC</o>                                                 +
    <n>true</n>                                                +
@@ -253,113 +261,127 @@ SELECT table_to_xmlschema('testxmlschema.test1', true, true, '');
 (1 row)
 
 SELECT table_to_xmlschema('testxmlschema.test2', false, false, '');
-                                               table_to_xmlschema                                                
------------------------------------------------------------------------------------------------------------------
- <xsd:schema                                                                                                    +
-     xmlns:xsd="http://www.w3.org/2001/XMLSchema">                                                              +
-                                                                                                                +
- <xsd:simpleType name="INTEGER">                                                                                +
-   <xsd:restriction base="xsd:int">                                                                             +
-     <xsd:maxInclusive value="2147483647"/>                                                                     +
-     <xsd:minInclusive value="-2147483648"/>                                                                    +
-   </xsd:restriction>                                                                                           +
- </xsd:simpleType>                                                                                              +
-                                                                                                                +
- <xsd:simpleType name="VARCHAR">                                                                                +
-   <xsd:restriction base="xsd:string">                                                                          +
-   </xsd:restriction>                                                                                           +
- </xsd:simpleType>                                                                                              +
-                                                                                                                +
- <xsd:simpleType name="CHAR">                                                                                   +
-   <xsd:restriction base="xsd:string">                                                                          +
-   </xsd:restriction>                                                                                           +
- </xsd:simpleType>                                                                                              +
-                                                                                                                +
- <xsd:simpleType name="NUMERIC">                                                                                +
- </xsd:simpleType>                                                                                              +
-                                                                                                                +
- <xsd:simpleType name="SMALLINT">                                                                               +
-   <xsd:restriction base="xsd:short">                                                                           +
-     <xsd:maxInclusive value="32767"/>                                                                          +
-     <xsd:minInclusive value="-32768"/>                                                                         +
-   </xsd:restriction>                                                                                           +
- </xsd:simpleType>                                                                                              +
-                                                                                                                +
- <xsd:simpleType name="BIGINT">                                                                                 +
-   <xsd:restriction base="xsd:long">                                                                            +
-     <xsd:maxInclusive value="9223372036854775807"/>                                                            +
-     <xsd:minInclusive value="-9223372036854775808"/>                                                           +
-   </xsd:restriction>                                                                                           +
- </xsd:simpleType>                                                                                              +
-                                                                                                                +
- <xsd:simpleType name="REAL">                                                                                   +
-   <xsd:restriction base="xsd:float"></xsd:restriction>                                                         +
- </xsd:simpleType>                                                                                              +
-                                                                                                                +
- <xsd:simpleType name="TIME">                                                                                   +
-   <xsd:restriction base="xsd:time">                                                                            +
-     <xsd:pattern value="\p{Nd}{2}:\p{Nd}{2}:\p{Nd}{2}(.\p{Nd}+)?"/>                                            +
-   </xsd:restriction>                                                                                           +
- </xsd:simpleType>                                                                                              +
-                                                                                                                +
- <xsd:simpleType name="TIMESTAMP">                                                                              +
-   <xsd:restriction base="xsd:dateTime">                                                                        +
-     <xsd:pattern value="\p{Nd}{4}-\p{Nd}{2}-\p{Nd}{2}T\p{Nd}{2}:\p{Nd}{2}:\p{Nd}{2}(.\p{Nd}+)?"/>              +
-   </xsd:restriction>                                                                                           +
- </xsd:simpleType>                                                                                              +
-                                                                                                                +
- <xsd:simpleType name="DATE">                                                                                   +
-   <xsd:restriction base="xsd:date">                                                                            +
-     <xsd:pattern value="\p{Nd}{4}-\p{Nd}{2}-\p{Nd}{2}"/>                                                       +
-   </xsd:restriction>                                                                                           +
- </xsd:simpleType>                                                                                              +
-                                                                                                                +
- <xsd:complexType mixed="true">                                                                                 +
-   <xsd:sequence>                                                                                               +
-     <xsd:any name="element" minOccurs="0" maxOccurs="unbounded" processContents="skip"/>                       +
-   </xsd:sequence>                                                                                              +
- </xsd:complexType>                                                                                             +
-                                                                                                                +
- <xsd:simpleType name="Domain.regression.public.testxmldomain">                                                 +
-   <xsd:restriction base="VARCHAR"/>                                                                            +
- </xsd:simpleType>                                                                                              +
-                                                                                                                +
- <xsd:simpleType name="BOOLEAN">                                                                                +
-   <xsd:restriction base="xsd:boolean"></xsd:restriction>                                                       +
- </xsd:simpleType>                                                                                              +
-                                                                                                                +
- <xsd:simpleType name="UDT.regression.pg_catalog.bytea">                                                        +
-   <xsd:restriction base="xsd:base64Binary">                                                                    +
-   </xsd:restriction>                                                                                           +
- </xsd:simpleType>                                                                                              +
-                                                                                                                +
- <xsd:complexType name="RowType.regression.testxmlschema.test2">                                                +
-   <xsd:sequence>                                                                                               +
-     <xsd:element name="z" type="INTEGER" minOccurs="0"></xsd:element>                                          +
-     <xsd:element name="y" type="VARCHAR" minOccurs="0"></xsd:element>                                          +
-     <xsd:element name="x" type="CHAR" minOccurs="0"></xsd:element>                                             +
-     <xsd:element name="w" type="NUMERIC" minOccurs="0"></xsd:element>                                          +
-     <xsd:element name="v" type="SMALLINT" minOccurs="0"></xsd:element>                                         +
-     <xsd:element name="u" type="BIGINT" minOccurs="0"></xsd:element>                                           +
-     <xsd:element name="t" type="REAL" minOccurs="0"></xsd:element>                                             +
-     <xsd:element name="s" type="TIME" minOccurs="0"></xsd:element>                                             +
-     <xsd:element name="r" type="TIMESTAMP" minOccurs="0"></xsd:element>                                        +
-     <xsd:element name="q" type="DATE" minOccurs="0"></xsd:element>                                             +
-     <xsd:element name="p" type="XML" minOccurs="0"></xsd:element>                                              +
-     <xsd:element name="o" type="Domain.regression.public.testxmldomain" minOccurs="0"></xsd:element>           +
-     <xsd:element name="n" type="BOOLEAN" minOccurs="0"></xsd:element>                                          +
-     <xsd:element name="m" type="UDT.regression.pg_catalog.bytea" minOccurs="0"></xsd:element>                  +
-   </xsd:sequence>                                                                                              +
- </xsd:complexType>                                                                                             +
-                                                                                                                +
- <xsd:complexType name="TableType.regression.testxmlschema.test2">                                              +
-   <xsd:sequence>                                                                                               +
-     <xsd:element name="row" type="RowType.regression.testxmlschema.test2" minOccurs="0" maxOccurs="unbounded"/>+
-   </xsd:sequence>                                                                                              +
- </xsd:complexType>                                                                                             +
-                                                                                                                +
- <xsd:element name="test2" type="TableType.regression.testxmlschema.test2"/>                                    +
-                                                                                                                +
+                                                     table_to_xmlschema                                                     
+----------------------------------------------------------------------------------------------------------------------------
+ <xsd:schema                                                                                                               +
+     xmlns:xsd="http://www.w3.org/2001/XMLSchema">                                                                         +
+                                                                                                                           +
+ <xsd:simpleType name="INTEGER">                                                                                           +
+   <xsd:restriction base="xsd:int">                                                                                        +
+     <xsd:maxInclusive value="2147483647"/>                                                                                +
+     <xsd:minInclusive value="-2147483648"/>                                                                               +
+   </xsd:restriction>                                                                                                      +
+ </xsd:simpleType>                                                                                                         +
+                                                                                                                           +
+ <xsd:simpleType name="VARCHAR">                                                                                           +
+   <xsd:restriction base="xsd:string">                                                                                     +
+   </xsd:restriction>                                                                                                      +
+ </xsd:simpleType>                                                                                                         +
+                                                                                                                           +
+ <xsd:simpleType name="CHAR">                                                                                              +
+   <xsd:restriction base="xsd:string">                                                                                     +
+   </xsd:restriction>                                                                                                      +
+ </xsd:simpleType>                                                                                                         +
+                                                                                                                           +
+ <xsd:simpleType name="NUMERIC">                                                                                           +
+ </xsd:simpleType>                                                                                                         +
+                                                                                                                           +
+ <xsd:simpleType name="SMALLINT">                                                                                          +
+   <xsd:restriction base="xsd:short">                                                                                      +
+     <xsd:maxInclusive value="32767"/>                                                                                     +
+     <xsd:minInclusive value="-32768"/>                                                                                    +
+   </xsd:restriction>                                                                                                      +
+ </xsd:simpleType>                                                                                                         +
+                                                                                                                           +
+ <xsd:simpleType name="BIGINT">                                                                                            +
+   <xsd:restriction base="xsd:long">                                                                                       +
+     <xsd:maxInclusive value="9223372036854775807"/>                                                                       +
+     <xsd:minInclusive value="-9223372036854775808"/>                                                                      +
+   </xsd:restriction>                                                                                                      +
+ </xsd:simpleType>                                                                                                         +
+                                                                                                                           +
+ <xsd:simpleType name="REAL">                                                                                              +
+   <xsd:restriction base="xsd:float"></xsd:restriction>                                                                    +
+ </xsd:simpleType>                                                                                                         +
+                                                                                                                           +
+ <xsd:simpleType name="TIME">                                                                                              +
+   <xsd:restriction base="xsd:time">                                                                                       +
+     <xsd:pattern value="\p{Nd}{2}:\p{Nd}{2}:\p{Nd}{2}(.\p{Nd}+)?"/>                                                       +
+   </xsd:restriction>                                                                                                      +
+ </xsd:simpleType>                                                                                                         +
+                                                                                                                           +
+ <xsd:simpleType name="TIME_WTZ">                                                                                          +
+   <xsd:restriction base="xsd:time">                                                                                       +
+     <xsd:pattern value="\p{Nd}{2}:\p{Nd}{2}:\p{Nd}{2}(.\p{Nd}+)?(\+|-)\p{Nd}{2}:\p{Nd}{2}"/>                              +
+   </xsd:restriction>                                                                                                      +
+ </xsd:simpleType>                                                                                                         +
+                                                                                                                           +
+ <xsd:simpleType name="TIMESTAMP">                                                                                         +
+   <xsd:restriction base="xsd:dateTime">                                                                                   +
+     <xsd:pattern value="\p{Nd}{4}-\p{Nd}{2}-\p{Nd}{2}T\p{Nd}{2}:\p{Nd}{2}:\p{Nd}{2}(.\p{Nd}+)?"/>                         +
+   </xsd:restriction>                                                                                                      +
+ </xsd:simpleType>                                                                                                         +
+                                                                                                                           +
+ <xsd:simpleType name="TIMESTAMP_WTZ">                                                                                     +
+   <xsd:restriction base="xsd:dateTime">                                                                                   +
+     <xsd:pattern value="\p{Nd}{4}-\p{Nd}{2}-\p{Nd}{2}T\p{Nd}{2}:\p{Nd}{2}:\p{Nd}{2}(.\p{Nd}+)?(\+|-)\p{Nd}{2}:\p{Nd}{2}"/>+
+   </xsd:restriction>                                                                                                      +
+ </xsd:simpleType>                                                                                                         +
+                                                                                                                           +
+ <xsd:simpleType name="DATE">                                                                                              +
+   <xsd:restriction base="xsd:date">                                                                                       +
+     <xsd:pattern value="\p{Nd}{4}-\p{Nd}{2}-\p{Nd}{2}"/>                                                                  +
+   </xsd:restriction>                                                                                                      +
+ </xsd:simpleType>                                                                                                         +
+                                                                                                                           +
+ <xsd:complexType mixed="true">                                                                                            +
+   <xsd:sequence>                                                                                                          +
+     <xsd:any name="element" minOccurs="0" maxOccurs="unbounded" processContents="skip"/>                                  +
+   </xsd:sequence>                                                                                                         +
+ </xsd:complexType>                                                                                                        +
+                                                                                                                           +
+ <xsd:simpleType name="Domain.regression.public.testxmldomain">                                                            +
+   <xsd:restriction base="VARCHAR"/>                                                                                       +
+ </xsd:simpleType>                                                                                                         +
+                                                                                                                           +
+ <xsd:simpleType name="BOOLEAN">                                                                                           +
+   <xsd:restriction base="xsd:boolean"></xsd:restriction>                                                                  +
+ </xsd:simpleType>                                                                                                         +
+                                                                                                                           +
+ <xsd:simpleType name="UDT.regression.pg_catalog.bytea">                                                                   +
+   <xsd:restriction base="xsd:base64Binary">                                                                               +
+   </xsd:restriction>                                                                                                      +
+ </xsd:simpleType>                                                                                                         +
+                                                                                                                           +
+ <xsd:complexType name="RowType.regression.testxmlschema.test2">                                                           +
+   <xsd:sequence>                                                                                                          +
+     <xsd:element name="z" type="INTEGER" minOccurs="0"></xsd:element>                                                     +
+     <xsd:element name="y" type="VARCHAR" minOccurs="0"></xsd:element>                                                     +
+     <xsd:element name="x" type="CHAR" minOccurs="0"></xsd:element>                                                        +
+     <xsd:element name="w" type="NUMERIC" minOccurs="0"></xsd:element>                                                     +
+     <xsd:element name="v" type="SMALLINT" minOccurs="0"></xsd:element>                                                    +
+     <xsd:element name="u" type="BIGINT" minOccurs="0"></xsd:element>                                                      +
+     <xsd:element name="t" type="REAL" minOccurs="0"></xsd:element>                                                        +
+     <xsd:element name="s" type="TIME" minOccurs="0"></xsd:element>                                                        +
+     <xsd:element name="stz" type="TIME_WTZ" minOccurs="0"></xsd:element>                                                  +
+     <xsd:element name="r" type="TIMESTAMP" minOccurs="0"></xsd:element>                                                   +
+     <xsd:element name="rtz" type="TIMESTAMP_WTZ" minOccurs="0"></xsd:element>                                             +
+     <xsd:element name="q" type="DATE" minOccurs="0"></xsd:element>                                                        +
+     <xsd:element name="p" type="XML" minOccurs="0"></xsd:element>                                                         +
+     <xsd:element name="o" type="Domain.regression.public.testxmldomain" minOccurs="0"></xsd:element>                      +
+     <xsd:element name="n" type="BOOLEAN" minOccurs="0"></xsd:element>                                                     +
+     <xsd:element name="m" type="UDT.regression.pg_catalog.bytea" minOccurs="0"></xsd:element>                             +
+   </xsd:sequence>                                                                                                         +
+ </xsd:complexType>                                                                                                        +
+                                                                                                                           +
+ <xsd:complexType name="TableType.regression.testxmlschema.test2">                                                         +
+   <xsd:sequence>                                                                                                          +
+     <xsd:element name="row" type="RowType.regression.testxmlschema.test2" minOccurs="0" maxOccurs="unbounded"/>           +
+   </xsd:sequence>                                                                                                         +
+ </xsd:complexType>                                                                                                        +
+                                                                                                                           +
+ <xsd:element name="test2" type="TableType.regression.testxmlschema.test2"/>                                               +
+                                                                                                                           +
  </xsd:schema>
 (1 row)
 
@@ -816,7 +838,9 @@ SELECT schema_to_xml('testxmlschema', false, true, '');
    <u>999</u>                                                         +
    <t>0</t>                                                           +
    <s>21:07:00</s>                                                    +
+   <stz>21:11:00+05</stz>                                             +
    <r>2009-06-08T21:07:30</r>                                         +
+   <rtz>2009-06-08T21:07:30-07:00</rtz>                               +
    <q>2009-06-08</q>                                                  +
    <o>ABC</o>                                                         +
    <n>true</n>                                                        +
@@ -863,7 +887,9 @@ SELECT schema_to_xml('testxmlschema', true, false, '');
    <u>999</u>                                                         +
    <t>0</t>                                                           +
    <s>21:07:00</s>                                                    +
+   <stz>21:11:00+05</stz>                                             +
    <r>2009-06-08T21:07:30</r>                                         +
+   <rtz>2009-06-08T21:07:30-07:00</rtz>                               +
    <q>2009-06-08</q>                                                  +
    <p xsi:nil="true"/>                                                +
    <o>ABC</o>                                                         +
@@ -878,337 +904,375 @@ SELECT schema_to_xml('testxmlschema', true, false, '');
 (1 row)
 
 SELECT schema_to_xmlschema('testxmlschema', false, true, '');
-                                                schema_to_xmlschema                                                
--------------------------------------------------------------------------------------------------------------------
- <xsd:schema                                                                                                      +
-     xmlns:xsd="http://www.w3.org/2001/XMLSchema">                                                                +
-                                                                                                                  +
- <xsd:simpleType name="INTEGER">                                                                                  +
-   <xsd:restriction base="xsd:int">                                                                               +
-     <xsd:maxInclusive value="2147483647"/>                                                                       +
-     <xsd:minInclusive value="-2147483648"/>                                                                      +
-   </xsd:restriction>                                                                                             +
- </xsd:simpleType>                                                                                                +
-                                                                                                                  +
- <xsd:simpleType name="UDT.regression.pg_catalog.text">                                                           +
-   <xsd:restriction base="xsd:string">                                                                            +
-   </xsd:restriction>                                                                                             +
- </xsd:simpleType>                                                                                                +
-                                                                                                                  +
- <xsd:simpleType name="VARCHAR">                                                                                  +
-   <xsd:restriction base="xsd:string">                                                                            +
-   </xsd:restriction>                                                                                             +
- </xsd:simpleType>                                                                                                +
-                                                                                                                  +
- <xsd:simpleType name="CHAR">                                                                                     +
-   <xsd:restriction base="xsd:string">                                                                            +
-   </xsd:restriction>                                                                                             +
- </xsd:simpleType>                                                                                                +
-                                                                                                                  +
- <xsd:simpleType name="NUMERIC">                                                                                  +
- </xsd:simpleType>                                                                                                +
-                                                                                                                  +
- <xsd:simpleType name="SMALLINT">                                                                                 +
-   <xsd:restriction base="xsd:short">                                                                             +
-     <xsd:maxInclusive value="32767"/>                                                                            +
-     <xsd:minInclusive value="-32768"/>                                                                           +
-   </xsd:restriction>                                                                                             +
- </xsd:simpleType>                                                                                                +
-                                                                                                                  +
- <xsd:simpleType name="BIGINT">                                                                                   +
-   <xsd:restriction base="xsd:long">                                                                              +
-     <xsd:maxInclusive value="9223372036854775807"/>                                                              +
-     <xsd:minInclusive value="-9223372036854775808"/>                                                             +
-   </xsd:restriction>                                                                                             +
- </xsd:simpleType>                                                                                                +
-                                                                                                                  +
- <xsd:simpleType name="REAL">                                                                                     +
-   <xsd:restriction base="xsd:float"></xsd:restriction>                                                           +
- </xsd:simpleType>                                                                                                +
-                                                                                                                  +
- <xsd:simpleType name="TIME">                                                                                     +
-   <xsd:restriction base="xsd:time">                                                                              +
-     <xsd:pattern value="\p{Nd}{2}:\p{Nd}{2}:\p{Nd}{2}(.\p{Nd}+)?"/>                                              +
-   </xsd:restriction>                                                                                             +
- </xsd:simpleType>                                                                                                +
-                                                                                                                  +
- <xsd:simpleType name="TIMESTAMP">                                                                                +
-   <xsd:restriction base="xsd:dateTime">                                                                          +
-     <xsd:pattern value="\p{Nd}{4}-\p{Nd}{2}-\p{Nd}{2}T\p{Nd}{2}:\p{Nd}{2}:\p{Nd}{2}(.\p{Nd}+)?"/>                +
-   </xsd:restriction>                                                                                             +
- </xsd:simpleType>                                                                                                +
-                                                                                                                  +
- <xsd:simpleType name="DATE">                                                                                     +
-   <xsd:restriction base="xsd:date">                                                                              +
-     <xsd:pattern value="\p{Nd}{4}-\p{Nd}{2}-\p{Nd}{2}"/>                                                         +
-   </xsd:restriction>                                                                                             +
- </xsd:simpleType>                                                                                                +
-                                                                                                                  +
- <xsd:complexType mixed="true">                                                                                   +
-   <xsd:sequence>                                                                                                 +
-     <xsd:any name="element" minOccurs="0" maxOccurs="unbounded" processContents="skip"/>                         +
-   </xsd:sequence>                                                                                                +
- </xsd:complexType>                                                                                               +
-                                                                                                                  +
- <xsd:simpleType name="Domain.regression.public.testxmldomain">                                                   +
-   <xsd:restriction base="VARCHAR"/>                                                                              +
- </xsd:simpleType>                                                                                                +
-                                                                                                                  +
- <xsd:simpleType name="BOOLEAN">                                                                                  +
-   <xsd:restriction base="xsd:boolean"></xsd:restriction>                                                         +
- </xsd:simpleType>                                                                                                +
-                                                                                                                  +
- <xsd:simpleType name="UDT.regression.pg_catalog.bytea">                                                          +
-   <xsd:restriction base="xsd:base64Binary">                                                                      +
-   </xsd:restriction>                                                                                             +
- </xsd:simpleType>                                                                                                +
-                                                                                                                  +
- <xsd:complexType name="SchemaType.regression.testxmlschema">                                                     +
-   <xsd:sequence>                                                                                                 +
-     <xsd:element name="test1" type="RowType.regression.testxmlschema.test1" minOccurs="0" maxOccurs="unbounded"/>+
-     <xsd:element name="test2" type="RowType.regression.testxmlschema.test2" minOccurs="0" maxOccurs="unbounded"/>+
-   </xsd:sequence>                                                                                                +
- </xsd:complexType>                                                                                               +
-                                                                                                                  +
- <xsd:element name="testxmlschema" type="SchemaType.regression.testxmlschema"/>                                   +
-                                                                                                                  +
+                                                    schema_to_xmlschema                                                     
+----------------------------------------------------------------------------------------------------------------------------
+ <xsd:schema                                                                                                               +
+     xmlns:xsd="http://www.w3.org/2001/XMLSchema">                                                                         +
+                                                                                                                           +
+ <xsd:simpleType name="INTEGER">                                                                                           +
+   <xsd:restriction base="xsd:int">                                                                                        +
+     <xsd:maxInclusive value="2147483647"/>                                                                                +
+     <xsd:minInclusive value="-2147483648"/>                                                                               +
+   </xsd:restriction>                                                                                                      +
+ </xsd:simpleType>                                                                                                         +
+                                                                                                                           +
+ <xsd:simpleType name="UDT.regression.pg_catalog.text">                                                                    +
+   <xsd:restriction base="xsd:string">                                                                                     +
+   </xsd:restriction>                                                                                                      +
+ </xsd:simpleType>                                                                                                         +
+                                                                                                                           +
+ <xsd:simpleType name="VARCHAR">                                                                                           +
+   <xsd:restriction base="xsd:string">                                                                                     +
+   </xsd:restriction>                                                                                                      +
+ </xsd:simpleType>                                                                                                         +
+                                                                                                                           +
+ <xsd:simpleType name="CHAR">                                                                                              +
+   <xsd:restriction base="xsd:string">                                                                                     +
+   </xsd:restriction>                                                                                                      +
+ </xsd:simpleType>                                                                                                         +
+                                                                                                                           +
+ <xsd:simpleType name="NUMERIC">                                                                                           +
+ </xsd:simpleType>                                                                                                         +
+                                                                                                                           +
+ <xsd:simpleType name="SMALLINT">                                                                                          +
+   <xsd:restriction base="xsd:short">                                                                                      +
+     <xsd:maxInclusive value="32767"/>                                                                                     +
+     <xsd:minInclusive value="-32768"/>                                                                                    +
+   </xsd:restriction>                                                                                                      +
+ </xsd:simpleType>                                                                                                         +
+                                                                                                                           +
+ <xsd:simpleType name="BIGINT">                                                                                            +
+   <xsd:restriction base="xsd:long">                                                                                       +
+     <xsd:maxInclusive value="9223372036854775807"/>                                                                       +
+     <xsd:minInclusive value="-9223372036854775808"/>                                                                      +
+   </xsd:restriction>                                                                                                      +
+ </xsd:simpleType>                                                                                                         +
+                                                                                                                           +
+ <xsd:simpleType name="REAL">                                                                                              +
+   <xsd:restriction base="xsd:float"></xsd:restriction>                                                                    +
+ </xsd:simpleType>                                                                                                         +
+                                                                                                                           +
+ <xsd:simpleType name="TIME">                                                                                              +
+   <xsd:restriction base="xsd:time">                                                                                       +
+     <xsd:pattern value="\p{Nd}{2}:\p{Nd}{2}:\p{Nd}{2}(.\p{Nd}+)?"/>                                                       +
+   </xsd:restriction>                                                                                                      +
+ </xsd:simpleType>                                                                                                         +
+                                                                                                                           +
+ <xsd:simpleType name="TIME_WTZ">                                                                                          +
+   <xsd:restriction base="xsd:time">                                                                                       +
+     <xsd:pattern value="\p{Nd}{2}:\p{Nd}{2}:\p{Nd}{2}(.\p{Nd}+)?(\+|-)\p{Nd}{2}:\p{Nd}{2}"/>                              +
+   </xsd:restriction>                                                                                                      +
+ </xsd:simpleType>                                                                                                         +
+                                                                                                                           +
+ <xsd:simpleType name="TIMESTAMP">                                                                                         +
+   <xsd:restriction base="xsd:dateTime">                                                                                   +
+     <xsd:pattern value="\p{Nd}{4}-\p{Nd}{2}-\p{Nd}{2}T\p{Nd}{2}:\p{Nd}{2}:\p{Nd}{2}(.\p{Nd}+)?"/>                         +
+   </xsd:restriction>                                                                                                      +
+ </xsd:simpleType>                                                                                                         +
+                                                                                                                           +
+ <xsd:simpleType name="TIMESTAMP_WTZ">                                                                                     +
+   <xsd:restriction base="xsd:dateTime">                                                                                   +
+     <xsd:pattern value="\p{Nd}{4}-\p{Nd}{2}-\p{Nd}{2}T\p{Nd}{2}:\p{Nd}{2}:\p{Nd}{2}(.\p{Nd}+)?(\+|-)\p{Nd}{2}:\p{Nd}{2}"/>+
+   </xsd:restriction>                                                                                                      +
+ </xsd:simpleType>                                                                                                         +
+                                                                                                                           +
+ <xsd:simpleType name="DATE">                                                                                              +
+   <xsd:restriction base="xsd:date">                                                                                       +
+     <xsd:pattern value="\p{Nd}{4}-\p{Nd}{2}-\p{Nd}{2}"/>                                                                  +
+   </xsd:restriction>                                                                                                      +
+ </xsd:simpleType>                                                                                                         +
+                                                                                                                           +
+ <xsd:complexType mixed="true">                                                                                            +
+   <xsd:sequence>                                                                                                          +
+     <xsd:any name="element" minOccurs="0" maxOccurs="unbounded" processContents="skip"/>                                  +
+   </xsd:sequence>                                                                                                         +
+ </xsd:complexType>                                                                                                        +
+                                                                                                                           +
+ <xsd:simpleType name="Domain.regression.public.testxmldomain">                                                            +
+   <xsd:restriction base="VARCHAR"/>                                                                                       +
+ </xsd:simpleType>                                                                                                         +
+                                                                                                                           +
+ <xsd:simpleType name="BOOLEAN">                                                                                           +
+   <xsd:restriction base="xsd:boolean"></xsd:restriction>                                                                  +
+ </xsd:simpleType>                                                                                                         +
+                                                                                                                           +
+ <xsd:simpleType name="UDT.regression.pg_catalog.bytea">                                                                   +
+   <xsd:restriction base="xsd:base64Binary">                                                                               +
+   </xsd:restriction>                                                                                                      +
+ </xsd:simpleType>                                                                                                         +
+                                                                                                                           +
+ <xsd:complexType name="SchemaType.regression.testxmlschema">                                                              +
+   <xsd:sequence>                                                                                                          +
+     <xsd:element name="test1" type="RowType.regression.testxmlschema.test1" minOccurs="0" maxOccurs="unbounded"/>         +
+     <xsd:element name="test2" type="RowType.regression.testxmlschema.test2" minOccurs="0" maxOccurs="unbounded"/>         +
+   </xsd:sequence>                                                                                                         +
+ </xsd:complexType>                                                                                                        +
+                                                                                                                           +
+ <xsd:element name="testxmlschema" type="SchemaType.regression.testxmlschema"/>                                            +
+                                                                                                                           +
  </xsd:schema>
 (1 row)
 
 SELECT schema_to_xmlschema('testxmlschema', true, false, '');
-                                        schema_to_xmlschema                                        
----------------------------------------------------------------------------------------------------
- <xsd:schema                                                                                      +
-     xmlns:xsd="http://www.w3.org/2001/XMLSchema">                                                +
-                                                                                                  +
- <xsd:simpleType name="INTEGER">                                                                  +
-   <xsd:restriction base="xsd:int">                                                               +
-     <xsd:maxInclusive value="2147483647"/>                                                       +
-     <xsd:minInclusive value="-2147483648"/>                                                      +
-   </xsd:restriction>                                                                             +
- </xsd:simpleType>                                                                                +
-                                                                                                  +
- <xsd:simpleType name="UDT.regression.pg_catalog.text">                                           +
-   <xsd:restriction base="xsd:string">                                                            +
-   </xsd:restriction>                                                                             +
- </xsd:simpleType>                                                                                +
-                                                                                                  +
- <xsd:simpleType name="VARCHAR">                                                                  +
-   <xsd:restriction base="xsd:string">                                                            +
-   </xsd:restriction>                                                                             +
- </xsd:simpleType>                                                                                +
-                                                                                                  +
- <xsd:simpleType name="CHAR">                                                                     +
-   <xsd:restriction base="xsd:string">                                                            +
-   </xsd:restriction>                                                                             +
- </xsd:simpleType>                                                                                +
-                                                                                                  +
- <xsd:simpleType name="NUMERIC">                                                                  +
- </xsd:simpleType>                                                                                +
-                                                                                                  +
- <xsd:simpleType name="SMALLINT">                                                                 +
-   <xsd:restriction base="xsd:short">                                                             +
-     <xsd:maxInclusive value="32767"/>                                                            +
-     <xsd:minInclusive value="-32768"/>                                                           +
-   </xsd:restriction>                                                                             +
- </xsd:simpleType>                                                                                +
-                                                                                                  +
- <xsd:simpleType name="BIGINT">                                                                   +
-   <xsd:restriction base="xsd:long">                                                              +
-     <xsd:maxInclusive value="9223372036854775807"/>                                              +
-     <xsd:minInclusive value="-9223372036854775808"/>                                             +
-   </xsd:restriction>                                                                             +
- </xsd:simpleType>                                                                                +
-                                                                                                  +
- <xsd:simpleType name="REAL">                                                                     +
-   <xsd:restriction base="xsd:float"></xsd:restriction>                                           +
- </xsd:simpleType>                                                                                +
-                                                                                                  +
- <xsd:simpleType name="TIME">                                                                     +
-   <xsd:restriction base="xsd:time">                                                              +
-     <xsd:pattern value="\p{Nd}{2}:\p{Nd}{2}:\p{Nd}{2}(.\p{Nd}+)?"/>                              +
-   </xsd:restriction>                                                                             +
- </xsd:simpleType>                                                                                +
-                                                                                                  +
- <xsd:simpleType name="TIMESTAMP">                                                                +
-   <xsd:restriction base="xsd:dateTime">                                                          +
-     <xsd:pattern value="\p{Nd}{4}-\p{Nd}{2}-\p{Nd}{2}T\p{Nd}{2}:\p{Nd}{2}:\p{Nd}{2}(.\p{Nd}+)?"/>+
-   </xsd:restriction>                                                                             +
- </xsd:simpleType>                                                                                +
-                                                                                                  +
- <xsd:simpleType name="DATE">                                                                     +
-   <xsd:restriction base="xsd:date">                                                              +
-     <xsd:pattern value="\p{Nd}{4}-\p{Nd}{2}-\p{Nd}{2}"/>                                         +
-   </xsd:restriction>                                                                             +
- </xsd:simpleType>                                                                                +
-                                                                                                  +
- <xsd:complexType mixed="true">                                                                   +
-   <xsd:sequence>                                                                                 +
-     <xsd:any name="element" minOccurs="0" maxOccurs="unbounded" processContents="skip"/>         +
-   </xsd:sequence>                                                                                +
- </xsd:complexType>                                                                               +
-                                                                                                  +
- <xsd:simpleType name="Domain.regression.public.testxmldomain">                                   +
-   <xsd:restriction base="VARCHAR"/>                                                              +
- </xsd:simpleType>                                                                                +
-                                                                                                  +
- <xsd:simpleType name="BOOLEAN">                                                                  +
-   <xsd:restriction base="xsd:boolean"></xsd:restriction>                                         +
- </xsd:simpleType>                                                                                +
-                                                                                                  +
- <xsd:simpleType name="UDT.regression.pg_catalog.bytea">                                          +
-   <xsd:restriction base="xsd:base64Binary">                                                      +
-   </xsd:restriction>                                                                             +
- </xsd:simpleType>                                                                                +
-                                                                                                  +
- <xsd:complexType name="SchemaType.regression.testxmlschema">                                     +
-   <xsd:all>                                                                                      +
-     <xsd:element name="test1" type="TableType.regression.testxmlschema.test1"/>                  +
-     <xsd:element name="test2" type="TableType.regression.testxmlschema.test2"/>                  +
-   </xsd:all>                                                                                     +
- </xsd:complexType>                                                                               +
-                                                                                                  +
- <xsd:element name="testxmlschema" type="SchemaType.regression.testxmlschema"/>                   +
-                                                                                                  +
+                                                    schema_to_xmlschema                                                     
+----------------------------------------------------------------------------------------------------------------------------
+ <xsd:schema                                                                                                               +
+     xmlns:xsd="http://www.w3.org/2001/XMLSchema">                                                                         +
+                                                                                                                           +
+ <xsd:simpleType name="INTEGER">                                                                                           +
+   <xsd:restriction base="xsd:int">                                                                                        +
+     <xsd:maxInclusive value="2147483647"/>                                                                                +
+     <xsd:minInclusive value="-2147483648"/>                                                                               +
+   </xsd:restriction>                                                                                                      +
+ </xsd:simpleType>                                                                                                         +
+                                                                                                                           +
+ <xsd:simpleType name="UDT.regression.pg_catalog.text">                                                                    +
+   <xsd:restriction base="xsd:string">                                                                                     +
+   </xsd:restriction>                                                                                                      +
+ </xsd:simpleType>                                                                                                         +
+                                                                                                                           +
+ <xsd:simpleType name="VARCHAR">                                                                                           +
+   <xsd:restriction base="xsd:string">                                                                                     +
+   </xsd:restriction>                                                                                                      +
+ </xsd:simpleType>                                                                                                         +
+                                                                                                                           +
+ <xsd:simpleType name="CHAR">                                                                                              +
+   <xsd:restriction base="xsd:string">                                                                                     +
+   </xsd:restriction>                                                                                                      +
+ </xsd:simpleType>                                                                                                         +
+                                                                                                                           +
+ <xsd:simpleType name="NUMERIC">                                                                                           +
+ </xsd:simpleType>                                                                                                         +
+                                                                                                                           +
+ <xsd:simpleType name="SMALLINT">                                                                                          +
+   <xsd:restriction base="xsd:short">                                                                                      +
+     <xsd:maxInclusive value="32767"/>                                                                                     +
+     <xsd:minInclusive value="-32768"/>                                                                                    +
+   </xsd:restriction>                                                                                                      +
+ </xsd:simpleType>                                                                                                         +
+                                                                                                                           +
+ <xsd:simpleType name="BIGINT">                                                                                            +
+   <xsd:restriction base="xsd:long">                                                                                       +
+     <xsd:maxInclusive value="9223372036854775807"/>                                                                       +
+     <xsd:minInclusive value="-9223372036854775808"/>                                                                      +
+   </xsd:restriction>                                                                                                      +
+ </xsd:simpleType>                                                                                                         +
+                                                                                                                           +
+ <xsd:simpleType name="REAL">                                                                                              +
+   <xsd:restriction base="xsd:float"></xsd:restriction>                                                                    +
+ </xsd:simpleType>                                                                                                         +
+                                                                                                                           +
+ <xsd:simpleType name="TIME">                                                                                              +
+   <xsd:restriction base="xsd:time">                                                                                       +
+     <xsd:pattern value="\p{Nd}{2}:\p{Nd}{2}:\p{Nd}{2}(.\p{Nd}+)?"/>                                                       +
+   </xsd:restriction>                                                                                                      +
+ </xsd:simpleType>                                                                                                         +
+                                                                                                                           +
+ <xsd:simpleType name="TIME_WTZ">                                                                                          +
+   <xsd:restriction base="xsd:time">                                                                                       +
+     <xsd:pattern value="\p{Nd}{2}:\p{Nd}{2}:\p{Nd}{2}(.\p{Nd}+)?(\+|-)\p{Nd}{2}:\p{Nd}{2}"/>                              +
+   </xsd:restriction>                                                                                                      +
+ </xsd:simpleType>                                                                                                         +
+                                                                                                                           +
+ <xsd:simpleType name="TIMESTAMP">                                                                                         +
+   <xsd:restriction base="xsd:dateTime">                                                                                   +
+     <xsd:pattern value="\p{Nd}{4}-\p{Nd}{2}-\p{Nd}{2}T\p{Nd}{2}:\p{Nd}{2}:\p{Nd}{2}(.\p{Nd}+)?"/>                         +
+   </xsd:restriction>                                                                                                      +
+ </xsd:simpleType>                                                                                                         +
+                                                                                                                           +
+ <xsd:simpleType name="TIMESTAMP_WTZ">                                                                                     +
+   <xsd:restriction base="xsd:dateTime">                                                                                   +
+     <xsd:pattern value="\p{Nd}{4}-\p{Nd}{2}-\p{Nd}{2}T\p{Nd}{2}:\p{Nd}{2}:\p{Nd}{2}(.\p{Nd}+)?(\+|-)\p{Nd}{2}:\p{Nd}{2}"/>+
+   </xsd:restriction>                                                                                                      +
+ </xsd:simpleType>                                                                                                         +
+                                                                                                                           +
+ <xsd:simpleType name="DATE">                                                                                              +
+   <xsd:restriction base="xsd:date">                                                                                       +
+     <xsd:pattern value="\p{Nd}{4}-\p{Nd}{2}-\p{Nd}{2}"/>                                                                  +
+   </xsd:restriction>                                                                                                      +
+ </xsd:simpleType>                                                                                                         +
+                                                                                                                           +
+ <xsd:complexType mixed="true">                                                                                            +
+   <xsd:sequence>                                                                                                          +
+     <xsd:any name="element" minOccurs="0" maxOccurs="unbounded" processContents="skip"/>                                  +
+   </xsd:sequence>                                                                                                         +
+ </xsd:complexType>                                                                                                        +
+                                                                                                                           +
+ <xsd:simpleType name="Domain.regression.public.testxmldomain">                                                            +
+   <xsd:restriction base="VARCHAR"/>                                                                                       +
+ </xsd:simpleType>                                                                                                         +
+                                                                                                                           +
+ <xsd:simpleType name="BOOLEAN">                                                                                           +
+   <xsd:restriction base="xsd:boolean"></xsd:restriction>                                                                  +
+ </xsd:simpleType>                                                                                                         +
+                                                                                                                           +
+ <xsd:simpleType name="UDT.regression.pg_catalog.bytea">                                                                   +
+   <xsd:restriction base="xsd:base64Binary">                                                                               +
+   </xsd:restriction>                                                                                                      +
+ </xsd:simpleType>                                                                                                         +
+                                                                                                                           +
+ <xsd:complexType name="SchemaType.regression.testxmlschema">                                                              +
+   <xsd:all>                                                                                                               +
+     <xsd:element name="test1" type="TableType.regression.testxmlschema.test1"/>                                           +
+     <xsd:element name="test2" type="TableType.regression.testxmlschema.test2"/>                                           +
+   </xsd:all>                                                                                                              +
+ </xsd:complexType>                                                                                                        +
+                                                                                                                           +
+ <xsd:element name="testxmlschema" type="SchemaType.regression.testxmlschema"/>                                            +
+                                                                                                                           +
  </xsd:schema>
 (1 row)
 
 SELECT schema_to_xml_and_xmlschema('testxmlschema', true, true, 'foo');
-                                            schema_to_xml_and_xmlschema                                            
--------------------------------------------------------------------------------------------------------------------
- <testxmlschema xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="foo" xsi:schemaLocation="foo #">     +
-                                                                                                                  +
- <xsd:schema                                                                                                      +
-     xmlns:xsd="http://www.w3.org/2001/XMLSchema"                                                                 +
-     targetNamespace="foo"                                                                                        +
-     elementFormDefault="qualified">                                                                              +
-                                                                                                                  +
- <xsd:simpleType name="INTEGER">                                                                                  +
-   <xsd:restriction base="xsd:int">                                                                               +
-     <xsd:maxInclusive value="2147483647"/>                                                                       +
-     <xsd:minInclusive value="-2147483648"/>                                                                      +
-   </xsd:restriction>                                                                                             +
- </xsd:simpleType>                                                                                                +
-                                                                                                                  +
- <xsd:simpleType name="UDT.regression.pg_catalog.text">                                                           +
-   <xsd:restriction base="xsd:string">                                                                            +
-   </xsd:restriction>                                                                                             +
- </xsd:simpleType>                                                                                                +
-                                                                                                                  +
- <xsd:simpleType name="VARCHAR">                                                                                  +
-   <xsd:restriction base="xsd:string">                                                                            +
-   </xsd:restriction>                                                                                             +
- </xsd:simpleType>                                                                                                +
-                                                                                                                  +
- <xsd:simpleType name="CHAR">                                                                                     +
-   <xsd:restriction base="xsd:string">                                                                            +
-   </xsd:restriction>                                                                                             +
- </xsd:simpleType>                                                                                                +
-                                                                                                                  +
- <xsd:simpleType name="NUMERIC">                                                                                  +
- </xsd:simpleType>                                                                                                +
-                                                                                                                  +
- <xsd:simpleType name="SMALLINT">                                                                                 +
-   <xsd:restriction base="xsd:short">                                                                             +
-     <xsd:maxInclusive value="32767"/>                                                                            +
-     <xsd:minInclusive value="-32768"/>                                                                           +
-   </xsd:restriction>                                                                                             +
- </xsd:simpleType>                                                                                                +
-                                                                                                                  +
- <xsd:simpleType name="BIGINT">                                                                                   +
-   <xsd:restriction base="xsd:long">                                                                              +
-     <xsd:maxInclusive value="9223372036854775807"/>                                                              +
-     <xsd:minInclusive value="-9223372036854775808"/>                                                             +
-   </xsd:restriction>                                                                                             +
- </xsd:simpleType>                                                                                                +
-                                                                                                                  +
- <xsd:simpleType name="REAL">                                                                                     +
-   <xsd:restriction base="xsd:float"></xsd:restriction>                                                           +
- </xsd:simpleType>                                                                                                +
-                                                                                                                  +
- <xsd:simpleType name="TIME">                                                                                     +
-   <xsd:restriction base="xsd:time">                                                                              +
-     <xsd:pattern value="\p{Nd}{2}:\p{Nd}{2}:\p{Nd}{2}(.\p{Nd}+)?"/>                                              +
-   </xsd:restriction>                                                                                             +
- </xsd:simpleType>                                                                                                +
-                                                                                                                  +
- <xsd:simpleType name="TIMESTAMP">                                                                                +
-   <xsd:restriction base="xsd:dateTime">                                                                          +
-     <xsd:pattern value="\p{Nd}{4}-\p{Nd}{2}-\p{Nd}{2}T\p{Nd}{2}:\p{Nd}{2}:\p{Nd}{2}(.\p{Nd}+)?"/>                +
-   </xsd:restriction>                                                                                             +
- </xsd:simpleType>                                                                                                +
-                                                                                                                  +
- <xsd:simpleType name="DATE">                                                                                     +
-   <xsd:restriction base="xsd:date">                                                                              +
-     <xsd:pattern value="\p{Nd}{4}-\p{Nd}{2}-\p{Nd}{2}"/>                                                         +
-   </xsd:restriction>                                                                                             +
- </xsd:simpleType>                                                                                                +
-                                                                                                                  +
- <xsd:complexType mixed="true">                                                                                   +
-   <xsd:sequence>                                                                                                 +
-     <xsd:any name="element" minOccurs="0" maxOccurs="unbounded" processContents="skip"/>                         +
-   </xsd:sequence>                                                                                                +
- </xsd:complexType>                                                                                               +
-                                                                                                                  +
- <xsd:simpleType name="Domain.regression.public.testxmldomain">                                                   +
-   <xsd:restriction base="VARCHAR"/>                                                                              +
- </xsd:simpleType>                                                                                                +
-                                                                                                                  +
- <xsd:simpleType name="BOOLEAN">                                                                                  +
-   <xsd:restriction base="xsd:boolean"></xsd:restriction>                                                         +
- </xsd:simpleType>                                                                                                +
-                                                                                                                  +
- <xsd:simpleType name="UDT.regression.pg_catalog.bytea">                                                          +
-   <xsd:restriction base="xsd:base64Binary">                                                                      +
-   </xsd:restriction>                                                                                             +
- </xsd:simpleType>                                                                                                +
-                                                                                                                  +
- <xsd:complexType name="SchemaType.regression.testxmlschema">                                                     +
-   <xsd:sequence>                                                                                                 +
-     <xsd:element name="test1" type="RowType.regression.testxmlschema.test1" minOccurs="0" maxOccurs="unbounded"/>+
-     <xsd:element name="test2" type="RowType.regression.testxmlschema.test2" minOccurs="0" maxOccurs="unbounded"/>+
-   </xsd:sequence>                                                                                                +
- </xsd:complexType>                                                                                               +
-                                                                                                                  +
- <xsd:element name="testxmlschema" type="SchemaType.regression.testxmlschema"/>                                   +
-                                                                                                                  +
- </xsd:schema>                                                                                                    +
-                                                                                                                  +
- <test1>                                                                                                          +
-   <a>1</a>                                                                                                       +
-   <b>one</b>                                                                                                     +
- </test1>                                                                                                         +
-                                                                                                                  +
- <test1>                                                                                                          +
-   <a>2</a>                                                                                                       +
-   <b>two</b>                                                                                                     +
- </test1>                                                                                                         +
-                                                                                                                  +
- <test1>                                                                                                          +
-   <a>-1</a>                                                                                                      +
-   <b xsi:nil="true"/>                                                                                            +
- </test1>                                                                                                         +
-                                                                                                                  +
-                                                                                                                  +
- <test2>                                                                                                          +
-   <z>55</z>                                                                                                      +
-   <y>abc</y>                                                                                                     +
-   <x>def   </x>                                                                                                  +
-   <w>98.60</w>                                                                                                   +
-   <v>2</v>                                                                                                       +
-   <u>999</u>                                                                                                     +
-   <t>0</t>                                                                                                       +
-   <s>21:07:00</s>                                                                                                +
-   <r>2009-06-08T21:07:30</r>                                                                                     +
-   <q>2009-06-08</q>                                                                                              +
-   <p xsi:nil="true"/>                                                                                            +
-   <o>ABC</o>                                                                                                     +
-   <n>true</n>                                                                                                    +
-   <m>WFla</m>                                                                                                    +
- </test2>                                                                                                         +
-                                                                                                                  +
-                                                                                                                  +
- </testxmlschema>                                                                                                 +
+                                                schema_to_xml_and_xmlschema                                                 
+----------------------------------------------------------------------------------------------------------------------------
+ <testxmlschema xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="foo" xsi:schemaLocation="foo #">              +
+                                                                                                                           +
+ <xsd:schema                                                                                                               +
+     xmlns:xsd="http://www.w3.org/2001/XMLSchema"                                                                          +
+     targetNamespace="foo"                                                                                                 +
+     elementFormDefault="qualified">                                                                                       +
+                                                                                                                           +
+ <xsd:simpleType name="INTEGER">                                                                                           +
+   <xsd:restriction base="xsd:int">                                                                                        +
+     <xsd:maxInclusive value="2147483647"/>                                                                                +
+     <xsd:minInclusive value="-2147483648"/>                                                                               +
+   </xsd:restriction>                                                                                                      +
+ </xsd:simpleType>                                                                                                         +
+                                                                                                                           +
+ <xsd:simpleType name="UDT.regression.pg_catalog.text">                                                                    +
+   <xsd:restriction base="xsd:string">                                                                                     +
+   </xsd:restriction>                                                                                                      +
+ </xsd:simpleType>                                                                                                         +
+                                                                                                                           +
+ <xsd:simpleType name="VARCHAR">                                                                                           +
+   <xsd:restriction base="xsd:string">                                                                                     +
+   </xsd:restriction>                                                                                                      +
+ </xsd:simpleType>                                                                                                         +
+                                                                                                                           +
+ <xsd:simpleType name="CHAR">                                                                                              +
+   <xsd:restriction base="xsd:string">                                                                                     +
+   </xsd:restriction>                                                                                                      +
+ </xsd:simpleType>                                                                                                         +
+                                                                                                                           +
+ <xsd:simpleType name="NUMERIC">                                                                                           +
+ </xsd:simpleType>                                                                                                         +
+                                                                                                                           +
+ <xsd:simpleType name="SMALLINT">                                                                                          +
+   <xsd:restriction base="xsd:short">                                                                                      +
+     <xsd:maxInclusive value="32767"/>                                                                                     +
+     <xsd:minInclusive value="-32768"/>                                                                                    +
+   </xsd:restriction>                                                                                                      +
+ </xsd:simpleType>                                                                                                         +
+                                                                                                                           +
+ <xsd:simpleType name="BIGINT">                                                                                            +
+   <xsd:restriction base="xsd:long">                                                                                       +
+     <xsd:maxInclusive value="9223372036854775807"/>                                                                       +
+     <xsd:minInclusive value="-9223372036854775808"/>                                                                      +
+   </xsd:restriction>                                                                                                      +
+ </xsd:simpleType>                                                                                                         +
+                                                                                                                           +
+ <xsd:simpleType name="REAL">                                                                                              +
+   <xsd:restriction base="xsd:float"></xsd:restriction>                                                                    +
+ </xsd:simpleType>                                                                                                         +
+                                                                                                                           +
+ <xsd:simpleType name="TIME">                                                                                              +
+   <xsd:restriction base="xsd:time">                                                                                       +
+     <xsd:pattern value="\p{Nd}{2}:\p{Nd}{2}:\p{Nd}{2}(.\p{Nd}+)?"/>                                                       +
+   </xsd:restriction>                                                                                                      +
+ </xsd:simpleType>                                                                                                         +
+                                                                                                                           +
+ <xsd:simpleType name="TIME_WTZ">                                                                                          +
+   <xsd:restriction base="xsd:time">                                                                                       +
+     <xsd:pattern value="\p{Nd}{2}:\p{Nd}{2}:\p{Nd}{2}(.\p{Nd}+)?(\+|-)\p{Nd}{2}:\p{Nd}{2}"/>                              +
+   </xsd:restriction>                                                                                                      +
+ </xsd:simpleType>                                                                                                         +
+                                                                                                                           +
+ <xsd:simpleType name="TIMESTAMP">                                                                                         +
+   <xsd:restriction base="xsd:dateTime">                                                                                   +
+     <xsd:pattern value="\p{Nd}{4}-\p{Nd}{2}-\p{Nd}{2}T\p{Nd}{2}:\p{Nd}{2}:\p{Nd}{2}(.\p{Nd}+)?"/>                         +
+   </xsd:restriction>                                                                                                      +
+ </xsd:simpleType>                                                                                                         +
+                                                                                                                           +
+ <xsd:simpleType name="TIMESTAMP_WTZ">                                                                                     +
+   <xsd:restriction base="xsd:dateTime">                                                                                   +
+     <xsd:pattern value="\p{Nd}{4}-\p{Nd}{2}-\p{Nd}{2}T\p{Nd}{2}:\p{Nd}{2}:\p{Nd}{2}(.\p{Nd}+)?(\+|-)\p{Nd}{2}:\p{Nd}{2}"/>+
+   </xsd:restriction>                                                                                                      +
+ </xsd:simpleType>                                                                                                         +
+                                                                                                                           +
+ <xsd:simpleType name="DATE">                                                                                              +
+   <xsd:restriction base="xsd:date">                                                                                       +
+     <xsd:pattern value="\p{Nd}{4}-\p{Nd}{2}-\p{Nd}{2}"/>                                                                  +
+   </xsd:restriction>                                                                                                      +
+ </xsd:simpleType>                                                                                                         +
+                                                                                                                           +
+ <xsd:complexType mixed="true">                                                                                            +
+   <xsd:sequence>                                                                                                          +
+     <xsd:any name="element" minOccurs="0" maxOccurs="unbounded" processContents="skip"/>                                  +
+   </xsd:sequence>                                                                                                         +
+ </xsd:complexType>                                                                                                        +
+                                                                                                                           +
+ <xsd:simpleType name="Domain.regression.public.testxmldomain">                                                            +
+   <xsd:restriction base="VARCHAR"/>                                                                                       +
+ </xsd:simpleType>                                                                                                         +
+                                                                                                                           +
+ <xsd:simpleType name="BOOLEAN">                                                                                           +
+   <xsd:restriction base="xsd:boolean"></xsd:restriction>                                                                  +
+ </xsd:simpleType>                                                                                                         +
+                                                                                                                           +
+ <xsd:simpleType name="UDT.regression.pg_catalog.bytea">                                                                   +
+   <xsd:restriction base="xsd:base64Binary">                                                                               +
+   </xsd:restriction>                                                                                                      +
+ </xsd:simpleType>                                                                                                         +
+                                                                                                                           +
+ <xsd:complexType name="SchemaType.regression.testxmlschema">                                                              +
+   <xsd:sequence>                                                                                                          +
+     <xsd:element name="test1" type="RowType.regression.testxmlschema.test1" minOccurs="0" maxOccurs="unbounded"/>         +
+     <xsd:element name="test2" type="RowType.regression.testxmlschema.test2" minOccurs="0" maxOccurs="unbounded"/>         +
+   </xsd:sequence>                                                                                                         +
+ </xsd:complexType>                                                                                                        +
+                                                                                                                           +
+ <xsd:element name="testxmlschema" type="SchemaType.regression.testxmlschema"/>                                            +
+                                                                                                                           +
+ </xsd:schema>                                                                                                             +
+                                                                                                                           +
+ <test1>                                                                                                                   +
+   <a>1</a>                                                                                                                +
+   <b>one</b>                                                                                                              +
+ </test1>                                                                                                                  +
+                                                                                                                           +
+ <test1>                                                                                                                   +
+   <a>2</a>                                                                                                                +
+   <b>two</b>                                                                                                              +
+ </test1>                                                                                                                  +
+                                                                                                                           +
+ <test1>                                                                                                                   +
+   <a>-1</a>                                                                                                               +
+   <b xsi:nil="true"/>                                                                                                     +
+ </test1>                                                                                                                  +
+                                                                                                                           +
+                                                                                                                           +
+ <test2>                                                                                                                   +
+   <z>55</z>                                                                                                               +
+   <y>abc</y>                                                                                                              +
+   <x>def   </x>                                                                                                           +
+   <w>98.60</w>                                                                                                            +
+   <v>2</v>                                                                                                                +
+   <u>999</u>                                                                                                              +
+   <t>0</t>                                                                                                                +
+   <s>21:07:00</s>                                                                                                         +
+   <stz>21:11:00+05</stz>                                                                                                  +
+   <r>2009-06-08T21:07:30</r>                                                                                              +
+   <rtz>2009-06-08T21:07:30-07:00</rtz>                                                                                    +
+   <q>2009-06-08</q>                                                                                                       +
+   <p xsi:nil="true"/>                                                                                                     +
+   <o>ABC</o>                                                                                                              +
+   <n>true</n>                                                                                                             +
+   <m>WFla</m>                                                                                                             +
+ </test2>                                                                                                                  +
+                                                                                                                           +
+                                                                                                                           +
+ </testxmlschema>                                                                                                          +
  
 (1 row)
 
index f6dbf81666aa213d7df92dfab311c12fef0b712d..4504acd3778bc2698dbfe6006a384c19c50f7d86 100644 (file)
@@ -2,9 +2,15 @@ CREATE SCHEMA testxmlschema;
 CREATE TABLE testxmlschema.test1 (a int, b text);
 INSERT INTO testxmlschema.test1 VALUES (1, 'one'), (2, 'two'), (-1, null);
 CREATE DOMAIN testxmldomain AS varchar;
-CREATE TABLE testxmlschema.test2 (z int, y varchar(500), x char(6), w numeric(9,2), v smallint, u bigint, t real, s time, r timestamp, q date, p xml, o testxmldomain, n bool, m bytea, aaa text);
+CREATE TABLE testxmlschema.test2 (z int, y varchar(500), x char(6),
+    w numeric(9,2), v smallint, u bigint, t real,
+    s time, stz timetz, r timestamp, rtz timestamptz, q date,
+    p xml, o testxmldomain, n bool, m bytea, aaa text);
 ALTER TABLE testxmlschema.test2 DROP COLUMN aaa;
-INSERT INTO testxmlschema.test2 VALUES (55, 'abc', 'def', 98.6, 2, 999, 0, '21:07', '2009-06-08 21:07:30', '2009-06-08', NULL, 'ABC', true, 'XYZ');
+INSERT INTO testxmlschema.test2 VALUES (55, 'abc', 'def',
+    98.6, 2, 999, 0,
+    '21:07', '21:11 +05', '2009-06-08 21:07:30', '2009-06-08 21:07:30 -07', '2009-06-08',
+    NULL, 'ABC', true, 'XYZ');
 SELECT table_to_xml('testxmlschema.test1', false, false, '');
 ERROR:  unsupported XML feature
 DETAIL:  This functionality requires the server to be built with libxml support.
index fde1b9eb597f2d94d9122f5db237f4fb0f057c31..16582bf6abd8aa1667a050087134377b558b066b 100644 (file)
@@ -3,9 +3,15 @@ CREATE SCHEMA testxmlschema;
 CREATE TABLE testxmlschema.test1 (a int, b text);
 INSERT INTO testxmlschema.test1 VALUES (1, 'one'), (2, 'two'), (-1, null);
 CREATE DOMAIN testxmldomain AS varchar;
-CREATE TABLE testxmlschema.test2 (z int, y varchar(500), x char(6), w numeric(9,2), v smallint, u bigint, t real, s time, r timestamp, q date, p xml, o testxmldomain, n bool, m bytea, aaa text);
+CREATE TABLE testxmlschema.test2 (z int, y varchar(500), x char(6),
+    w numeric(9,2), v smallint, u bigint, t real,
+    s time, stz timetz, r timestamp, rtz timestamptz, q date,
+    p xml, o testxmldomain, n bool, m bytea, aaa text);
 ALTER TABLE testxmlschema.test2 DROP COLUMN aaa;
-INSERT INTO testxmlschema.test2 VALUES (55, 'abc', 'def', 98.6, 2, 999, 0, '21:07', '2009-06-08 21:07:30', '2009-06-08', NULL, 'ABC', true, 'XYZ');
+INSERT INTO testxmlschema.test2 VALUES (55, 'abc', 'def',
+    98.6, 2, 999, 0,
+    '21:07', '21:11 +05', '2009-06-08 21:07:30', '2009-06-08 21:07:30 -07', '2009-06-08',
+    NULL, 'ABC', true, 'XYZ');
 
 SELECT table_to_xml('testxmlschema.test1', false, false, '');
 SELECT table_to_xml('testxmlschema.test1', true, false, 'foo');