[ http://issues.apache.org/jira/browse/DERBY-1767?page=all ]
Fernanda Pizzorno updated DERBY-1767:
-------------------------------------
Derby Info: [Patch Available]
The attached patch (derby-1767.diff) fixed the problem by replacing the quotes
in the schema/table/column/cursor names with two quotes when building the
position update, position delete and insert statements used by the updateRow(),
deleteRow() and insertRow() methods. I have also changed the insertRow() and
deleteRow() methods so that they call popStatementContext() in their finally
clauses.
I have successfully run derbyall with this patch. Can someone please review it?
> insertRow(), updateRow() and deleteRow() cannot handle table names and column
> names containing double quotes
> ------------------------------------------------------------------------------------------------------------
>
> Key: DERBY-1767
> URL: http://issues.apache.org/jira/browse/DERBY-1767
> Project: Derby
> Issue Type: Bug
> Components: JDBC
> Affects Versions: 10.1.2.1
> Reporter: Knut Anders Hatlen
> Assigned To: Fernanda Pizzorno
> Priority: Minor
> Attachments: derby-1767.diff, derby-1767.stat, QuotesInNames.java
>
>
> ResultSet.insertRow(), ResultSet.updateRow() and ResultSet.deleteRow() fail
> with syntax error if the table name or a column name contains a double quote
> character. The attached repro gives this stack trace:
> Exception in thread "main" java.sql.SQLSyntaxErrorException: Syntax error:
> Encountered "quoted" at line 1, column 24.
> at
> org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(SQLExceptionFactory.java:45)
> at
> org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransportAcrossDRDA(SQLExceptionFactory40.java:137)
> at
> org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(SQLExceptionFactory40.java:72)
> at
> org.apache.derby.impl.jdbc.Util.generateCsSQLException(Util.java:203)
> at
> org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(TransactionResourceImpl.java:380)
> at
> org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(TransactionResourceImpl.java:345)
> at
> org.apache.derby.impl.jdbc.EmbedConnection.handleException(EmbedConnection.java:1378)
> at
> org.apache.derby.impl.jdbc.ConnectionChild.handleException(ConnectionChild.java:81)
> at
> org.apache.derby.impl.jdbc.EmbedResultSet.closeOnTransactionError(EmbedResultSet.java:4342)
> at
> org.apache.derby.impl.jdbc.EmbedResultSet.insertRow(EmbedResultSet.java:3678)
> at QuotesInNames.main(QuotesInNames.java:15)
> Caused by: java.sql.SQLException: Syntax error: Encountered "quoted" at line
> 1, column 24.
> ... 11 more
--
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