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] Updated: (DERBY-1861) Column ordering ASSERT when combining column references and expressions in same ORDER BY
Date Sun, 18 Mar 2007 20:30:09 GMT

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

Bryan Pendleton updated DERBY-1861:

    Attachment: adjustOffsets_v2_moreJavaDoc.diff

OK, I changed my mind again :) In the process of bringing the patch
up to date with the current head of trunk, I decided to try and add some
more comments and JavaDoc and try to address Army's comment about
the two similar, but not identical, getOrderByColumn routines in

Attached is adjustOffsets_v2_moreJavaDoc.diff, which differs from the
original patch only by:
- it is up to date with the head of trunk
- I've added more JavaDoc comments to the two confusing routines
  in ResultColumnList, and
- I've renamed the two routines to getOrderByColumnToBind and
  findResultColumnForOrderBy to try to make their usage more clear
  (in addition to adding the JavaDoc)

Please let me know any comments or feedback, in particular whether
the modified routines are more clear now.

> Column ordering ASSERT when combining column references and expressions in same ORDER
> ----------------------------------------------------------------------------------------
>                 Key: DERBY-1861
>                 URL: https://issues.apache.org/jira/browse/DERBY-1861
>             Project: Derby
>          Issue Type: Bug
>          Components: SQL
>    Affects Versions:
>            Reporter: Bryan Pendleton
>         Assigned To: Bryan Pendleton
>            Priority: Minor
>         Attachments: adjustOffsets_v1.diff, adjustOffsets_v2_moreJavaDoc.diff, dataStructureNotes.html,
> An ORDER BY clause wihch combines both column references and expressions causes the
> sort engine to throw an ASSERT failure in sane builds.
> Here's a repro script:
> -bash-2.05b$ java org.apache.derby.tools.ij
> ij version 10.3
> ij> connect 'jdbc:derby:brydb;create=true';
> ij> create table t (a int, b int, c int, d int);
> 0 rows inserted/updated/deleted
> ij> insert into t values (1, 2, 3, 4);
> 1 row inserted/updated/deleted
> ij> select * from t order by a, b, c+2;
> ERROR XJ001: Java exception: 'ASSERT FAILED column ordering error: org.apache.derby.shared.common.sanity.AssertFailure'.
> As a first theory to check, I believe that when columns in the ORDER BY clause go through
"pullup" processing,
> they are generated into the select statement's ResultColumnList and then are later removed
at bind time because
> they are determined to duplicate the columns implicitly selected by the "*" column list.
But the expression "c+2" is not
> removed from the result list because it does not duplicate any existing column in the
table. During this processing,
> I think that the field "addedColumnOffset" in class OrderByColumn is not managed correctly
and ends up generating
> a bogus column position for the "c+2" column (it doesn't reflect that pulled-up columns
"a" and "b" have disappeared
> from the ResultColumnList), causing the sanity assertion at execution time.
> I stumbled across this problem while writing regression tests for DERBY-147, but the
problem occurs
> with or without the DERBY-147 fix, so I decided to log it as a separate problem.

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

View raw message