Return-Path: Delivered-To: apmail-db-derby-dev-archive@www.apache.org Received: (qmail 33754 invoked from network); 12 Oct 2007 23:04:11 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 12 Oct 2007 23:04:11 -0000 Received: (qmail 5809 invoked by uid 500); 12 Oct 2007 23:03:59 -0000 Delivered-To: apmail-db-derby-dev-archive@db.apache.org Received: (qmail 5772 invoked by uid 500); 12 Oct 2007 23:03:59 -0000 Mailing-List: contact derby-dev-help@db.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: Delivered-To: mailing list derby-dev@db.apache.org Received: (qmail 5759 invoked by uid 99); 12 Oct 2007 23:03:59 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 12 Oct 2007 16:03:59 -0700 X-ASF-Spam-Status: No, hits=-100.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO brutus.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 12 Oct 2007 23:04:10 +0000 Received: from brutus (localhost [127.0.0.1]) by brutus.apache.org (Postfix) with ESMTP id 9F3967141F1 for ; Fri, 12 Oct 2007 16:03:50 -0700 (PDT) Message-ID: <829395.1192230230629.JavaMail.jira@brutus> Date: Fri, 12 Oct 2007 16:03:50 -0700 (PDT) From: "Bryan Pendleton (JIRA)" To: derby-dev@db.apache.org Subject: [jira] Commented: (DERBY-2352) Assertion Failure with order by and group by expression In-Reply-To: <18667177.1171704365787.JavaMail.jira@brutus> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Virus-Checked: Checked by ClamAV on apache.org [ 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.