Gopal V created HIVE-14302:
------------------------------

             Summary: Tez: Optimized Hashtable can support DECIMAL keys of same 
precision
                 Key: HIVE-14302
                 URL: https://issues.apache.org/jira/browse/HIVE-14302
             Project: Hive
          Issue Type: Improvement
          Components: Tez
    Affects Versions: 2.2.0
            Reporter: Gopal V


Decimal support in the optimized hashtable was decided on the basis of the fact 
that Decimal(10,1) == Decimal(10, 2) when both contain "1.0" and "1.00".

However, the joins now don't have any issues with decimal precision because 
they cast to common.

{code}
create temporary table x (a decimal(10,2), b decimal(10,1)) stored as orc;
insert into x values (1.0, 1.0);

    > explain logical select count(1) from x, x x1 where x.a = x1.b;
OK  
LOGICAL PLAN:
$hdt$_0:$hdt$_0:x
  TableScan (TS_0)
    alias: x
    filterExpr: (a is not null and true) (type: boolean)
    Filter Operator (FIL_18)
      predicate: (a is not null and true) (type: boolean)
      Select Operator (SEL_2)
        expressions: a (type: decimal(10,2))
        outputColumnNames: _col0
        Reduce Output Operator (RS_6)
          key expressions: _col0 (type: decimal(11,2))
          sort order: +
          Map-reduce partition columns: _col0 (type: decimal(11,2))
          Join Operator (JOIN_8)
            condition map:
                 Inner Join 0 to 1
            keys:
              0 _col0 (type: decimal(11,2))
              1 _col0 (type: decimal(11,2))
            Group By Operator (GBY_11)
              aggregations: count(1)
              mode: hash
              outputColumnNames: _col0
{code}

See cast up to Decimal(11, 2) in the plan, which normalizes both sides of the 
join to be able to compare HiveDecimal as-is.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to