ne 30. 12. 2018 v 3:46 odesÃlatel Chapman Flack <c...@anastigmatix.net> napsal:
> On 11/12/18 04:58, Pavel Stehule wrote: > > It is assigned to January commitfest. > > When I build this patch against master (4203842), it builds, but breaks > make check. The diffs seem only incidental (loss of some error context > output), but there are no make check errors building 4203842 unmodified, > so the patch has introduced them. Example: > > *** ../postgresql/src/test/regress/expected/xml.out Sat Dec 29 > xml19:58:41 2018 > --- src/test/regress/results/xml.out Sat Dec 29 19:59:11 2018 > *************** > *** 9,16 **** > LINE 1: INSERT INTO xmltest VALUES (3, '<wrong'); > ^ > DETAIL: line 1: Couldn't find end of Start Tag wrong line 1 > - <wrong > - ^ > Unfortunately, there is a different releases of libxml2 with different error reporting and it is hard (impossible) to prepare for all variants. :-/ I prepare xml.out for my FC29 (fresh libxml2) and for no support xml. Other I prepare by patching - and this error (in context) is expected. > === ABOUT THE DOCUMENTATION === > > While this patch fixes bugs in the embedding of XPath 1.0 into PostgreSQL, > and that is good, I still think there is an elephant in the room, namely > that XPath 1.0 isn't the right language to embed. Clearly, that can't be > fixed as long as we rely on libxml, but I think our documentation could > (should) do a better job of warning users of the surprises that result. > > My ideas for improving the documentation are not yet so finished as to > offer a patch, but here are some thoughts: > > Of the 13 mentions in func.sgml of XPath (not counting its appearances > in function and parameter names), only one specifically says XPath 1.0, > and it is buried down at functions-xml-processing, not somewhere common > to all of them, like the introduction to functions-xml. > > Really, all of our functions that refer to "XPath" mean XPath 1.0, > and because that version was essentially thrown away to produce the 2.0 > and later versions, and that happened a dozen years ago, the documentation > needs to make that clear. Users who have learned XQuery, or XPath in the > last dozen years, need to know this is something very different, to avoid > walking into the traps. > > I think: > > 1) Every reference to "XPath" or an "XPath expression" (that is the first > in the description of a function or parameter) should be spelled out as > "XPath 1.0". > > 2) There should be a section in one central place (clearly applying to > all of the XML functions), perhaps in the functions-xml introduction, > or a <footnote> to a paragraph there, or in an appendix (new section > under SQL Conformance?) that summarizes the gulf between XPath 1.0 > and the later, XQuery-compatible versions. There should be cross- > reference links to this section from the "XPath 1.0" mentions in > individual function descriptions. The section could be a condensation > of [1] (and perhaps contain a link to [1], if links out to the wiki > are allowed), and link to the W3C compatibility notes at [2] and [3]. > > 3) Currently, the description of XMLEXISTS notes that "the SQL standard > specifies ... the construct to take an XQuery expression ... but > PostgreSQL currently only supports XPath, which is a subset of XQuery". > The description of XMLTABLE does not have such a note, and needs one. > In both cases, the note should probably be nearer the top of the > description (for XMLEXISTS, it is currently at the bottom, after the > examples). > > 4) That note currently says "only supports XPath, which is a subset > of XQuery". That would be a fair claim if we meant XPath 2.0 > or later, but not XPath 1.0 (which was not a subset of any version > of XQuery, and has fundamental incompatibilities with it). The note, > for both XMLEXISTS and XMLTABLE, should simply say "only supports > XPath 1.0", with a link to the section summarizing the > incompatibilities. > > Those are my thoughts on how a patch to the documentation could be > organized. Do they seem reasonable? > I agree with more stronger detail description about difference between XPath, XPath2 and XQuery. Some like "The XPath 1.0 is ancestor of XPath 2.0, that is part of XQuery. ..." I don't think so link to wiki with any proposals is good idea. Documentation should to describe current state, not what can be at some future. Regards Pavel > -Chap > > > [1] > > https://wiki.postgresql.org/wiki/PostgreSQL_vs_SQL/XML_Standards#Related_to_version_of_XPath > [2] https://www.w3.org/TR/xpath20/#id-backwards-compatibility > [3] > > https://www.w3.org/TR/2010/REC-xpath-functions-20101214/#xpath1-compatibility >