Regression test for XML mapping functionality
authorPeter Eisentraut <peter_e@gmx.net>
Thu, 2 Jul 2009 07:03:18 +0000 (07:03 +0000)
committerPeter Eisentraut <peter_e@gmx.net>
Thu, 2 Jul 2009 07:03:18 +0000 (07:03 +0000)
I wrote this one while chasing down some bugs in the closing days of 8.4.  It
could be useful in the long run.  This area of the code had no test coverage
at all before.

src/test/regress/expected/xmlmap.out [new file with mode: 0644]
src/test/regress/expected/xmlmap_1.out [new file with mode: 0644]
src/test/regress/parallel_schedule
src/test/regress/serial_schedule
src/test/regress/sql/xmlmap.sql [new file with mode: 0644]

diff --git a/src/test/regress/expected/xmlmap.out b/src/test/regress/expected/xmlmap.out
new file mode 100644 (file)
index 0000000..c074761
--- /dev/null
@@ -0,0 +1,1202 @@
+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);
+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');
+SELECT table_to_xml('testxmlschema.test1', false, false, '');
+                         table_to_xml                          
+---------------------------------------------------------------
+ <test1 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <row>
+   <a>1</a>
+   <b>one</b>
+ </row>
+ <row>
+   <a>2</a>
+   <b>two</b>
+ </row>
+ <row>
+   <a>-1</a>
+ </row>
+ </test1>
+(1 row)
+
+SELECT table_to_xml('testxmlschema.test1', true, false, 'foo');
+                               table_to_xml                                
+---------------------------------------------------------------------------
+ <test1 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="foo">
+ <row>
+   <a>1</a>
+   <b>one</b>
+ </row>
+ <row>
+   <a>2</a>
+   <b>two</b>
+ </row>
+ <row>
+   <a>-1</a>
+   <b xsi:nil="true"/>
+ </row>
+ </test1>
+(1 row)
+
+SELECT table_to_xml('testxmlschema.test1', false, true, '');
+                         table_to_xml                          
+---------------------------------------------------------------
+ <test1 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+   <a>1</a>
+   <b>one</b>
+ </test1>
+ <test1 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+   <a>2</a>
+   <b>two</b>
+ </test1>
+ <test1 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+   <a>-1</a>
+ </test1>
+(1 row)
+
+SELECT table_to_xml('testxmlschema.test1', true, true, '');
+                         table_to_xml                          
+---------------------------------------------------------------
+ <test1 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+   <a>1</a>
+   <b>one</b>
+ </test1>
+ <test1 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+   <a>2</a>
+   <b>two</b>
+ </test1>
+ <test1 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+   <a>-1</a>
+   <b xsi:nil="true"/>
+ </test1>
+(1 row)
+
+SELECT table_to_xml('testxmlschema.test2', false, false, '');
+                         table_to_xml                          
+---------------------------------------------------------------
+ <test2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <row>
+   <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>
+   <o>ABC</o>
+   <n>true</n>
+   <m>WFla</m>
+ </row>
+ </test2>
+(1 row)
+
+SELECT table_to_xmlschema('testxmlschema.test1', 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="UDT.regression.pg_catalog.text">
+   <xsd:restriction base="xsd:string">
+   </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="RowType.regression.testxmlschema.test1">
+   <xsd:sequence>
+     <xsd:element name="a" type="INTEGER" minOccurs="0"></xsd:element>
+     <xsd:element name="b" type="UDT.regression.pg_catalog.text" minOccurs="0"></xsd:element>
+   </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="TableType.regression.testxmlschema.test1">
+   <xsd:sequence>
+     <xsd:element name="row" type="RowType.regression.testxmlschema.test1" minOccurs="0" maxOccurs="unbounded"/>
+   </xsd:sequence>
+ </xsd:complexType>
+ <xsd:element name="test1" type="TableType.regression.testxmlschema.test1"/>
+ </xsd:schema>
+(1 row)
+
+SELECT table_to_xmlschema('testxmlschema.test1', true, 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="UDT.regression.pg_catalog.text">
+   <xsd:restriction base="xsd:string">
+   </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="RowType.regression.testxmlschema.test1">
+   <xsd:sequence>
+     <xsd:element name="a" type="INTEGER" nillable="true"></xsd:element>
+     <xsd:element name="b" type="UDT.regression.pg_catalog.text" nillable="true"></xsd:element>
+   </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="TableType.regression.testxmlschema.test1">
+   <xsd:sequence>
+     <xsd:element name="row" type="RowType.regression.testxmlschema.test1" minOccurs="0" maxOccurs="unbounded"/>
+   </xsd:sequence>
+ </xsd:complexType>
+ <xsd:element name="test1" type="TableType.regression.testxmlschema.test1"/>
+ </xsd:schema>
+(1 row)
+
+SELECT table_to_xmlschema('testxmlschema.test1', false, true, 'foo');
+                                      table_to_xmlschema                                      
+----------------------------------------------------------------------------------------------
+ <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:complexType name="RowType.regression.testxmlschema.test1">
+   <xsd:sequence>
+     <xsd:element name="a" type="INTEGER" minOccurs="0"></xsd:element>
+     <xsd:element name="b" type="UDT.regression.pg_catalog.text" minOccurs="0"></xsd:element>
+   </xsd:sequence>
+ </xsd:complexType>
+ <xsd:element name="test1" type="RowType.regression.testxmlschema.test1"/>
+ </xsd:schema>
+(1 row)
+
+SELECT table_to_xmlschema('testxmlschema.test1', true, true, '');
+                                       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="UDT.regression.pg_catalog.text">
+   <xsd:restriction base="xsd:string">
+   </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="RowType.regression.testxmlschema.test1">
+   <xsd:sequence>
+     <xsd:element name="a" type="INTEGER" nillable="true"></xsd:element>
+     <xsd:element name="b" type="UDT.regression.pg_catalog.text" nillable="true"></xsd:element>
+   </xsd:sequence>
+ </xsd:complexType>
+ <xsd:element name="test1" type="RowType.regression.testxmlschema.test1"/>
+ </xsd:schema>
+(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"/>
+ </xsd:schema>
+(1 row)
+
+SELECT table_to_xml_and_xmlschema('testxmlschema.test1', false, false, '');
+                                           table_to_xml_and_xmlschema                                            
+-----------------------------------------------------------------------------------------------------------------
+ <test1 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="#">
+ <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:complexType name="RowType.regression.testxmlschema.test1">
+   <xsd:sequence>
+     <xsd:element name="a" type="INTEGER" minOccurs="0"></xsd:element>
+     <xsd:element name="b" type="UDT.regression.pg_catalog.text" minOccurs="0"></xsd:element>
+   </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="TableType.regression.testxmlschema.test1">
+   <xsd:sequence>
+     <xsd:element name="row" type="RowType.regression.testxmlschema.test1" minOccurs="0" maxOccurs="unbounded"/>
+   </xsd:sequence>
+ </xsd:complexType>
+ <xsd:element name="test1" type="TableType.regression.testxmlschema.test1"/>
+ </xsd:schema>
+ <row>
+   <a>1</a>
+   <b>one</b>
+ </row>
+ <row>
+   <a>2</a>
+   <b>two</b>
+ </row>
+ <row>
+   <a>-1</a>
+ </row>
+ </test1>
+(1 row)
+
+SELECT table_to_xml_and_xmlschema('testxmlschema.test1', true, false, '');
+                                           table_to_xml_and_xmlschema                                            
+-----------------------------------------------------------------------------------------------------------------
+ <test1 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="#">
+ <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:complexType name="RowType.regression.testxmlschema.test1">
+   <xsd:sequence>
+     <xsd:element name="a" type="INTEGER" nillable="true"></xsd:element>
+     <xsd:element name="b" type="UDT.regression.pg_catalog.text" nillable="true"></xsd:element>
+   </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="TableType.regression.testxmlschema.test1">
+   <xsd:sequence>
+     <xsd:element name="row" type="RowType.regression.testxmlschema.test1" minOccurs="0" maxOccurs="unbounded"/>
+   </xsd:sequence>
+ </xsd:complexType>
+ <xsd:element name="test1" type="TableType.regression.testxmlschema.test1"/>
+ </xsd:schema>
+ <row>
+   <a>1</a>
+   <b>one</b>
+ </row>
+ <row>
+   <a>2</a>
+   <b>two</b>
+ </row>
+ <row>
+   <a>-1</a>
+   <b xsi:nil="true"/>
+ </row>
+ </test1>
+(1 row)
+
+SELECT table_to_xml_and_xmlschema('testxmlschema.test1', false, true, '');
+                                  table_to_xml_and_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:complexType name="RowType.regression.testxmlschema.test1">
+   <xsd:sequence>
+     <xsd:element name="a" type="INTEGER" minOccurs="0"></xsd:element>
+     <xsd:element name="b" type="UDT.regression.pg_catalog.text" minOccurs="0"></xsd:element>
+   </xsd:sequence>
+ </xsd:complexType>
+ <xsd:element name="test1" type="RowType.regression.testxmlschema.test1"/>
+ </xsd:schema>
+ <test1 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+   <a>1</a>
+   <b>one</b>
+ </test1>
+ <test1 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+   <a>2</a>
+   <b>two</b>
+ </test1>
+ <test1 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+   <a>-1</a>
+ </test1>
+(1 row)
+
+SELECT table_to_xml_and_xmlschema('testxmlschema.test1', true, true, 'foo');
+                                   table_to_xml_and_xmlschema                                   
+------------------------------------------------------------------------------------------------
+ <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:complexType name="RowType.regression.testxmlschema.test1">
+   <xsd:sequence>
+     <xsd:element name="a" type="INTEGER" nillable="true"></xsd:element>
+     <xsd:element name="b" type="UDT.regression.pg_catalog.text" nillable="true"></xsd:element>
+   </xsd:sequence>
+ </xsd:complexType>
+ <xsd:element name="test1" type="RowType.regression.testxmlschema.test1"/>
+ </xsd:schema>
+ <test1 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="foo">
+   <a>1</a>
+   <b>one</b>
+ </test1>
+ <test1 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="foo">
+   <a>2</a>
+   <b>two</b>
+ </test1>
+ <test1 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="foo">
+   <a>-1</a>
+   <b xsi:nil="true"/>
+ </test1>
+(1 row)
+
+SELECT query_to_xml('SELECT * FROM testxmlschema.test1', false, false, '');
+                         query_to_xml                          
+---------------------------------------------------------------
+ <table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <row>
+   <a>1</a>
+   <b>one</b>
+ </row>
+ <row>
+   <a>2</a>
+   <b>two</b>
+ </row>
+ <row>
+   <a>-1</a>
+ </row>
+ </table>
+(1 row)
+
+SELECT query_to_xmlschema('SELECT * FROM testxmlschema.test1', false, false, '');
+                                      query_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:complexType name="RowType">
+   <xsd:sequence>
+     <xsd:element name="a" type="INTEGER" minOccurs="0"></xsd:element>
+     <xsd:element name="b" type="UDT.regression.pg_catalog.text" minOccurs="0"></xsd:element>
+   </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="TableType">
+   <xsd:sequence>
+     <xsd:element name="row" type="RowType" minOccurs="0" maxOccurs="unbounded"/>
+   </xsd:sequence>
+ </xsd:complexType>
+ <xsd:element name="table" type="TableType"/>
+ </xsd:schema>
+(1 row)
+
+SELECT query_to_xml_and_xmlschema('SELECT * FROM testxmlschema.test1', true, true, '');
+                                   query_to_xml_and_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:complexType name="RowType">
+   <xsd:sequence>
+     <xsd:element name="a" type="INTEGER" nillable="true"></xsd:element>
+     <xsd:element name="b" type="UDT.regression.pg_catalog.text" nillable="true"></xsd:element>
+   </xsd:sequence>
+ </xsd:complexType>
+ <xsd:element name="row" type="RowType"/>
+ </xsd:schema>
+ <row xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+   <a>1</a>
+   <b>one</b>
+ </row>
+ <row xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+   <a>2</a>
+   <b>two</b>
+ </row>
+ <row xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+   <a>-1</a>
+   <b xsi:nil="true"/>
+ </row>
+(1 row)
+
+DECLARE xc CURSOR WITH HOLD FOR SELECT * FROM testxmlschema.test1 ORDER BY 1, 2;
+SELECT cursor_to_xml('xc'::refcursor, 5, false, true, '');
+                        cursor_to_xml                        
+-------------------------------------------------------------
+ <row xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+   <a>-1</a>
+ </row>
+ <row xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+   <a>1</a>
+   <b>one</b>
+ </row>
+ <row xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+   <a>2</a>
+   <b>two</b>
+ </row>
+(1 row)
+
+MOVE FIRST IN xc;
+SELECT cursor_to_xml('xc'::refcursor, 5, true, false, '');
+ cursor_to_xml 
+---------------
+ <row>
+   <a>1</a>
+   <b>one</b>
+ </row>
+ <row>
+   <a>2</a>
+   <b>two</b>
+ </row>
+(1 row)
+
+SELECT cursor_to_xmlschema('xc'::refcursor, true, false, '');
+                                      cursor_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:complexType name="RowType">
+   <xsd:sequence>
+     <xsd:element name="a" type="INTEGER" nillable="true"></xsd:element>
+     <xsd:element name="b" type="UDT.regression.pg_catalog.text" nillable="true"></xsd:element>
+   </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="TableType">
+   <xsd:sequence>
+     <xsd:element name="row" type="RowType" minOccurs="0" maxOccurs="unbounded"/>
+   </xsd:sequence>
+ </xsd:complexType>
+ <xsd:element name="table" type="TableType"/>
+ </xsd:schema>
+(1 row)
+
+SELECT schema_to_xml('testxmlschema', false, true, '');
+                             schema_to_xml                             
+-----------------------------------------------------------------------
+ <testxmlschema xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <test1>
+   <a>1</a>
+   <b>one</b>
+ </test1>
+ <test1>
+   <a>2</a>
+   <b>two</b>
+ </test1>
+ <test1>
+   <a>-1</a>
+ </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>
+   <o>ABC</o>
+   <n>true</n>
+   <m>WFla</m>
+ </test2>
+ </testxmlschema>
+(1 row)
+
+SELECT schema_to_xml('testxmlschema', true, false, '');
+                             schema_to_xml                             
+-----------------------------------------------------------------------
+ <testxmlschema xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <test1>
+ <row>
+   <a>1</a>
+   <b>one</b>
+ </row>
+ <row>
+   <a>2</a>
+   <b>two</b>
+ </row>
+ <row>
+   <a>-1</a>
+   <b xsi:nil="true"/>
+ </row>
+ </test1>
+ <test2>
+ <row>
+   <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>
+ </row>
+ </test2>
+ </testxmlschema>
+(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"/>
+ </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"/>
+ </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>
+(1 row)
+
diff --git a/src/test/regress/expected/xmlmap_1.out b/src/test/regress/expected/xmlmap_1.out
new file mode 100644 (file)
index 0000000..932122f
--- /dev/null
@@ -0,0 +1,109 @@
+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);
+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');
+SELECT table_to_xml('testxmlschema.test1', false, false, '');
+ERROR:  unsupported XML feature
+DETAIL:  This functionality requires the server to be built with libxml support.
+HINT:  You need to rebuild PostgreSQL using --with-libxml.
+SELECT table_to_xml('testxmlschema.test1', true, false, 'foo');
+ERROR:  unsupported XML feature
+DETAIL:  This functionality requires the server to be built with libxml support.
+HINT:  You need to rebuild PostgreSQL using --with-libxml.
+SELECT table_to_xml('testxmlschema.test1', false, true, '');
+ERROR:  unsupported XML feature
+DETAIL:  This functionality requires the server to be built with libxml support.
+HINT:  You need to rebuild PostgreSQL using --with-libxml.
+SELECT table_to_xml('testxmlschema.test1', true, true, '');
+ERROR:  unsupported XML feature
+DETAIL:  This functionality requires the server to be built with libxml support.
+HINT:  You need to rebuild PostgreSQL using --with-libxml.
+SELECT table_to_xml('testxmlschema.test2', false, false, '');
+ERROR:  unsupported XML feature
+DETAIL:  This functionality requires the server to be built with libxml support.
+HINT:  You need to rebuild PostgreSQL using --with-libxml.
+SELECT table_to_xmlschema('testxmlschema.test1', false, false, '');
+ERROR:  unsupported XML feature
+DETAIL:  This functionality requires the server to be built with libxml support.
+HINT:  You need to rebuild PostgreSQL using --with-libxml.
+SELECT table_to_xmlschema('testxmlschema.test1', true, false, '');
+ERROR:  unsupported XML feature
+DETAIL:  This functionality requires the server to be built with libxml support.
+HINT:  You need to rebuild PostgreSQL using --with-libxml.
+SELECT table_to_xmlschema('testxmlschema.test1', false, true, 'foo');
+ERROR:  unsupported XML feature
+DETAIL:  This functionality requires the server to be built with libxml support.
+HINT:  You need to rebuild PostgreSQL using --with-libxml.
+SELECT table_to_xmlschema('testxmlschema.test1', true, true, '');
+ERROR:  unsupported XML feature
+DETAIL:  This functionality requires the server to be built with libxml support.
+HINT:  You need to rebuild PostgreSQL using --with-libxml.
+SELECT table_to_xmlschema('testxmlschema.test2', false, false, '');
+ERROR:  unsupported XML feature
+DETAIL:  This functionality requires the server to be built with libxml support.
+HINT:  You need to rebuild PostgreSQL using --with-libxml.
+SELECT table_to_xml_and_xmlschema('testxmlschema.test1', false, false, '');
+ERROR:  unsupported XML feature
+DETAIL:  This functionality requires the server to be built with libxml support.
+HINT:  You need to rebuild PostgreSQL using --with-libxml.
+SELECT table_to_xml_and_xmlschema('testxmlschema.test1', true, false, '');
+ERROR:  unsupported XML feature
+DETAIL:  This functionality requires the server to be built with libxml support.
+HINT:  You need to rebuild PostgreSQL using --with-libxml.
+SELECT table_to_xml_and_xmlschema('testxmlschema.test1', false, true, '');
+ERROR:  unsupported XML feature
+DETAIL:  This functionality requires the server to be built with libxml support.
+HINT:  You need to rebuild PostgreSQL using --with-libxml.
+SELECT table_to_xml_and_xmlschema('testxmlschema.test1', true, true, 'foo');
+ERROR:  unsupported XML feature
+DETAIL:  This functionality requires the server to be built with libxml support.
+HINT:  You need to rebuild PostgreSQL using --with-libxml.
+SELECT query_to_xml('SELECT * FROM testxmlschema.test1', false, false, '');
+ERROR:  unsupported XML feature
+DETAIL:  This functionality requires the server to be built with libxml support.
+HINT:  You need to rebuild PostgreSQL using --with-libxml.
+SELECT query_to_xmlschema('SELECT * FROM testxmlschema.test1', false, false, '');
+ERROR:  unsupported XML feature
+DETAIL:  This functionality requires the server to be built with libxml support.
+HINT:  You need to rebuild PostgreSQL using --with-libxml.
+SELECT query_to_xml_and_xmlschema('SELECT * FROM testxmlschema.test1', true, true, '');
+ERROR:  unsupported XML feature
+DETAIL:  This functionality requires the server to be built with libxml support.
+HINT:  You need to rebuild PostgreSQL using --with-libxml.
+DECLARE xc CURSOR WITH HOLD FOR SELECT * FROM testxmlschema.test1 ORDER BY 1, 2;
+SELECT cursor_to_xml('xc'::refcursor, 5, false, true, '');
+ERROR:  unsupported XML feature
+DETAIL:  This functionality requires the server to be built with libxml support.
+HINT:  You need to rebuild PostgreSQL using --with-libxml.
+MOVE FIRST IN xc;
+SELECT cursor_to_xml('xc'::refcursor, 5, true, false, '');
+ERROR:  unsupported XML feature
+DETAIL:  This functionality requires the server to be built with libxml support.
+HINT:  You need to rebuild PostgreSQL using --with-libxml.
+SELECT cursor_to_xmlschema('xc'::refcursor, true, false, '');
+ERROR:  unsupported XML feature
+DETAIL:  This functionality requires the server to be built with libxml support.
+HINT:  You need to rebuild PostgreSQL using --with-libxml.
+SELECT schema_to_xml('testxmlschema', false, true, '');
+ERROR:  unsupported XML feature
+DETAIL:  This functionality requires the server to be built with libxml support.
+HINT:  You need to rebuild PostgreSQL using --with-libxml.
+SELECT schema_to_xml('testxmlschema', true, false, '');
+ERROR:  unsupported XML feature
+DETAIL:  This functionality requires the server to be built with libxml support.
+HINT:  You need to rebuild PostgreSQL using --with-libxml.
+SELECT schema_to_xmlschema('testxmlschema', false, true, '');
+ERROR:  unsupported XML feature
+DETAIL:  This functionality requires the server to be built with libxml support.
+HINT:  You need to rebuild PostgreSQL using --with-libxml.
+SELECT schema_to_xmlschema('testxmlschema', true, false, '');
+ERROR:  unsupported XML feature
+DETAIL:  This functionality requires the server to be built with libxml support.
+HINT:  You need to rebuild PostgreSQL using --with-libxml.
+SELECT schema_to_xml_and_xmlschema('testxmlschema', true, true, 'foo');
+ERROR:  unsupported XML feature
+DETAIL:  This functionality requires the server to be built with libxml support.
+HINT:  You need to rebuild PostgreSQL using --with-libxml.
index 3b1d8439294cc75c4d0748cce6643698d032ed86..9e0a6046cf28a1aae5a6de2a564c805ec306ad61 100644 (file)
@@ -77,7 +77,7 @@ test: misc
 # ----------
 # Another group of parallel tests
 # ----------
-test: select_views portals_p2 rules foreign_key cluster dependency guc bitmapops combocid tsearch tsdicts foreign_data window
+test: select_views portals_p2 rules foreign_key cluster dependency guc bitmapops combocid tsearch tsdicts foreign_data window xmlmap
 
 # ----------
 # Another group of parallel tests
index b7984ed16340748d15834cdccf9dce5a168ffbf9..c13eb79a817b6e5d1418349d1bdbdfc0eb7f43a9 100644 (file)
@@ -100,6 +100,7 @@ test: tsearch
 test: tsdicts
 test: foreign_data
 test: window
+test: xmlmap
 test: plancache
 test: limit
 test: plpgsql
diff --git a/src/test/regress/sql/xmlmap.sql b/src/test/regress/sql/xmlmap.sql
new file mode 100644 (file)
index 0000000..df1f980
--- /dev/null
@@ -0,0 +1,41 @@
+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);
+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');
+
+SELECT table_to_xml('testxmlschema.test1', false, false, '');
+SELECT table_to_xml('testxmlschema.test1', true, false, 'foo');
+SELECT table_to_xml('testxmlschema.test1', false, true, '');
+SELECT table_to_xml('testxmlschema.test1', true, true, '');
+SELECT table_to_xml('testxmlschema.test2', false, false, '');
+
+SELECT table_to_xmlschema('testxmlschema.test1', false, false, '');
+SELECT table_to_xmlschema('testxmlschema.test1', true, false, '');
+SELECT table_to_xmlschema('testxmlschema.test1', false, true, 'foo');
+SELECT table_to_xmlschema('testxmlschema.test1', true, true, '');
+SELECT table_to_xmlschema('testxmlschema.test2', false, false, '');
+
+SELECT table_to_xml_and_xmlschema('testxmlschema.test1', false, false, '');
+SELECT table_to_xml_and_xmlschema('testxmlschema.test1', true, false, '');
+SELECT table_to_xml_and_xmlschema('testxmlschema.test1', false, true, '');
+SELECT table_to_xml_and_xmlschema('testxmlschema.test1', true, true, 'foo');
+
+SELECT query_to_xml('SELECT * FROM testxmlschema.test1', false, false, '');
+SELECT query_to_xmlschema('SELECT * FROM testxmlschema.test1', false, false, '');
+SELECT query_to_xml_and_xmlschema('SELECT * FROM testxmlschema.test1', true, true, '');
+
+DECLARE xc CURSOR WITH HOLD FOR SELECT * FROM testxmlschema.test1 ORDER BY 1, 2;
+SELECT cursor_to_xml('xc'::refcursor, 5, false, true, '');
+MOVE FIRST IN xc;
+SELECT cursor_to_xml('xc'::refcursor, 5, true, false, '');
+SELECT cursor_to_xmlschema('xc'::refcursor, true, false, '');
+
+SELECT schema_to_xml('testxmlschema', false, true, '');
+SELECT schema_to_xml('testxmlschema', true, false, '');
+SELECT schema_to_xmlschema('testxmlschema', false, true, '');
+SELECT schema_to_xmlschema('testxmlschema', true, false, '');
+SELECT schema_to_xml_and_xmlschema('testxmlschema', true, true, 'foo');