db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Knut Anders Hatlen (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (DERBY-3870) Concurrent Inserts of rows with XML data results in an exception
Date Fri, 03 Jun 2011 14:45:47 GMT

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

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

    Attachment: upgrade.diff

It looks like the problems are caused by the code that drops JDBC metadata queries and invalidates
stored prepared statement on upgrade. This code scans through SYS.SYSSTATEMENTS and reads
every column in every row of the table. When it comes across a statement that uses one of
the XML operators, it fails to deserialize the old plan because it contains SqlXmlUtil instances
in the savedObject field, and the SqlXmlUtil class doesn't implement Formatable anymore.

I think the fix is simple. See the attached patch upgrade.diff, which simply makes the upgrade
code skip the column that contains the compiled plan. Then the upgrade code is able to fetch
the stored statements from the system table and flag them as invalid.

I would like to add a test case for this in the upgrade tests, but it's a bit tricky since
the XML operators aren't always available, and the requirements vary between different versions
of Derby, so it's hard to determine whether or not the test case is expected to pass on the
platform. I'll give it a try, though.

> 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.8.1.3, 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, upgrade.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

Mime
View raw message