Derby
  1. Derby
  2. DERBY-1837

Select from a derived table does not return the aliased column names in some cases

    Details

    • Type: Bug Bug
    • Status: Open
    • Priority: Minor Minor
    • Resolution: Unresolved
    • Affects Version/s: 10.0.2.0, 10.0.2.1, 10.1.1.0, 10.1.2.1, 10.1.3.1
    • Fix Version/s: None
    • Component/s: Tools
    • Environment:
      Any
    • Urgency:
      Normal
    • Issue & fix info:
      Repro attached

      Description

      A select from a derived table does not return the aliased column names correctly if the selected column(s) are char(1). The column names
      show up as '&' in the following example:

      ij> select * from (values('a','a')) as a(c1,c2);
      &|&

      a|a

      1 row selected
      ij> select * from (values('a','aa')) as a(c1,c2);
      &|C2


      a|aa

      1 row selected
      ij> select * from (values('aaa','a')) as a(c1,c2);
      C1 |&


      aaa|a

      1 row selected
      ij> select * from (values(1,'a')) as a(c1,c2);
      C1 |&
      -------------
      1 |a

      1 row selected

        Activity

        Hide
        Daniel John Debrunner added a comment -

        This, I think, is a feature of ij, not SQL. Ij is basing its column width on the display size of the column, in the case one.
        ij then tries to fit the column name into the display size of the column, again one, indicating it is truncated with
        an '&' symbol. So in this case, there is only space for '&'.

        Maybe ij could have some minimum display size for a column, so that at least some of the column name was displayed.

        Show
        Daniel John Debrunner added a comment - This, I think, is a feature of ij, not SQL. Ij is basing its column width on the display size of the column, in the case one. ij then tries to fit the column name into the display size of the column, again one, indicating it is truncated with an '&' symbol. So in this case, there is only space for '&'. Maybe ij could have some minimum display size for a column, so that at least some of the column name was displayed.
        Hide
        Daniel John Debrunner added a comment -

        Very strange, the problem does only seem to be for derived tables:

        ij> create table t (c char(1), c1 char(1), cxxxxxxxxxxxxxx char(1));
        0 rows inserted/updated/deleted
        ij> select * from t;
        C |C1 |CXX&
        --------------

        0 rows selected
        ij> select * from (values('a','a')) as a(c1,c2);
        &|&

        a|a

        Show
        Daniel John Debrunner added a comment - Very strange, the problem does only seem to be for derived tables: ij> create table t (c char(1), c1 char(1), cxxxxxxxxxxxxxx char(1)); 0 rows inserted/updated/deleted ij> select * from t; C |C1 |CXX& -------------- 0 rows selected ij> select * from (values('a','a')) as a(c1,c2); &|& — a|a
        Hide
        Rajesh Kartha added a comment -

        I am positive now this an ij issue, if I create a simple jdbc test I am able to get the correct column names back.

        ResultSet rs=stmt.executeQuery("select * from (values('aaa','a')) as a(c1,c2)");
        ResultSetMetaData rsmd=rs.getMetaData();
        while(rs.next())

        { System.out.println(rsmd.getColumnName(1)+"\t"+rsmd.getColumnName(2)); System.out.println(rs.getString(1)+"\t"+rs.getString(2)); }
        System.out.println("====================================================");
        rs=stmt.executeQuery("select * from (values('a','a')) as a(c1,c2)");
        rsmd=rs.getMetaData();
        while(rs.next()){ System.out.println(rsmd.getColumnName(1)+"t"+rsmd.getColumnName(2)); System.out.println(rs.getString(1)+"t"+rs.getString(2)); }

        returns:

        C1 C2
        aaa a
        ====================================================
        C1 C2
        a a

        Show
        Rajesh Kartha added a comment - I am positive now this an ij issue, if I create a simple jdbc test I am able to get the correct column names back. ResultSet rs=stmt.executeQuery("select * from (values('aaa','a')) as a(c1,c2)"); ResultSetMetaData rsmd=rs.getMetaData(); while(rs.next()) { System.out.println(rsmd.getColumnName(1)+"\t"+rsmd.getColumnName(2)); System.out.println(rs.getString(1)+"\t"+rs.getString(2)); } System.out.println("===================================================="); rs=stmt.executeQuery("select * from (values('a','a')) as a(c1,c2)"); rsmd=rs.getMetaData(); while(rs.next()){ System.out.println(rsmd.getColumnName(1)+"t"+rsmd.getColumnName(2)); System.out.println(rs.getString(1)+"t"+rs.getString(2)); } returns: C1 C2 aaa a ==================================================== C1 C2 a a
        Hide
        Knut Anders Hatlen added a comment -

        Triaged for 10.5.2.

        Show
        Knut Anders Hatlen added a comment - Triaged for 10.5.2.

          People

          • Assignee:
            Unassigned
            Reporter:
            Rajesh Kartha
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:

              Development