[ 
https://issues.apache.org/jira/browse/DERBY-3870?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Knut Anders Hatlen updated DERBY-3870:
--------------------------------------

    Attachment: d3870-3a.stat
                d3870-3a.diff

I'm attaching a new followup patch (3a) which removes the SqlXmlExecutor class. 
By doing this, we avoid the allocation of one SqlXmlExecutor instance per row 
seen by an XML operator, and we reduce the amount of code. We still cache the 
SqlXmlUtil instance in the activation so that the XML queries only have to be 
compiled once per activation.

Since SqlXmlExecutor is just a thin wrapper around SqlXmlUtil and XMLDataType, 
the byte-code generation for the XML operator could be changed to invoke the 
methods directly on the XMLDataValue objects, passing the cached SqlXmlUtil 
instance as an argument. Apart from that, only small changes were needed 
(changing the order and type of arguments in some method signatures where 
SqlXmlExecutor and XMLDataValue differed, and adding some null handling 
previously performed by SqlXmlExecutor to the XMLPARSE implementation).

All the regression tests passed with the patch.

> Concurrent Inserts of rows with XML data results in an exception
> ----------------------------------------------------------------
>
>                 Key: DERBY-3870
>                 URL: https://issues.apache.org/jira/browse/DERBY-3870
>             Project: Derby
>          Issue Type: Bug
>          Components: SQL
>    Affects Versions: 10.4.1.3, 10.4.2.1, 10.5.2.0, 10.6.1.0
>         Environment: System: MS windows server 2003 standard edition service 
> pack 2. Derby is run as a server on port 1527.
>            Reporter: Royi Ronen
>            Assignee: Knut Anders Hatlen
>              Labels: derby_triage10_5_2
>             Fix For: 10.9.0.0
>
>         Attachments: Copy of derby.log, DerbyMultiInsertXmlException.zip, 
> d3870-1a.diff, d3870-1a.stat, d3870-2a.diff, d3870-3a.diff, d3870-3a.stat, 
> d3870-junit.diff
>
>
> We insert rows into a table using the following prepared statement (through 
> JDBC):
> INSERT INTO USER1.PSTORE values(?,?, XMLPARSE(document CAST (? AS CLOB) 
> preserve whitespace))
> where each of the ?'s are replaced with a string.
> One thread runs fine. Two or more result in the following exception: 
> org.apache.derby.client.am.SqlException: Java exception: 'FWK005 parse may 
> not be called while parsing.: org.xml.sax.SAXException'.
>       at org.apache.derby.client.am.SqlException.<init>(Unknown Source)
>       at org.apache.derby.client.am.SqlException.<init>(Unknown Source)
> We believe that this comes from the dBuilder.parse(InputSource) method.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to