db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Bryan Pendleton (JIRA)" <j...@apache.org>
Subject [jira] Commented: (DERBY-2352) Assertion Failure with order by and group by expression
Date Fri, 12 Oct 2007 23:03:50 GMT

    [ https://issues.apache.org/jira/browse/DERBY-2352?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12534436
] 

Bryan Pendleton commented on DERBY-2352:
----------------------------------------

Here is the generated code for the "projection" method (e1) and the "rowAllocator" method
(e3)
for the "order by" variant of the select statement:

    public Object e1()
        throws StandardException, Exception
    {
        ConcatableDataValue concatabledatavalue = 
         getDataValueFactory().getCharDataValue("abc", null).
                  substring(getDataValueFactory().getDataValue(1, null), null, e3, 3);
        e3 = concatabledatavalue;
        e2.setColumn(1, (DataValueDescriptor)concatabledatavalue);
        ConcatableDataValue concatabledatavalue1 = 
             getDataValueFactory().getCharDataValue("abc", null).
                 substring(getDataValueFactory().getDataValue(1, null), null, e4, 3);
        e4 = concatabledatavalue1;
        e2.setColumn(2, (DataValueDescriptor)concatabledatavalue1);
        return e2;
    }

    public Object e2()
        throws StandardException
    {
        e5.setColumn(1, getDataValueFactory().getNullChar(null));
        e5.setColumn(2, getDataValueFactory().getNullChar(null));
        return e5;
    }

The projection method's call to getCharDataValue() constructs a SQLChar,
and SQLChar.substring() then returns a SQLVarchar.

But the rowAllocator's getNullChar() method constructs a SQLChar.

It is the mismatch between the SQLVarchar that is returned by substring,
and the SQLChar that is created by the rowAllocator's getNullChar, that
is causing the assertion to trip in the sorter.


> 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
>
> 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.


Mime
View raw message