Uploaded image for project: 'Phoenix'
  1. Phoenix
  2. PHOENIX-1362

Min/max aggregate query on CHAR and BINARY types always return null

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 4.1.0
    • Fix Version/s: 4.3.0, 3.3.0, 4.2.3, 3.2.3
    • Labels:
    • Environment:

      HBase 0.98.4
      RHEL 6.5

      Description

      • Create a table with CHAR type and insert a few strings that start with 0.
      • Select min()/max() on the column, you always get null value.
      0: jdbc:phoenix:isthbase01-mnds2-1-crd> create table TT(VAL1 integer not null, VAL2 char(2), val3 varchar, VAL4 varchar constraint PK primary key (VAL1));
      0: jdbc:phoenix:isthbase01-mnds2-1-crd> upsert into TT values (0, '00', '00', '0');
      0: jdbc:phoenix:isthbase01-mnds2-1-crd> upsert into TT values (1, '01', '01', '1');
      0: jdbc:phoenix:isthbase01-mnds2-1-crd> upsert into TT values (2, '02', '02', '2');
      0: jdbc:phoenix:isthbase01-mnds2-1-crd> select * from TT;
      +------------+------+------------+------------+
      |    VAL1    | VAL2 |    VAL3    |    VAL4    |
      +------------+------+------------+------------+
      | 0          | 00   | 00         | 0          |
      | 1          | 01   | 01         | 1          |
      | 2          | 02   | 02         | 2          |
      +------------+------+------------+------------+
      0: jdbc:phoenix:isthbase01-mnds2-1-crd> select min(VAL1), max(VAL1) from TT;
      +------------+------------+
      | MIN(VAL1)  | MAX(VAL1)  |
      +------------+------------+
      | 0          | 2          |
      +------------+------------+
      0: jdbc:phoenix:isthbase01-mnds2-1-crd> select min(VAL2), max(VAL2) from TT;
      +------------+------------+
      | MIN(VAL2)  | MAX(VAL2)  |
      +------------+------------+
      | null       | null       |
      +------------+------------+
      0: jdbc:phoenix:isthbase01-mnds2-1-crd> select min(VAL3), max(VAL3) from TT;
      +------------+------------+
      | MIN(VAL3)  | MAX(VAL3)  |
      +------------+------------+
      | 00         | 02         |
      +------------+------------+
      0: jdbc:phoenix:isthbase01-mnds2-1-crd> select min(VAL4), max(VAL4) from TT;
      +------------+------------+
      | MIN(VAL4)  | MAX(VAL4)  |
      +------------+------------+
      | 0          | 2          |
      +------------+------------+
      

      As you can see, the query on VAL2 which is of type CHAR(2) returns null, while the same exact values on VAL3 which is of type VARCHAR work as expected.

        Attachments

          Activity

            People

            • Assignee:
              dhacker1341 Dave Hacker
              Reporter:
              haridsv Hari Krishna Dara
            • Votes:
              0 Vote for this issue
              Watchers:
              7 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: