Details
-
Bug
-
Status: Closed
-
Critical
-
Resolution: Fixed
-
1.1.0
-
4 node cluster on CentOS
Description
We see a loss of precision for a window query over a view.
Average aggregate query over parquet input.
0: jdbc:drill:schema=dfs.tmp> SELECT AVG(col_int) OVER() average FROM `forViewCrn.parquet`; +--------------------+ | average | +--------------------+ | 3.033333333333333 | | 3.033333333333333 | | 3.033333333333333 | | 3.033333333333333 | | 3.033333333333333 | | 3.033333333333333 | | 3.033333333333333 | | 3.033333333333333 | | 3.033333333333333 | | 3.033333333333333 | | 3.033333333333333 | | 3.033333333333333 | | 3.033333333333333 | | 3.033333333333333 | | 3.033333333333333 | | 3.033333333333333 | | 3.033333333333333 | | 3.033333333333333 | | 3.033333333333333 | | 3.033333333333333 | | 3.033333333333333 | | 3.033333333333333 | | 3.033333333333333 | | 3.033333333333333 | | 3.033333333333333 | | 3.033333333333333 | | 3.033333333333333 | | 3.033333333333333 | | 3.033333333333333 | | 3.033333333333333 | +--------------------+ 30 rows selected (0.121 seconds)
The same query over a view that was created on the above parquet data. Note that in this case we loose the precision value after the point, which is incorrect.
0: jdbc:drill:schema=dfs.tmp> SELECT AVG(col_int) OVER() average FROM vwOnParq_wCst; +----------+ | average | +----------+ | 3 | | 3 | | 3 | | 3 | | 3 | | 3 | | 3 | | 3 | | 3 | | 3 | | 3 | | 3 | | 3 | | 3 | | 3 | | 3 | | 3 | | 3 | | 3 | | 3 | | 3 | | 3 | | 3 | | 3 | | 3 | | 3 | | 3 | | 3 | | 3 | | 3 | +----------+ 30 rows selected (0.165 seconds)
Aggregate AVG over original parquet file, with cast to INT.
0: jdbc:drill:schema=dfs.tmp> SELECT AVG(cast(col_int as INT)) OVER() average FROM `forViewCrn.parquet`;
+----------+
| average |
+----------+
| 3 |
| 3 |
| 3 |
| 3 |
| 3 |
| 3 |
| 3 |
| 3 |
| 3 |
| 3 |
| 3 |
| 3 |
| 3 |
| 3 |
| 3 |
| 3 |
| 3 |
| 3 |
| 3 |
| 3 |
| 3 |
| 3 |
| 3 |
| 3 |
| 3 |
| 3 |
| 3 |
| 3 |
| 3 |
| 3 |
+----------+
30 rows selected (0.133 seconds)