You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-dev@db.apache.org by "Rick Hillegas (JIRA)" <de...@db.apache.org> on 2005/11/09 01:28:20 UTC

[jira] Commented: (DERBY-688) Enhancements to XML functionality to move toward XPath/XQuery support...

    [ http://issues.apache.org/jira/browse/DERBY-688?page=comments#action_12357097 ] 

Rick Hillegas commented on DERBY-688:
-------------------------------------

Good spec. I have some initial comments on the Usability section:

The spec needs to be enriched by familiarity with JDBC 4.0, which is where the JDBC support for XML appears. To download draft 2 of the spec, see the following webpage: http://www.jcp.org/en/jsr/detail?id=221. For the accompanying javadoc, see http://download.java.net/jdk6/doc/api/index.html.

In a nutshell, JDBC 4.0 is the client api which ships with jdk1.6. We are building support for JDBC 4.0 into the 10.2 release of Derby. Key features of the JDBC 4.0 XML support include:

o the java.sql.Types.SQLXML type code
o the corresponding vendor-supplied implementation of the java.sql.SQLXML interface
o stream readers and writers for this datatype: javax.xml.stream.XMLStreamReader and javax.xml.stream.XMLStreamWriter
o PreparedStatement.setSQLXML() and ResultSet.getSQLXML()

Given this JDBC support, I think that we can improve on the Usability of the XML datatype. I agree that we should be able to select and insert directly from/into columns of this type. However, the compiler should not implicitly wrap these column references with XMLSERIALIZE and XMLPARSE. Instead, the following implementation makes sense to me:

The 10.2 server should allow clients to do the following:

o Create columns of type XML (as is done today)
o Select these columns without any wrapping
o Insert into these columns without any wrapping

The 10.2 Derby client running on jdk1.6 will support JDBC 4.0. In particular, it will provide PreparedStatement and ResultSet support for selecting and inserting java.sql.SQLXML values.

The other client/server combinations can play out as follows. In the following discussion, I use the term OldClient to mean:

- The DB2JCC client
- The 10.1 client
- A 10.2 client running on jdk1.3 (JDBC 2), jdk1.4 (JDBC 3), or jdk1.5 (JDBC 3)

o If any client attempts to directly insert/select an XML column in a 10.1 server, the server will simply raise an exception. That's what it does today.

o If an OldClient attempts to directly insert/select an XML column from a 10.2 server, the server will raise an error in the network layer because the XML datavalue cannot be transported to those less capable clients.

o However, any client can issue ResultSet.getString() and PreparedStatement.setString() on XML columns in a 10.2 server. This will result in the server coercing the XML datavalue to/from a string using XMLPARSE and XMLSERIALIZE.

> Enhancements to XML functionality to move toward XPath/XQuery support...
> ------------------------------------------------------------------------
>
>          Key: DERBY-688
>          URL: http://issues.apache.org/jira/browse/DERBY-688
>      Project: Derby
>         Type: Improvement
>   Components: JDBC, SQL
>     Reporter: A B
>     Assignee: A B
>     Priority: Minor
>  Attachments: 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