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

Kristian Waagan updated DERBY-4772:
-----------------------------------

    Attachment: derby-4772-1b-increase_max_len.diff

Attaching patch 1b.
It replaces CHAR with VARCHAR where there is no hard limit defined on the 
maximum length of the value, and it uses the maximum allowed length for the 
VARCHAR type.

It would be nice if someone with more knowledge in this area of the code could 
have a quick look and say if any of the changes should be discarded, because 
the value in question actually has a defined/known maximum length.
This patch should also address the second error mentioned in DERBY-4673.

Patch ready for review.

> Data truncation error with XPLAIN-functionality enabled
> -------------------------------------------------------
>
>                 Key: DERBY-4772
>                 URL: https://issues.apache.org/jira/browse/DERBY-4772
>             Project: Derby
>          Issue Type: Bug
>          Components: SQL
>    Affects Versions: 10.6.2.1, 10.7.1.0
>            Reporter: Kristian Waagan
>            Assignee: Kristian Waagan
>         Attachments: derby-4772-1a-increase_max_len.diff, 
> derby-4772-1b-increase_max_len.diff
>
>
> When running a modified version of lang.OrderByAndSortAvoidance I get the 
> following error:
> java.sql.SQLDataException: A truncation error was encountered trying to 
> shrink CHAR 'Thread[DRDAConnThread_3,5,derby.daemons]' to length 32.
>       at 
> org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(SQLExceptionFactory40.java:79)
>       at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Util.java:256)
>       at 
> org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(TransactionResourceImpl.java:391)
>       at 
> org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(TransactionResourceImpl.java:346)
>       at 
> org.apache.derby.impl.jdbc.EmbedConnection.handleException(EmbedConnection.java:2269)
>       at 
> org.apache.derby.impl.jdbc.ConnectionChild.handleException(ConnectionChild.java:81)
>       at 
> org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(EmbedStatement.java:1321)
>       at 
> org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(EmbedPreparedStatement.java:1673)
>       at 
> org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeUpdate(EmbedPreparedStatement.java:303)
>       at 
> org.apache.derby.impl.sql.execute.xplain.XPLAINSystemTableVisitor.addStmtDescriptorsToSystemCatalog(XPLAINSystemTableVisitor.java:390)
>       at 
> org.apache.derby.impl.sql.execute.xplain.XPLAINSystemTableVisitor.doXPLAIN(XPLAINSystemTableVisitor.java:317)
>       at 
> org.apache.derby.impl.sql.execute.NoPutResultSetImpl.close(NoPutResultSetImpl.java:179)
>       at 
> org.apache.derby.impl.sql.execute.SortResultSet.close(SortResultSet.java:467)
>       at 
> org.apache.derby.impl.jdbc.EmbedResultSet.close(EmbedResultSet.java:575)
>       at 
> org.apache.derby.impl.drda.DRDAResultSet.close(DRDAResultSet.java:338)
>       at 
> org.apache.derby.impl.drda.DRDAStatement.rsClose(DRDAStatement.java:995)
>       at 
> org.apache.derby.impl.drda.DRDAConnThread.doneData(DRDAConnThread.java:7446)
>       at 
> org.apache.derby.impl.drda.DRDAConnThread.writeFDODTA(DRDAConnThread.java:7026)
>       at 
> org.apache.derby.impl.drda.DRDAConnThread.writeQRYDTA(DRDAConnThread.java:6910)
>       at 
> org.apache.derby.impl.drda.DRDAConnThread.processCommands(DRDAConnThread.java:870)
>       at 
> org.apache.derby.impl.drda.DRDAConnThread.run(DRDAConnThread.java:294)
> Caused by: java.sql.SQLException: A truncation error was encountered trying 
> to shrink CHAR 'Thread[DRDAConnThread_3,5,derby.daemons]' to length 32.
>       at 
> org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(SQLExceptionFactory.java:45)
>       at 
> org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransportAcrossDRDA(SQLExceptionFactory40.java:119)
>       at 
> org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(SQLExceptionFactory40.java:70)
>       ... 20 more
> Caused by: ERROR 22001: A truncation error was encountered trying to shrink 
> CHAR 'Thread[DRDAConnThread_3,5,derby.daemons]' to length 32.
>       at 
> org.apache.derby.iapi.error.StandardException.newException(StandardException.java:343)
>       at 
> org.apache.derby.iapi.types.SQLChar.hasNonBlankChars(SQLChar.java:1767)
>       at org.apache.derby.iapi.types.SQLChar.normalize(SQLChar.java:1743)
>       at org.apache.derby.iapi.types.SQLChar.normalize(SQLChar.java:1695)
>       at 
> org.apache.derby.iapi.types.DataTypeDescriptor.normalize(DataTypeDescriptor.java:648)
>       at 
> org.apache.derby.impl.sql.execute.NormalizeResultSet.normalizeColumn(NormalizeResultSet.java:329)
>       at 
> org.apache.derby.impl.sql.execute.NormalizeResultSet.normalizeRow(NormalizeResultSet.java:373)
>       at 
> org.apache.derby.impl.sql.execute.NormalizeResultSet.getNextRowCore(NormalizeResultSet.java:188)
>       at 
> org.apache.derby.impl.sql.execute.DMLWriteResultSet.getNextRowCore(DMLWriteResultSet.java:127)
>       at 
> org.apache.derby.impl.sql.execute.InsertResultSet.open(InsertResultSet.java:504)
>       at 
> org.apache.derby.impl.sql.GenericPreparedStatement.executeStmt(GenericPreparedStatement.java:436)
>       at 
> org.apache.derby.impl.sql.GenericPreparedStatement.execute(GenericPreparedStatement.java:317)
>       at 
> org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(EmbedStatement.java:1232)
>       ... 14 more
> I suspect the error can be triggered easily in client/server, but for 
> convenience I'll attach the patch for the test where I see the issue.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to