Description
Currently Hive is inconsistent in dealing with strings involved in arithmetic operations. For instance:
hive> desc test; OK i int None b boolean None d double None s string None dec decimal(5,2) None Hive> explain select dec/s from test; ... STAGE PLANS: Stage: Stage-1 Map Reduce Alias -> Map Operator Tree: test TableScan alias: test Select Operator expressions: expr: (dec / s) type: decimal(65,30) outputColumnNames: _col0 hive> explain select dec*s from test; ... STAGE PLANS: Stage: Stage-1 Map Reduce Alias -> Map Operator Tree: test TableScan alias: test Select Operator expressions: expr: (dec * s) type: double
MySQL consistently treats string in arithmetic operations as double (not an exact numeric type) and derives the operator result type accordingly. Hive should also be consistent.