Fix XML Schema structure for char types without length (bug #3782)
authorPeter Eisentraut <peter_e@gmx.net>
Wed, 28 Nov 2007 14:01:51 +0000 (14:01 +0000)
committerPeter Eisentraut <peter_e@gmx.net>
Wed, 28 Nov 2007 14:01:51 +0000 (14:01 +0000)
src/backend/utils/adt/xml.c

index b3f51e51e6974826918163532b1fc6721aeaa2a6..bf8a4b6b048749458a533c5a0b6f26577c20b83d 100644 (file)
@@ -2984,12 +2984,14 @@ map_sql_type_to_xmlschema_type(Oid typeoid, int typmod)
                        case BPCHAROID:
                        case VARCHAROID:
                        case TEXTOID:
+                               appendStringInfo(&result,
+                                                                "  <xsd:restriction base=\"xsd:string\">\n");
                                if (typmod != -1)
                                        appendStringInfo(&result,
-                                                                 "  <xsd:restriction base=\"xsd:string\">\n"
-                                                                        "    <xsd:maxLength value=\"%d\"/>\n"
-                                                                        "  </xsd:restriction>\n",
+                                                                        "    <xsd:maxLength value=\"%d\"/>\n",
                                                                         typmod - VARHDRSZ);
+                               appendStringInfo(&result,
+                                                                "  </xsd:restriction>\n");
                                break;
 
                        case BYTEAOID:
@@ -2997,6 +2999,7 @@ map_sql_type_to_xmlschema_type(Oid typeoid, int typmod)
                                                                 "  <xsd:restriction base=\"xsd:%s\">\n"
                                                                 "  </xsd:restriction>\n",
                                xmlbinary == XMLBINARY_BASE64 ? "base64Binary" : "hexBinary");
+                               break;
 
                        case NUMERICOID:
                                if (typmod != -1)