[
https://issues.apache.org/jira/browse/DERBY-2352?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Bryan Pendleton updated DERBY-2352:
-----------------------------------
Attachment: substringReturnsChar.diff
Attached is substringReturnsChar.diff, which modifies the substring, trim, and
similar functions in SQLChar so that they no longer always return a value of
type SQLVarchar, but instead return either SQLChar or SQLVarchar, depending on
what type of object they are called on.
That is, SQLChar.substring returns SQLChar, but SQLVarchar.substring returns
SQLVarchar.
With this change, the reproduction code passes.
Also, with this change, derbyall and suites.All are 100% pass.
I intend to follow this up with a more complete patch proposal, including
various new regression tests, to allow for a more complete review. In the
meantime, any feedback about the attached code change is most welcome.
> Assertion Failure with order by and group by expression
> -------------------------------------------------------
>
> Key: DERBY-2352
> URL: https://issues.apache.org/jira/browse/DERBY-2352
> Project: Derby
> Issue Type: Bug
> Components: SQL
> Affects Versions: 10.2.2.0, 10.3.1.4
> Environment: Any
> Reporter: Yip Ng
> Assignee: Bryan Pendleton
> Attachments: substringReturnsChar.diff
>
>
> Assertion failure with order by expression:
> ij> select substr('abc', 1) from t1 order by substr('abc', 1);
> ERROR XJ001: Java exception: 'ASSERT FAILED col1.getClass() (class
> org.apache.derby.iapi.types.SQLVarchar) expected to be the same as
> col2.getClass() (class org.apache.derby.iapi.types.SQLChar):
> org.apache.derby.shared.common.sanity.AssertFailure'.
> Stacktrace:
> org.apache.derby.shared.common.sanity.AssertFailure: ASSERT FAILED
> col1.getClass() (class org.apache.derby.iapi.types.SQLVarchar) expected to be
> the same as col2.getClass() (class org.apache.derby.iapi.types.SQLChar)
> at
> org.apache.derby.shared.common.sanity.SanityManager.THROWASSERT(SanityManager.java:149)
> at
> org.apache.derby.impl.store.access.sort.MergeSort.checkColumnTypes(MergeSort.java:472)
> at
> org.apache.derby.impl.store.access.sort.MergeInserter.insert(MergeInserter.java:106)
> at
> org.apache.derby.impl.sql.execute.SortResultSet.loadSorter(SortResultSet.java:318)
> at
> org.apache.derby.impl.sql.execute.SortResultSet.openCore(SortResultSet.java:269)
> at
> org.apache.derby.impl.sql.execute.ProjectRestrictResultSet.openCore(ProjectRestrictResultSet.java:169)
> at
> org.apache.derby.impl.sql.execute.BasicNoPutResultSetImpl.open(BasicNoPutResultSetImpl.java:260)
> at
> org.apache.derby.impl.sql.GenericPreparedStatement.execute(GenericPreparedStatement.java:358)
> at
> org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(EmbedStatement.java:1182)
> at
> org.apache.derby.impl.jdbc.EmbedStatement.execute(EmbedStatement.java:585)
> at
> org.apache.derby.impl.jdbc.EmbedStatement.execute(EmbedStatement.java:517)
> at org.apache.derby.impl.tools.ij.ij.executeImmediate(ij.java:321)
> at org.apache.derby.impl.tools.ij.utilMain.doCatch(utilMain.java:517)
> at
> org.apache.derby.impl.tools.ij.utilMain.runScriptGuts(utilMain.java:370)
> at org.apache.derby.impl.tools.ij.utilMain.go(utilMain.java:268)
> at org.apache.derby.impl.tools.ij.Main.go(Main.java:204)
> at org.apache.derby.impl.tools.ij.Main.mainCore(Main.java:170)
> at org.apache.derby.impl.tools.ij.Main14.main(Main14.java:56)
> at org.apache.derby.tools.ij.main(ij.java:71)
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.