[ http://issues.apache.org/jira/browse/DERBY-688?page=comments#action_12428837 ] A B commented on DERBY-688: ---------------------------
As I was writing up the documentation for the XML operators, I was also double-checking the features to make sure they were all in-line with the SQL/XML[2006] specification. After some searching around I've realized that there are two ways in which the current XML operators are not in line with the spec: 1. Currently one can use XMLQUERY to retrieve a single element node from an XML value and then insert that element directly into another Derby XML column. However, SQL/XML spec says that a column of type XML(DOCUMENT)--which is what Derby's columns are--can only store actual DOCUMENT nodes; element nodes cannot be implicitly "morphed" into document nodes. Instead, one must use the XMLDOCUMENT() operator, which is not yet implemented in Derby. So basically, I have to make changes to disallow this kind of insertion. 2. When serializing the results of an XMLQUERY operator, the current code doesn't strictly follow the SQL/XML specification, which dictates that the sequence must be "normalized" before it is serialized. The rules for normalization can be found here: http://www.w3.org/TR/xslt-xquery-serialization/#serdm So changes have to be made in SqlXmlUtil.serializeToString() to implement these rules. Thus, there are still two outstanding code-related tasks for DERBY-688: A. Fix SQLSTATEs: I have a patch ready, just haven't posted it yet. Will try to do it soon. B. Resolve two situations listed above w.r.t to following SQL/XML specifications. I think both of these things need to be completed for the 10.2 release in order to 1) make sure Derby is a standards-based database, per the charter, and 2) minimize likelihood for "Existing Application Impact" issues in subsequent releases (caused by having to change behavior or sqlstates). > Enhancements to XML functionality to move toward XPath/XQuery support... > ------------------------------------------------------------------------ > > Key: DERBY-688 > URL: http://issues.apache.org/jira/browse/DERBY-688 > Project: Derby > Issue Type: Improvement > Components: JDBC, SQL > Reporter: A B > Assigned To: A B > Priority: Minor > Attachments: d688_phase1_v1.patch, d688_phase1_v1.stat, > d688_phase1_v2.patch, d688_phase1_v3.patch, d688_phase2_v1_code.patch, > d688_phase2_v1_tests.patch, d688_phase2_v2_tests.patch, > d688_phase2_v3_tests.patch, d688_phase3_v1_code.patch, > d688_phase3_v1_tests.patch, d688_phase4_v1.patch, d688_phase4_v2.patch, > d688_phase5_v1.patch, derbyXMLSpec.html > > > As of DERBY-334, Derby has some very basic support for XML that consists of > an XML datatype and three operators (XMLPARSE, XMLSERIALIZE, and XMLEXISTS). > I would like to enhance this existing functionality and, by doing so, help to > move Derby incrementally toward a more usable and more complete XPath/XQuery > solution (with emphasis on "incrementally"). > I have attached to this issue a document describing the particular changes > that I am looking to make. At a high level, they consist of: > 1) Making it easier to use the XML operators and datatype from within JDBC > (ex. by implicit parsing/serialization of XML values). > 2) Adding a new operator, XMLQUERY, to allow a user to retrieve the results > of an XPath expression (instead of just determining whether or not the > expression evaluates to an empty sequence, which is what XMLEXISTS does). > 3) Making changes to the existing operators to line them up with the SQL/XML > 2005 specification, and also to take steps toward my eventual hope of having > support for XQuery (as opposed to just XPath) in Derby. > If anyone has time and interest enough to look at the document and provide > feedback, that'd be great... -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira