Re: PostgreSQL vs SQL/XML Standards

From: Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com>
To: Chapman Flack <chap(at)anastigmatix(dot)net>
Cc: Markus Winand <markus(dot)winand(at)winand(dot)at>, Alvaro Herrera <alvherre(at)2ndquadrant(dot)com>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, PostgreSQL Hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: PostgreSQL vs SQL/XML Standards
Date: 2018-12-30 08:23:16
Message-ID: CAFj8pRDRrxyr8=2PEFxP_eZCRqJMU4Jpj0whJM9pX0V4Q4EQvw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

ne 30. 12. 2018 v 3:46 odesílatel Chapman Flack <chap(at)anastigmatix(dot)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
>

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Vik Fearing 2018-12-30 08:31:48 Re: Optimize constant MinMax expressions
Previous Message Pavel Stehule 2018-12-30 07:35:52 Re: plpgsql plugin - stmt_beg/end is not called for top level block of statements